作者LPH66 ((short)(-15074))
看板Programming
标题Re: [问题] compiler
时间Thu Jun 19 14:46:09 2008
※ 引述《ntouckcm (知足常乐)》之铭言:
: 请问一下
: 找不到问compiler的专版,但是又有问题,所以只好po在这,请大大解惑
: 一个文法:
: exp->atom|list
: atom->num|id
: list->(exp-list)
: exp-list->exp-list exp|exp
: num和id 是terminal,其他是nonterminal
: 要消去上面的left recursion
: 公式:A->Aa|b
: 变成:A->bA'
: A'->aA'|ε
: 但是我不知道要不要取代exp
: (1)exp-list->exp-list exp|exp
: 变成:
: exp-list->exp exp-list'
: exp-list'->exp exp-list'|ε
: (2)exp-list->exp-list exp|exp
: 先取代:exp-list->exp-list exp|atom|list
: 变成:
: exp-list->atom exp-list'|list exp-list'
: exp-list->exp exp-list'|ε
: 请问一下哪个才对?
都只做一半
记得没有左递回等同於每条rule的第一个要嘛是下面的non-terminal要嘛是terminal
简化一下代号 E,A,L,X是non-terminal n,i是terminal
E->A|L
A->n|i
L->X
X->XE|E
首先E,A,L三行都没事
到X E是上面的nonterminal
X->XE|A|L
A也是
X->XE|n|i|L
L也是
X->XE|n|i|X X->X就拿掉了
解决自己
X->nX'|iX'
X'->EX'|ε
X搞定 换X' E是上面的nonterminal
X'->AX'|LX'|ε
A也是
X'->nX'|iX'|LX'|ε
L也是
X'->nX'|iX'|XX'|ε
X也是
X'->nX'|iX'|nX'X'|iX'X'|ε
所以最後变成
E->A|L
A->n|i
L->X
X->nX'|iX'
X'->nX'|iX'|nX'X'|iX'X'|ε
--
実琴:「
河野!你真的就这样被
物质慾望给吸引过去了吗?!」
亨:「只要
穿着女装摆出亲切的样子,所有必要花费就能
全免,似乎一点都不坏啊。」
実琴:「难道你没有
男人的尊严了吗?!」
亨:(断然道)「
没有。在
节衣缩食且
生活吃紧的
学生面前,
没有那种东西。」
--プリンセス・プリンセス 第二话
--
※ 发信站: 批踢踢实业坊(ptt.cc)
◆ From: 140.112.30.84
1F:推 ntouckcm:谢谢140.121.219.142 06/19 16:57
2F:推 ntouckcm:但是不好意思忘了说那个(和)也是terminal140.121.219.142 06/19 17:04