用于EBNF语法的ANTLR解析器并获得带有结果的分解树

时间:2014-04-25 09:59:44

标签: tree antlr parser-generator ebnf decomposition

我正在尝试使用词法解析器来计算给定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)

计算术语:

Computed term

预期的树输出:

Solution tree

解决方案应该是所有树枝。

我的问题是,这样做的最佳方法是什么?

现在我想用ANTRL来构建语法分析树。

但我不太确定如何使用重构方法来计算术语。

谢谢!

1 个答案:

答案 0 :(得分:0)

经过大量阅读和研究如何解决这个问题,我意识到这种情况与有限状态机非常相似,并且有很多软件设计模式来处理解决方案。

所以更新将是。 使用这些模型之一将算法定义为有限状态机

Python finite state machine

现在,下一步将是如何将每个状态作为解析树处理(我尝试使用ANTLR),以获得下一个可能的状态。

那么,是否有人知道哪个是解析和处理像EBNF表达式这样的术语的最佳解决方案?即使用ANTLR?

干杯。