Re: [問題] BNF負號文法請教
※ 引述《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
03/15 02:43, 2F
→
03/15 02:50, , 3F
03/15 02:50, 3F
→
03/15 02:51, , 4F
03/15 02:51, 4F
推
03/15 02:58, , 5F
03/15 02:58, 5F
討論串 (同標題文章)
完整討論串 (本文為第 2 之 3 篇):
PLT 近期熱門文章
PTT數位生活區 即時熱門文章