예제 #1
0
def main(argv):
    input_stream = FileStream(argv[1])
    lexer = ExprLexer(input_stream)
    stream = CommonTokenStream(lexer)
    parser = ExprParser(stream)
    parser.buildParseTrees = True
    parser_tree = parser.prog()
    expressoes = ConcreteExprListener()
    ParseTreeWalker.DEFAULT.walk(expressoes, parser_tree)
    for expressao in expressoes.values:
        print('{} = {}'.format(expressao['expr'], expressao['value']))
예제 #2
0
__author__ = 'jszheng'

import sys
from antlr4 import *
from antlr4.InputStream import InputStream

from ExprLexer import ExprLexer
from ExprParser import ExprParser

if __name__ == '__main__':
    parser = ExprParser(None)
    parser.buildParseTrees = False
    parser.memory = {}  # how to add this to generated constructor?

    line = sys.stdin.readline()
    lineno = 1

    while line != '':
        line = line.strip()
        #print(lineno, line)

        istream = InputStream(line + "\n")
        lexer = ExprLexer(istream)
        lexer.line = lineno
        lexer.column = 0
        token_stream = CommonTokenStream(lexer)
        parser.setInputStream(token_stream)
        parser.stat()

        line = sys.stdin.readline()
        lineno += 1