0

我正在尝试制作一个词法解析器来计算给定 EBNF 术语的所有解决方案。例如:

语法:

T::= 无 | 在 | (T+T) | (T*T)

一个::=一个| 乙 | c | d | e

运营商:

* 异或

. 序列

+ 并行

符号:

abcde

示例术语:

a.(b+c).(d*e)

计算项:

计算项

预期的树输出:

解决方案树

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

我的问题是,这将是执行此操作的最佳方法?

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

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

谢谢!

4

1 回答 1

0

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

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

Python 有限状态机

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

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

干杯。

于 2014-05-05T06:57:12.630 回答