2010-03-20 47 views
2

我想解析整數並在antlr 3.2中訪問它們的值。ANTLR - 在c/C++中訪問令牌值

我已經發現瞭如何在Java中做到這一點:

//token definition 

INT : '0'..'9'+; 

//rule to access token value: 

start : val=INT   {Integer x = Integer.valueOf($val.text).intValue(); } 

; 

...但我無法找到這在C/C++的解決方案。有人知道如何做到這一點?

+1

這並不回答你的問題,但是在那段代碼中,你將一個字符串解析成一個'Integer',將其轉換爲一個'int',然後將它自動裝箱回到一個'Integer'中。你可以跳過'intValue'步驟,或者將'x'改成'int'。 – 2010-03-20 13:40:02

回答

0

根據示例-v3/C/C.g從http://www.antlr.org/download/examples-v3.tar.gz $ INT.text-> chars應該適用於C,但我沒有測試它。

如果您在C程序中從解析器外部遍歷AST,並且您有一個類型爲ANTLR3_BASE_TREE的名爲「節點」的節點,則可以使用node-> getText(node) - > chars來訪問它(由於我使用這是我自己)。

請記住,C和C++目標是兩個完全不同的東西。我只使用C目標,所以我不能多說C++的目標。

儘管如此,這些例子是一個很好的資源,可以瞭解這些細節,但遺憾的是沒有很好的記錄。

+0

感謝您的快速回復$ INT.text-> chars返回一個字符指針並解決問題。 – 2010-03-20 14:47:32