lua算術表示式優先順序筆記

2021-05-22 11:37:16 字數 1776 閱讀 1994

從低到高:

and or

- not

^ (右連線)

最左推導的文法上的設計應該(高優先順序的表示式總是作為低優先順序表示式的最小不可分割因子)是:

e -> eandandort

| eorandort

| andort

andort -> andort==logict

| andort~=logict

| andort>logict

| andort<logict 

| andort>=logict

| andort<=logict

| logict

logict -> logict..conct | conct

conct -> conct+addsubt | conct-addsubt | addsubt

addsubt -> addsubt*muldivt | addsubt/muldivt | muldivt

muldivt ->-multdivt |notmuldivt | uminus

uminus -> powt^uminus | powt

powt ->(e)|id

上面的文法其實已經不具備二義性,而如果我們需要使用ll(1)的方法來解析串的話,那還需要將上面的文法翻譯成

無左遞迴的文法:

e -> andort e1

e1 ->andandort e1

|orandort e1

andort -> logict andort1

andort1 ->==logict andort1 

|~=logict andort1

|>logict andort1

|<logict andort1

|>=logict andort1

|<=logict andort1

| null

logict -> conct logict1

logict1 ->..conct logict1 | null

conct -> addsubt conct1

conct1 ->+addsubt conct1

|-addsubt conct1

| null

addsubt -> muldivt addsub1

addsubt1 ->*muldivt addsubt1

|/muldivt addsubt1

| null

算術表示式求值 「算符優先順序法」 「字尾表示式法」

該方法來自嚴蔚敏版資料結構,基本思路是 設定兩個工作棧,乙個運算元棧,乙個操作符棧,在 自左至右 掃瞄算術表示式時,遇到運算元直接入運算元棧,若遇到操作符,則根據操作符優先順序判斷下一步操作 操作符優先順序規則 若其優先順序高於棧頂操作符,則入棧,否則 相等或小於 彈出棧頂算符並從運算元棧彈出兩個運...

算術運算子和算術表示式(優先順序,結合性等)

得到餘數 7 2 得到1 c語言中,運算子的運算優先順序共分為15級。1級最高,15級最低。在表示式中,優先順序較高 的先於優先順序較低的進行暈死。而在乙個運算量兩側的運算子優先順序相同時,則按運算子的 結合性所規定的結合方向處理。c語言中各運算子的結合性分為兩種,即左結合性 自左至右 和右結合性 ...

Lua優先順序

lua指令碼管理器詳解是本文要介紹的內容,這不是乙個文字編輯器或者ide之類的東東,實際上它只是乙個dll,lua是膠水語言,這個管理器的目的是為了讓c c 更好的支援lua。通常專案裡管理指令碼的方法都是分開檔案存放,lua裡沒有工程的概念,所以檔案是最小單位,這樣一來指令碼檔案數量的增長會帶來乙...