コード例 #1
0
ファイル: lab3.py プロジェクト: arkuzmin/compilers
grammar.rules.append(Rule([F], [tNot, F]))
grammar.rules.append(Rule([B], [tEq]))
grammar.rules.append(Rule([B], [tNeq]))
grammar.rules.append(Rule([B], [tLt]))
grammar.rules.append(Rule([B], [tLe]))
grammar.rules.append(Rule([B], [tGt]))
grammar.rules.append(Rule([B], [tGe]))
grammar.rules.append(Rule([Z], [tPl]))
grammar.rules.append(Rule([Z], [tMi]))
grammar.rules.append(Rule([P], [tPl]))
grammar.rules.append(Rule([P], [tMi]))
grammar.rules.append(Rule([P], [tOr]))
grammar.rules.append(Rule([M], [tMu]))
grammar.rules.append(Rule([M], [tDi]))
grammar.rules.append(Rule([M], [tDiv]))
grammar.rules.append(Rule([M], [tMod]))
grammar.rules.append(Rule([M], [tAnd]))

print "grammar:\n", grammar

grammar.removeLeftRecursion()

print "left recursions removed: \n", grammar


expr = [tOpenBr, tIdentifier, tMi, tConst, tCloseBr, tMu, tOpenBr, tIdentifier, tPl, tIdentifier, tCloseBr]
print "expr: %s\n" % ''.join([str(symbol) for symbol in expr])

parser = TopDownParser(grammar)
parser.parse(expr)