我在学校有一个作业告诉我们用 Java 创建一个自上而下的解析器,它遵循以下语法:
assign = id , '=' , expr , ';' ;
expr = term , [ ( ’+’ | ’-’ ) , expr ] ;
term = factor , [ ( ’*’ | ’/’) , term] ;
factor = int | ’(’ , expr , ’)’ ;
我想我已经理解了解析的基本概念,例如“如果我们有一个 id,请检查下一个标记是否是 '=' 并且下一个是 expr,以及之后的下一个是否是 ';'”。正确的?
现在,如果我想检查传入的输入是否是一个表达式:
我检查令牌以查看是否存在术语,然后是否存在“+令牌”或“-令牌”,最后是否存在“expr”。但是,如果我检查那里是否有“expr”,它会循环,并最终再次检查是否有“expr”,一次又一次。
我不明白我怎么能得到它的工作?有人能帮我吗?
亲切的问候,