2017-08-16 67 views
1

我正在使用Xtext開發DSL。這個DSL應該接受任何類型的代碼。這意味着它應該接受任何角色。另外,我需要記錄這些代碼,而不會忽略它。有沒有人知道這個正則表達式?我試圖使用。*但它不起作用,因爲它期望字符不是數字或字母。我甚至嘗試使用「 - >」,但它也不起作用。如何獲取代表xText中任何字符的終端

代碼:

Param: 

    'param' value=Anything; 

...

Instance: 

    component=[Component] name=ID 

    'call:' code=Anything; 

應該怎樣 「Antything」 是什麼?

感謝

+0

什麼停止此特定點什麼呢?任何事情都停止了,下一個規則開始了嗎? –

+0

@ChristianDietrich對於我嘗試使用「」的代碼,但在編寫第一個「,期待其他」之後,忽略了我可能寫在其中的任何內容。對於參數,它是另一個參數或配置集的結尾,a}。 –

+0

嗯,不知道如果切換到外部詞法分析器和/或jflex,這是否可能很容易。你怎麼知道一個配置集合結束?什麼是允許的那種東西?真的是一切,或者像'STUFF:(ID | INT |「somekeyword」| STRING)+'這樣的規則可以幫助 –

回答

0

取決於你的東西是你可以嘗試像

Model: 
    params+=Param*; 

Param: 

    'param' value=Anything; 

// this is a so called datatype rule 
Anything : 
    (ID | INT | STRING | ANY_OTHER)+ 
; 
+0

使用'''通配符運算符而不是額外的解析器規則是不是更容易?或者不支持Xtext?當然,在語法結尾處必須有一個附加的詞法分析器規則,以便每個輸入將由詞法分析器進行標記... – Raven

+0

否Lexing無法解析 –

+0

是的我知道...您聲明和我的? Afaik Xtext在底層使用了ANTLR v3,我的建議應該與它一起工作,除非Xtext在那裏改變了某些東西(或者我錯過了某些東西) – Raven