2012-06-13 25 views
2

我正在嘗試使Xtext語法識別文件的結尾作爲有效的語句,但到目前爲止我嘗試過的所有操作都不起作用。如何在Xtext中使用EOF

嘗試使用EOF直接會告訴我的消息在編輯器「在輸入‘EOF’沒有可行的替代方案」:

Object : 
    typ=('char'| 'any' | 'number' | 'space' | 'symbol') (' ' | ';' | EOF) 
; 

於是,我就介紹鏈接到EOF終端:

terminal ETX: EOF; 
... 
Object : 
    typ=('char'| 'any' | 'number' | 'space' | 'symbol') (' ' | ';' | ETX) 
; 

的XTEXT是編譯的這種方式,但會給我同樣的錯誤如上在
「語言編輯器窗口」
(其運行XTEXT作爲Eclipse的應用程序時,將打開一個)當我不輸入最後一個元素後面的空格或分號(焦炭),出現的錯誤:

symbol number char(!) 

當我把所有三個允許的元素到終端同樣的事情發生:

terminal END: (' ' | ';' | EOF); 
... 
Object : 
    typ=('char'| 'any' | 'number' | 'space' | 'symbol') END 
; 

的語法用於描述一種正則表達式語言,它將用於解析定義格式的字符串。例如:
(我將代替空格用下劃線搞清楚)

char_symbol_number_ 
char_symbol_number; 

由編碼校正接受(不顯示任何錯誤)。

char_symbol_number 

會給我第二Eclipse編輯器窗口中的上述錯誤。
(的一個與我定義的語言代碼完成等。)

指出這一點,我想要做到的是一個純粹的化妝品的調整,
這樣我就可以離開最後一個語句是而不必添加空格或分號。


所以問題是:如何使Xtext識別EOF(無)作爲有效的結束語?

回答

0

我只能從語法片段猜你最後的語法應該什麼樣子,但你不會

Object: typ=('char'|'any') ';'? ; 

工作?

+0

感謝您的快速響應。不,它不起作用,我得到相同的「輸入'''錯誤沒有可行的替代。 –

+0

請發佈您的完整語法和您期望有效的完整示例文件。 –