这是我当前的Python解释器,它使用解析规则获取输入,然后打印出表达式。解释器工作得很好,但是我想对我当前的语法规则进行某些修改,并将其添加到新的语法规则中。到目前为止,我只能得到一些我想要的语法修改。你知道吗
以下是我想对当前语法所做的更改:# ::= empty |
to
# ::= |
# ::= id | intnum | ( )
to
# ::= () | id | number
::= id = ; | print ;
to
::= id = ; | iprint ; | rprint ;
另外,我不确定如何将下面的新语法规则应用到我的解释器中,我想我可能已经有了它们?你知道吗 ::=
::= |
::= ;
::= int | real
::= id | id {, }
这是我当前语法的代码:import sys
global varTable
varTable = {}
def main():
global itProgram, nextToken, nextChar, nextLex, flagEof, strStmt
nextToken = ""
nextChar = ""
flagEof = False
strStmt = ""
try:
fileProgram = open(sys.argv[1], "rt")
except IndexError:
print "Missing input file!"
return
except IOError:
print "Could not open \'" + sys.argv[1] + "\'!"
return
strProgram = fileProgram.read()
itProgram = iter(strProgram)
if strProgram == "":
nextChar = ""
else:
nextChar = itProgram.next()
#while not flagEof:
funcLex()
stmtList()
def funcLex():
global itProgram, nextToken, nextLex, nextChar, flagEof, strStmt
nextToken = ""
nextLex = ""
isFloat = False
try:
<