def test_list(self): parser = futhon_parser.FuthonParser() env = environment.GlobalEnvironment({}) ev = evaluator.Evaluator() self.assertEqual( "", "" )
def test_symbol(self): parser = futhon_parser.FuthonParser() self.assertEqual("-", parser.parse("-").name) self.assertEqual("+", parser.parse("+").name) self.assertEqual("*", parser.parse("*").name) self.assertEqual("/", parser.parse("/").name) self.assertEqual("->", parser.parse("->").name) self.assertEqual("-0a", parser.parse("-0a").name) self.assertEqual("-a", parser.parse("-a").name) self.assertEqual("-main", parser.parse("-main").name) self.assertEqual("-is-symbol?", parser.parse("-is-symbol?").name) self.assertEqual(".some-method", parser.parse(".some-method").name)
import futhon_parser import environment import evaluator import sys parser = futhon_parser.FuthonParser() evaluator = evaluator.Evaluator() global_env = environment.GlobalEnvironment({}) def __main__(): sys.stdout.write("-> ") sys.stdout.flush() for line in sys.stdin: try: ast = parser.parse(line) result = evaluator.eval(ast, global_env) print("# " + str(result)) sys.stdout.write("-> ") sys.stdout.flush() except Exception as e: print(e) sys.stdout.write("-> ") sys.stdout.flush() if __name__ == "__main__": __main__()
def test_decimal(self): parser = futhon_parser.FuthonParser() self.assertEqual(15, parser.parse("15")) self.assertEqual(-15, parser.parse("-15"))
def test_set(self): parser = futhon_parser.FuthonParser() self.assertIsInstance(parser.parse("#{1 2 3 4}"), set) self.assertEqual(parser.parse("#{1 2 3 4}"), set([1, 2, 3, 4])) self.assertEqual(parser.parse("#{1 2 3 4 4}"), set([1, 2, 3, 4]))
def test_hashmap(self): parser = futhon_parser.FuthonParser() self.assertIsInstance(parser.parse("{1 2 3 4}"), dict) self.assertEqual({1: 2, 3: 4}, parser.parse("{1 2 3 4}")) self.assertEqual({1: 2, 3: 4}, parser.parse("{1 2, 3 4}"))
def test_vector(self): parser = futhon_parser.FuthonParser() self.assertIsInstance(parser.parse("[1 2 3]"), datatypes.Vector)
def test_list(self): parser = futhon_parser.FuthonParser() self.assertIsInstance(parser.parse("(1 2 3)"), list) self.assertEqual(parser.parse("(1 2 3)"), [1, 2, 3])
def test_keyword(self): parser = futhon_parser.FuthonParser() self.assertEqual(":key", parser.parse(":key").name) self.assertEqual(":key-word", parser.parse(":key-word").name)
def test_boolean(self): parser = futhon_parser.FuthonParser() self.assertEqual(True, parser.parse("true")) self.assertEqual(False, parser.parse("false"))
def test_regex_string(self): parser = futhon_parser.FuthonParser() self.assertIsInstance(parser.parse("#\"\""), re._pattern_type) self.assertIsInstance(parser.parse("#\"hello\""), re._pattern_type)
def test_string(self): parser = futhon_parser.FuthonParser() self.assertEqual("hello", parser.parse("\"hello\"")) self.assertEqual("", parser.parse("\"\""))
def test_float(self): parser = futhon_parser.FuthonParser() self.assertEqual(15.0, parser.parse("15.0")) self.assertEqual(15.0, parser.parse("15.")) self.assertEqual(-15.0, parser.parse("-15.")) self.assertEqual(0.0, parser.parse("0.0"))
def test_decimal(self): parser = futhon_parser.FuthonParser() env = environment.GlobalEnvironment({}) ev = evaluator.Evaluator() self.assertEqual(15, ev.eval(parser.parse("15"), env))
def test_vector(self): parser = futhon_parser.FuthonParser() env = environment.GlobalEnvironment({}) ev = evaluator.Evaluator() self.assertEqual(datatypes.Vector([5, 4, 3]), ev.eval(parser.parse("[5, 4, 3]"), env))