Skip to content

Navigation Menu

Sign in
Appearance settings

Search code, repositories, users, issues, pull requests...

Provide feedback

We read every piece of feedback, and take your input very seriously.

Saved searches

Use saved searches to filter your results more quickly

Sign up
Appearance settings

Commit 53a929c

Browse files
Update README.md
1 parent 2103422 commit 53a929c

File tree

1 file changed

+3
-2
lines changed

1 file changed

+3
-2
lines changed

‎02_语法分析/README.md

Lines changed: 3 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -14,15 +14,16 @@
1414
  预测分析法并不能解析所以CFG文法,实际上它只能解析LL(1)文法,所以我们应该通过调整产生式,使文法尽可能的符合LL(1)文法。不过即使不能完全满足LL(1)也问题不大,我们可以通过一个特殊处理解决那些超出LL(1)范围的文法。
1515
<br/><br/>
1616
&emsp;&emsp;综上所述,我们可以得出如下制作js parse的思路:
17-
<br/><br/>
17+
<br/>
1818
&emsp;&emsp;&emsp;1选择合适算法:自顶向下、自底向上和通用方法。而自顶向下实现简单、可读性好、效率高,所以选择自顶向下。自顶向下具体通过递归下降实现,但存在回溯问题,所以采用预测分析法
1919
<br/>
2020
&emsp;&emsp;&emsp;2判判js是否满足LL文法:预测分析法要求语言满足LL(k)文法,为简化模型,我们先判定js是否满足LL(1)文法。
2121
<br/>
2222
&emsp;&emsp;&emsp;3获取js文法:根据js语言特点得到形式化定义文法G。
2323
<br/>
2424
&emsp;&emsp;&emsp;4文法G优化:先提取G产生式左公共因子,再消除左递归,这样就有可能变为LL(1)文法。然后要分别写出改写后文法的FIRST集、FOLLOW集、SELECT集,如果相同左部的SELECT集的交集不为空集,则为LL(1)文法。
25-
5即使部分文法不能完全满足LL(1),也没关系,我们可以通过特例特殊处理的办法使得整体文法兼容到LL(1)预测分析算法。这步通常可以满足所有编程语言,还不好处理的话就只能采用自底向上算法了。[为什么所有的教科书中都不赞成手写自底向上的语法分析器? - 冯东的回答 - 知乎](https://www.zhihu.com/question/21475266/answer/18346898)
25+
<br/>
26+
&emsp;&emsp;&emsp;5即使部分文法不能完全满足LL(1),也没关系,我们可以通过特例特殊处理的办法使得整体文法兼容到LL(1)预测分析算法。这步通常可以满足所有编程语言,还不好处理的话就只能采用自底向上算法了。[为什么所有的教科书中都不赞成手写自底向上的语法分析器? - 冯东的回答 - 知乎](https://www.zhihu.com/question/21475266/answer/18346898)
2627
<br/><br/><br/>
2728

2829

0 commit comments

Comments
(0)

AltStyle によって変換されたページ (->オリジナル) /