Пример #1
0
 def test_list(self):
     parser = futhon_parser.FuthonParser()
     env = environment.GlobalEnvironment({})
     ev = evaluator.Evaluator()
     self.assertEqual(
         "", ""
     )
Пример #2
0
 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)
Пример #3
0
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__()
Пример #4
0
 def test_decimal(self):
     parser = futhon_parser.FuthonParser()
     self.assertEqual(15, parser.parse("15"))
     self.assertEqual(-15, parser.parse("-15"))
Пример #5
0
 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]))
Пример #6
0
 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}"))
Пример #7
0
 def test_vector(self):
     parser = futhon_parser.FuthonParser()
     self.assertIsInstance(parser.parse("[1 2 3]"), datatypes.Vector)
Пример #8
0
 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])
Пример #9
0
 def test_keyword(self):
     parser = futhon_parser.FuthonParser()
     self.assertEqual(":key", parser.parse(":key").name)
     self.assertEqual(":key-word", parser.parse(":key-word").name)
Пример #10
0
 def test_boolean(self):
     parser = futhon_parser.FuthonParser()
     self.assertEqual(True, parser.parse("true"))
     self.assertEqual(False, parser.parse("false"))
Пример #11
0
 def test_regex_string(self):
     parser = futhon_parser.FuthonParser()
     self.assertIsInstance(parser.parse("#\"\""),
                           re._pattern_type)
     self.assertIsInstance(parser.parse("#\"hello\""),
                           re._pattern_type)
Пример #12
0
 def test_string(self):
     parser = futhon_parser.FuthonParser()
     self.assertEqual("hello", parser.parse("\"hello\""))
     self.assertEqual("", parser.parse("\"\""))
Пример #13
0
 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"))
Пример #14
0
 def test_decimal(self):
     parser = futhon_parser.FuthonParser()
     env = environment.GlobalEnvironment({})
     ev = evaluator.Evaluator()
     self.assertEqual(15, ev.eval(parser.parse("15"), env))
Пример #15
0
 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))