【发布时间】:2018-03-25 22:21:08
【问题描述】:
我的语法如下:
IdentifierName ::
IdentifierStart
IdentifierName IdentifierPart
使用git这个词应该被解析成下面的解析树:
IdentifierName
/ \
IdentifierName IdentifierPart
/ \ |
IdentifierName IdentifierPart 't'
| |
IdentiiferStart 'i'
|
'g'
我想写一个递归下降算法来做到这一点。现在我有两个选择,要么编写带有 backtracking 的递归下降解析器,要么编写 predictive 递归下降解析器。这两个都是非表驱动解析器。但是,我已经读过,对于带有回溯的递归下降,我需要消除左递归。问题中的语法似乎是递归的。
那么我是否需要重构语法或使用预测算法?
【问题讨论】:
标签: parsing recursive-descent left-recursion compiler-construction