1
我想解析一些任務,我只關心整個任務。不是關於任務內容的。分配由':='
表示。 (編輯:其他的事情可能會前和分配後,)ANTLR解析任務
一些例子:
a := TRUE & FALSE;
c := a ? 3 : 5;
b := case
a : 1;
!a : 0;
esac;
目前我做一個包含「案例」和其他任務分配之間的差異。對於簡單的作業,我嘗試了類似~('case' | 'esac' | ';')
的東西,但之後antlr抱怨無法匹配的標記(如'='
)。
assignment :
NAME ':='! expression ;
expression :
(simple_expression | case_expression) ;
simple_expression :
((OPERATOR | NAME) & ~('case' | 'esac'))+ ';'! ;
case_expression :
'case' .+ 'esac' ';'! ;
我試着用下面的替換,因爲Eclipse的解釋似乎並不喜歡((OPERATOR | NAME) & ~('case' | 'esac'))+ ';'! ;
因爲'and'
的。
(~(OPERATOR | ~NAME | ('case' | 'esac')) |
~(~OPERATOR | NAME | ('case' | 'esac')) |
~(~OPERATOR | ~NAME | ('case' | 'esac'))) ';'!
但這不起作用。我得到
「的錯誤(139):/AntlrTutorial/src/foo/NusmvInput.g:78:5:補集是空| --->〜(〜運算符|〜名稱|( '案件' |'esac')))EOC!;「
我該如何解析它?
我還沒有完全理解詞法和語法分析器的機制,所以這就是我要的^^工作。您的解決方案肯定給了我一些見解,謝謝。 –