2013-03-06 27 views
0

分裂字母字符和數字我有分別解析字母字符和數字的語法:如何解析和從字符串使用ANTLR語法

grammar Demo; 

options 
{ 
    language = C; 
} 

program : process+ 
     ; 

process : Alphanumeric {printf("\%s",$Alphanumeric.text->chars);} 
     ; 

Alphanumeric : (Alphabet | Number)+ 
      ; 


fragment Alphabet : ('a'..'z')+ 
        ; 

fragment Number : ('0'..'9')+ 
       ; 

假設,輸入是「A10」或「B10」, printf語句會顯示a10或b10,但我希望字母字符和數字被分割,即a和10必須分開分割,因爲我需要'a'與其他字符串進行比較並保存數字, 'a'或'b'等旁邊的一個,放到一個表格中。

準確地說,a10必須拆分 - > a用於比較,10用於存儲,我應該能夠分別獲取字母和數字。

如何定義這樣的東西的語法?

回答

1

您需要單獨暴露AlphabetNumber到您的解析器,這意味着他們應該在詞法分析器(未fragment規則)頂級規則。結果,Alphanumeric也將成爲解析器規則:

alphanumeric : (Alphabet | Number)+ 
      ; 

Alphabet : ('a'..'z')+ 
     ; 

Number : ('0'..'9')+ 
     ;