我有兴趣从BNF语法编写解析器(语法分析器)而不使用像yacc或bison这样的生成器工具。
我以简单算术表达式的BNF为例:(摘自Dragon Book 2.2.6)
expr -> expr + term | expire - term | term
term -> term * factor | term / factor | factor
factor -> number | (expr)
假设我想创建等效代码。
我想我应该创建三个名为parseExpr
,parseTerm
和parseFactor
的函数。
如何构建有关向上定义的BNF的这些功能?
parseFactor
似乎很明显:
parseExpr
对于parseExpr
,我对如何开始和解释制作感到有点困惑:expr -> expr + term | expire - term | term
如何翻译此作品?如何检测哪种情况适用?最后一次制作的问题是什么?