2015-10-25 155 views
1

試圖爲PowerScript語言構建語法。我將這部分語言分成幾部分,除了簡單的標題之外,一切似乎都在起作用。看來$ simbol不能被識別。任何人都可以幫我一下嗎? (我剛纔複製的小例子,我想)

grammar PowerScript; 

compilationUnit : Header EOF; 

fragment 
Header : ID '.' ID; 

ID : [a-zA-Z0-9$_]+ ; 

測試文件只包含:

$PBExportHeader$n_logversion.sru 

感謝

回答

2

compilationUnit規則是一個解析器規則。解析器規則不能引用詞法分析器片段。只要刪除fragment限定詞即可使Header成爲適當的詞法分析規則。

更新

Antlr4是完全支持Unicode能力。只需包含標準Unicode編碼形式的字符:

ID : ([a-zA-Z0-9$_] | '\uD83D\uDCB2')+ ; // Unicode heavy Dollar sign 
+0

嗨!首先感謝..但不是..它應該是有關的Linux或UTF。這是我從antlrv4更改後得到的:行1:0令牌識別錯誤:'$' 行1:15令牌識別錯誤:'$' 行1:1不匹配的輸入'PBExportHeader'期待標頭 語法錯誤 行1:17標記識別錯誤:'_' 行1:28標記識別錯誤:'。' – darioaxel

+0

有什麼變化?如果有人建議,那麼問題就出現在語法的其他地方。發佈一個實際的工作語法來重現問題。如果你實際上並沒有使用'$'(U + 0024),那麼將實際的字符包含在'ID'規則中的字符列表中。 – GRosenberg

+0

是的,在我使用UnitTest時,似乎問題來自Java。我今天嘗試編譯和測試在終端的語法,它的工作正常..謝謝,我簽署的答案是正確的。 – darioaxel