我正在尝试使用词法解析器来计算给定EBNF术语的所有解决方案。 例如:
语法:
T :: = nil | A.T | (T + T)| (T * T)
A :: = a | b | c | d | ë
算:
*独家OR
。序列
+ Parallel
符号:
a b c d e
示例术语:
一。(B + C)。(d * E)
计算术语:
预期的树输出:
解决方案应该是所有树枝。
我的问题是,这样做的最佳方法是什么?
现在我想用ANTRL来构建语法分析树。
但我不太确定如何使用重构方法来计算术语。
谢谢!
答案 0 :(得分:0)
经过大量阅读和研究如何解决这个问题,我意识到这种情况与有限状态机非常相似,并且有很多软件设计模式来处理解决方案。
所以更新将是。 使用这些模型之一将算法定义为有限状态机
现在,下一步将是如何将每个状态作为解析树处理(我尝试使用ANTLR),以获得下一个可能的状态。
那么,是否有人知道哪个是解析和处理像EBNF表达式这样的术语的最佳解决方案?即使用ANTLR?
干杯。