0%

Top Down –自顶向下的文法分析

读入:读取下一个待匹配字符进去stack,如果为#且栈顶也为#,成功;如果此时栈顶不为#,失败
检查:如果栈顶为终结符,回到读入;
否则,随机选择一个规则(假如存在多个规则可以满足的话),使栈顶字符与左部(非终结符)匹配,匹配,用规则的右部(即终结符)替换,整个过程叫做规约(Derivation)
如果找到匹配的规则,回到读入;
否则,BackTracking,回溯到上一次的检查,换另一个规则

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
if Stack == None Terminal {
choose rule do divide {
from right to left, push into stack
}
}

match {
pointer move right to read
}


if not match {
backtrack
}

example:

  1. $ S \to a \ S \to Sa $, 给定 “aa”
1
2
3
4
5
6
@1
S# | aa#
a# | aa#
# | a# -> backtrack
S# | aa#
@2
阅读全文 »

首先,欢迎大家来到我的博客~

本人想着,作为一个软件工程专业的学生,怎么也得有属于自己的一个网站或者博客吧?于是,趁着有空,抽出时间做出了这个博客。

博客主要用于记录个人的生活感想,编程方面的知识,设计方面的想法以及其他杂谈,希望大家能够多多提出意见,与我进行交流,来者不拒。

博客采用了WordPress开发,借用了他人的第三方主题并加以修改(大一学到的PHP终于有了一点用武之地了T.T),服务器为新浪云(SAE),并购买了www.dreampiggy.com域名,大家以后要多多来看哦。

博客可以在电脑浏览器上浏览,也可以手机浏览(虽然暂时的响应式设计是根据分辨率判断的,可能高分辨率设备会被误认为电脑……以后再改进为UA判断,先让我休息一会……)。

博客允许用多说评论,大家可能不知道多说,这是一个广泛采用的论坛或者博客的评论系统,可以使用第三方,包括微博,QQ,人人等主流平台账号登陆,并且自动更新头像,还可以获取通知,甚至在其他网页上采用多说的评论时会自动同步。希望大家尽量不要游客评论(游客我也分不清呀……用第三方平台账号登陆很快滴)

阅读全文 »