我正在嘗試爲Lua創建ANTLR分析器。所以我把Nicolai Mainero製作的語法(可在ANTLR的網站上找到,Lua 5.1語法)並開始工作。ANTLR Lua長字符串語法規則
語法很好。有一件事不起作用:長字符串。
的Lua規範規則:文字
串也可以使用由長括號包圍的 長格式定義。 我們定義一個開放長支架 級別n作爲開放方括號 後跟n個等號,然後是 另一個開放方括號。所以,一個 0級的開放長括號是 寫成[[,一級開放長括號 等級1寫爲[= [等 上。一個結束長支架的定義類似於 ;例如,關閉 等級4的長括號寫爲 ] ====]。長字符串以任何級別的 開頭長支架開始,並且 以同級的第一次結束長支架 結束。括號內的這個 文字可以運行幾行 行,不解釋任何轉義 序列,忽略任何其他級別的長括號 。他們可以包含 任何東西,除了結束括號 適當的水平,適當的水平。
我的問題接近this,但工具是不同的。
LONGSTRING的一些小例子:
LONGSTRING: '[[' (~(']') | ']'(~(']')))* ']]';
有人可以幫我:
local a = [==[ Some interesting string [=[ sub string in string ]=] [hello indexes] [[And some line strings]] ]==] - its correct string.
local f = [==[ Not interesting string ]=] - incorrect string
這裏我用了 '=' 符號LONGSTRING規則?謝謝!
不要忘記漫長的評論。它們就像長字符串一樣,但是以' - [['開始並以']]結尾。當然他們也允許有0個或更多的'='符號,以便它們可以明確地嵌套。 – RBerteig 2010-11-02 09:21:48
@Rerteig,好點。在我的回答中,我沒有具體提及它們,但是它們在我發佈的語法片段中正確處理。 – 2010-11-02 10:26:09
@Bart,只要你的評論規則處理'「 - 」'後面跟着沒有空白的「LONGSTRING」。 – RBerteig 2010-11-02 19:09:47