def compile(self, srcfile, base_dir, output_dir): #fp = codecs.open(sys.argv[1], 'r', 'utf-8') fp = open(srcfile, 'r') char_stream = antlr3.ANTLRInputStream(fp) lexer = ExprLexer(char_stream) tokens = antlr3.CommonTokenStream(lexer) parser = ExprParser(tokens) r = parser.prog() # this is the root of the AST root = r.tree #print (root.toStringTree()) #print '-------' nodes = antlr3.tree.CommonTreeNodeStream(root) nodes.setTokenStream(tokens) from Eval import Eval eval = Eval(nodes) ####################################### head, tail = os.path.split(srcfile) if not os.path.exists(output_dir): os.mkdir(output_dir) if not os.path.exists(output_dir + '/__init__.py'): fp = open(output_dir + '/__init__.py', 'w') fp.close() dstfile = os.path.normpath(output_dir + '/' + tail.split('.')[0] + '.py') #print 'compile: %-30s=> %s' % (srcfile, dstfile) cpy = CpyBuilder(dstfile, base_dir, output_dir) eval.prog(cpy) return dstfile
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']))
def parse(): char_stream = antlr3.ANTLRInputStream(sys.stdin, encoding='utf-8') lexer = ExprLexer(char_stream) tokens = antlr3.CommonTokenStream(lexer) parser = ExprParser(tokens) r = parser.prog() root = r.tree nodes = antlr3.tree.CommonTreeNodeStream(root) walker = Eval.Eval(nodes) try: walker.prog() except ReturnValue, v: if isinstance(v.getValue(), str) or isinstance(v.getValue(), unicode): print v.getValue().encode('utf-8') else: print v.getValue()
def _compile(self, srcfile, base_dir, output_dir): head, tail = os.path.split(srcfile) dstfile = os.path.normpath(output_dir + "/" + tail.split(".")[0] + ".py") if os.path.exists(dstfile): src_mtime = os.path.getmtime(srcfile) dst_mtime = os.path.getmtime(dstfile) # print src_mtime, dst_mtime if src_mtime < dst_mtime: return dstfile # print 'compile: %-30s=> %s' % (srcfile, dstfile) # print 'compile: %-30s=> %s' % (srcfile[len(base_dir)+1:], dstfile[len(base_dir)+1:]) if not os.path.exists(output_dir): os.makedirs(output_dir) if not os.path.exists(output_dir + "/__init__.py"): fp = open(output_dir + "/__init__.py", "w") fp.close() # fp = codecs.open(sys.argv[1], 'r', 'utf-8') fp = open(srcfile, "r") char_stream = antlr3.ANTLRInputStream(fp) lexer = ExprLexer(char_stream) tokens = antlr3.CommonTokenStream(lexer) parser = ExprParser(tokens) r = parser.prog() # this is the root of the AST root = r.tree # print (root.toStringTree()) # print '-------' nodes = antlr3.tree.CommonTreeNodeStream(root) nodes.setTokenStream(tokens) from Eval import Eval eval = Eval(nodes) ####################################### cpy = CpyBuilder(dstfile, base_dir, output_dir) eval.prog(cpy) return dstfile
def main(argv): input = FileStream(argv[1]) lexer = ExprLexer(input) stream = CommonTokenStream(lexer) parser = ExprParser(stream) tree = parser.prog()
result = (-1) * result return result file_name = 'test.expr' input_stream = FileStream(file_name) print('input_stream:') print(input_stream) print() lexer = ExprLexer(input_stream) token_stream = CommonTokenStream(lexer) token_stream.fill() print('tokens:') for tk in token_stream.tokens: print(tk) print() parser = ExprParser(token_stream) tree = parser.prog() print('tree:') lisp_tree_str = tree.toStringTree(recog=parser) print(beautify_lisp_string(lisp_tree_str)) print() print('calc:') calc = Calc() result = calc.visit(tree) print() print('result:') print(result)
import sys import antlr3 import antlr3.tree from ExprLexer import ExprLexer from ExprParser import ExprParser from Eval import Eval char_stream = antlr3.ANTLRInputStream(sys.stdin) lexer = ExprLexer(char_stream) tokens = antlr3.CommonTokenStream(lexer) parser = ExprParser(tokens) r = parser.prog() # this is the root of the AST root = r.tree nodes = antlr3.tree.CommonTreeNodeStream(root) nodes.setTokenStream(tokens) eval = Eval(nodes) eval.prog()
__author__ = 'jszheng' import sys from antlr4 import * from antlr4.InputStream import InputStream from ExprLexer import ExprLexer from ExprParser import ExprParser if __name__ == '__main__': if len(sys.argv) > 1: input_stream = FileStream(sys.argv[1]) else: input_stream = InputStream(sys.stdin.readline()) lexer = ExprLexer(input_stream) token_stream = CommonTokenStream(lexer) parser = ExprParser(token_stream) tree = parser.prog() lisp_tree_str = tree.toStringTree(recog=parser) print(lisp_tree_str)
# vim:fileencoding=gbk import sys import antlr3 import antlr3.tree from ExprLexer import ExprLexer from ExprParser import ExprParser from TreeExpr import TreeExpr istream = antlr3.ANTLRInputStream(sys.stdin) lexer = ExprLexer(istream) parser = ExprParser(antlr3.CommonTokenStream(lexer)) nstream = antlr3.tree.CommonTreeNodeStream(parser.prog().getTree()) walker = TreeExpr(nstream) walker.prog()