예제 #1
0
	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
예제 #2
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']))
예제 #3
0
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()
예제 #4
0
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()
예제 #5
0
파일: engine.py 프로젝트: godsonhyl/ssdb
    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
예제 #6
0
파일: eval.py 프로젝트: fruether/SLEProject
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)
예제 #8
0
파일: Test.py 프로젝트: clothbot/eda
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()

예제 #9
0
__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)

예제 #10
0
# 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()