1
我目前正在嘗試爲我們在公司中使用的內部語言編寫基於Eclipse的編輯器。語言是形式的語句的集合:在Xtext中解析字符串
{action}: {arguments}
...在自己的行。 {arguments}的格式取決於正在執行的{action}的類型。腳本片段的示例可能如下所示:
banner: Some string with numbers and punctuation (23) in it!
# some comment
timeout: 42
我的問題是解析這樣的片段。我有評論和超時聲明的工作,但我似乎無法創建一個規則來覆蓋橫幅聲明。我所有的嘗試都導致Antlr「令牌定義不可達」警告,或編輯器無法匹配輸入。我試過橫幅聲明以下規則:
Banner:
'banner:' name=ANY_OTHER*;
和
Banner:
'banner:' name=FF_STRING;
terminal FF_STRING : ('a'..'z'|'A'..'Z'|'0'..'9'|'.'|':'|' ')+;
...使我有ANTLR警告。我提出的一個黑客就是簡單地創建一個與SL_COMMENT完全相同的終端,在開始時使用'banner:'而不是'#'。缺點是我沒有語法着色,自動完成列表中也沒有顯示「橫幅」。
歡迎任何建議。
感謝您的答覆。這似乎工作,雖然我仍然得到antlr「決定可以匹配輸入,如...」類型的警告,當我試圖在我的價值規則中添加':'。我認爲這是因爲我將':'作爲一個單獨的關鍵字緊跟在「橫幅」之後(即橫幅和冒號之間可能有空格)。 – Exponent 2011-04-26 03:07:40