2011-08-10 57 views
0

我有關於Java + ANTLR組合實現數組的問題。 (我主要談論java/c風格的數組)。ANTLR和數組

所以基本上我問你如何實現這樣的功能,如果有這樣的例子已經可用或者如果有人可以指向我可能指向解決它的任何事情。

另一方面,我已經搜索了一下如何可能的解決方案。我看到 的主要問題是,用戶可能會創建各種維度的數組,甚至如果他或她想要發瘋(如創建5維數組或更糟)。

雖然語法這樣的事情很簡單,就像

new ID (INT (',' INT)*) 

後端真的介入了一下。正如我所說的,用戶可以輸入任意數量的維度,所以應該動態創建數組維度。 (至少在我看來,也許我是在複雜的東西?)

搜索我沒有發現的東西之後,幾乎解決了這個問題很好,這裏是鏈接到的問題:

Is it possible to dynamically build a multi-dimensional array in Java?

當然,我的問題是,這是一個可行的例子,有點(至少可以這麼說),複雜嗎?有更優雅的解決方案嗎?

考慮到這一點,我想也許答案可能是以某種方式將多維尺寸變換爲更線性的結構?可以這樣做有用嗎?計算器上簡單搜索指出許多解決方案 此,如:

Algorithm to convert a multi-dimensional array to a one-dimensional array

難道是值得在這個方向進行搜索嗎?

現在,最後要記住,數組在許多語言中是非常常見的功能,我必須感到驚訝的是,在搜索ANTLR郵件列表後,沒有類似的問題,正如我之前所說的那樣,讓我相信我可能過於複雜的事情? (除非我真的在搜索?)我真的很感激反饋。

+0

好的,用戶鍵入類似於array [] [] = new array [5] [5] .User聲明瞭二維數組,並且我想將所有數組成員放在符號表中。兩個嵌套for循環處理這個很好,我有兩維數組的支持(解釋器中的exmethod循環了我解析的索引並創建變量)但是,如果用戶決定聲明n維數組,我無法永遠爲循環嵌套,所以我可以選擇使用例如第一個鏈接中的可變參數,或者其他的東西。如果我問如何實現多維數組或者沿着這些線可能會更好? – Te33Xaz

+0

或者,甚至更簡單的解釋,如果有人從java/c中刪除了數組,並且我必須將其刪除,那麼我目前看到的解決方案是解析索引,並使用類似於第一個鏈接的代碼創建所有成員變量。我想知道是否有更簡單的方法來包含對典型結構語言的數組支持? – Te33Xaz

回答

0

你的語法,如果我沒有記錯的話,相當於像

新字符4,5,6,7

這是一種奇怪的。我希望你的真正用意

新的char [4,5,6,7]

從一個純粹的語法點

但是,沒有理由不只是存儲在一個數組的索引,讓語義分析通過擔心它。

+0

是的,是的,我的意思是[4,5,6,7]。如果可能,你能否詳細說明你的最後一句話? – Te33Xaz