Esempio n. 1
0
def test_interpreter():
    from lox.scanner import Scanner
    from lox.parser import Parser
    from lox.ast.ast_printer import ASTPrinter
    from lox.interpreter import Interpreter

    source = """ 1 + 999 """

    lox_scan = Scanner(source)

    tokens = lox_scan.scanTokens()

    print("Tokens:")
    for tok in tokens:
        print(tok)
    print("\n")

    lox_parser = Parser(tokens)
    result = lox_parser.parse()

    printer = ASTPrinter()

    print(printer.print(result))

    print(Interpreter().evaluate(result))
Esempio n. 2
0
def test_scanner():
    from lox.scanner import Scanner

    lox_scanner = Scanner("""
        var x = 12.1
        if else 
        for 
        // kdjkdkkd
        /
        {}
        ()
        print 
        "fias'' // "

        class
        @ 
        " student 
        
        // this is a comment
        (( )){} // grouping stuff
        !*+-/=<> <= == // operators
    """)

    token_list = lox_scanner.scanTokens()

    for tok in token_list:
        print(tok)
Esempio n. 3
0
def run(source):
    scan = Scanner(source)
    tokens = scan.scanTokens()

    # for token in tokens:
    #     print(token)

    pars = Parser(tokens)
    result = pars.parse()

    print(ASTPrinter().print(result))
    print(Interpreter().interpret(result))
Esempio n. 4
0
def test_parser():
    from lox.scanner import Scanner
    from lox.parser import Parser
    from lox.ast.ast_printer import ASTPrinter

    source = " 1 + 2 >= 133 + \" gggg \""

    lox_scan = Scanner(source)

    tokens = lox_scan.scanTokens()

    print("Tokens:")
    for tok in tokens:
        print(tok)
    print("\n")

    lox_parser = Parser(tokens)
    result = lox_parser.parse()

    printer = ASTPrinter()

    print(printer.print(result))