def analisarCodigo(codigo, erroC): print " # pyCricketYacc -> analisarCodigo" # limpa lista de variaveis del variaveis[:] global RECOMPILE global PASSO global size global nomeprocs global erroComp size = 0 nomeprocs = {} # Para usar os analisadores juntos é necessário passar o léxico para dentro do parser. Lexer = pyLex.build() print " pyCricketLex.build() terminou" parser = yacc.yacc() print " yacc.yacc() terminou" print codigo.lower result = parser.parse(codigo.lower(), lexer=Lexer, tracking=True) if RECOMPILE: print "RECOMPILE" size = 0 PASSO = 2 result = parser.parse(codigo.lower(), lexer=Lexer, tracking=True) RECOMPILE = False PASSO = 1 print " parse.parse() gerou resultado '%s'" % result erroC.pop() erroC.insert(0, erroComp) return result
def analisarCodigo(codigo, errMsgFunction=None): print " # pyYacc -> analisarCodigo" #limpa lista de variaveis del variaveis[:] global RECOMPILE global size global nomeprocs global src_code global errMsgFunc errMsgFunc = errMsgFunction src_code = codigo print src_code size = 0 nomeprocs = {} #Para usar os analisadores juntos é necessário passar o léxico para dentro do parser. Lexer = pyLex.build(optimize=1, debug=0) print " pyLex.build() ended" parser = yacc.yacc(optimize=1, debug=0) print " yacc.yacc() ended" pyLex.setErrMsgFunc(errMsgFunc) if errMsgFunc: errMsgFunc('***BEGIN***') result = parser.parse(src_code.lower(), lexer=Lexer, debug=0, tracking=True) if RECOMPILE: print 'RECOMPILE' size = 0 if errMsgFunc: errMsgFunc('***BEGIN***') result = parser.parse(src_code.lower(), lexer=Lexer, debug=0, tracking=True) #RECOMPILE=False if errMsgFunc: errMsgFunc('***END***') print " parse.parse() generated result '%s'" % result return result
def analisarCodigo(codigo): #limpa lista de variaveis del variaveis[:] global RECOMPILE global size global nomeprocs size = 0 nomeprocs = {} #Para usar os analisadores juntos é necessário passar o léxico para dentro do parser. Lexer = pyLex.build() parser = yacc.yacc(write_tables=0) result = parser.parse(codigo.lower(), lexer=Lexer, tracking=True) if RECOMPILE: size = 0 result = parser.parse(codigo.lower(), lexer=Lexer, tracking=True) RECOMPILE = False return result