阿摩線上測驗 登入

申論題資訊

試卷:94年 - 94 地方政府特種考試_三等_資訊處理:程式語言#38549
科目:程式語言
年份:94年
排序:0

題組內容

二、就下列文法(Grammar):(20 分) + | * | → a | b | c

申論題內容

(2)如何將該文法改正,使其能定義通常習用的數學運算式之先乘(*)後加(+)優 先次序與由左而右結合性。

詳解 (共 1 筆)

詳解 提供者:s1121ks011 s1121ks011
要將文法修改為定義通常習慣的數學運算式優先次序(先乘後加)以及左結合性,可以按照以下方式修改文法:
```
<Expr> → <Expr> + <Term> | <Term>
<Term> → <Term> * <Factor> | <Factor>
<Factor> → a | b | c
```
這樣的修改使得在表達式中先出現的乘法操作會優先計算,而加法操作會在乘法操作之後進行。這符合了通常習慣的數學運算法則。
這個修改後的文法保持了左結合性,因為每個非終端符號(Expr、Term和Factor)都可以根據自己的規則進行遞歸展開,並且操作符的組合是從左向右進行的。
這個改正後的文法能夠清晰地定義先乘後加的優先次序,並確保了左結合性。