Re: [問題] BNF負號文法請教

看板PLT (程式語言與理論)作者 (邀怪)時間15年前 (2009/03/15 01:49), 編輯推噓2(203)
留言5則, 3人參與, 最新討論串2/3 (看更多)
※ 引述《mode1224 (酷比)》之銘言: : 想請問BNF語法規則推導 : 使用下列 B.N.F.文法為下列敘述建構一剖析樹 : A:=B DIV 10 + C x D : <assign>::=id:=<exp> : <exp>::=<term>∣<exp>+<term>∣<exp>-<term> : <term>::=<factor>∣<term>x<factor>∣<term>DIV<factor> : <factor>::=id∣int∣(<exp>) : 運算子順序:x div > + - : 但是自己寫發現如果有負號該如何定義文法 : 例:(-a+b) : 運算子順序:() > 正負 > +- : 有人能解答一下嗎,非常感謝。 有正負就是要加上 unary operator. 我自己都用 LL parser, 所以把你的 BNF 拿掉 left recursion 加上 unary operator 後差不多變這樣: <assign> := id ":=" <exp> <exp> := <term> (("+" | "-") <term>)* <term> := <unary> (("*" | "/") <unary>)* <unary> := ("-")? <factor> <factor> := id | "int" | "(" <exp> ")" -- ※ 發信站: 批踢踢實業坊(ptt.cc) ◆ From: 118.165.166.80

03/15 02:27, , 1F
抱歉請問""和?是什麼意思...說明一下好嗎,感恩
03/15 02:27, 1F

03/15 02:43, , 2F
"x" 表示 x 這個 literal, (x)? 表示 x 可出現0或1次
03/15 02:43, 2F

03/15 02:50, , 3F
{x}or[x]0次或1次不是這種符號嗎EBNF用在BNF上面的符號
03/15 02:50, 3F

03/15 02:51, , 4F
抱歉因為我的範例跟您打的有差異,所以還在理解
03/15 02:51, 4F

03/15 02:58, , 5F
? 是 EBNF 才加進來的東西...
03/15 02:58, 5F
文章代碼(AID): #19k-uHgJ (PLT)
文章代碼(AID): #19k-uHgJ (PLT)