使用C#將類似C或類似Lisp的代碼解析到數組中的方法是什麼?解析代碼的好方法 - 用類似C或Lisp的(或任何)語言編寫 - 用C#解析成數組?
因此,例如,對於一個小片段如下所示:
if (number > 50) {
alert('Hello, World!');
}
我希望能夠給每一個字和符號存儲到一個數組。
但到現在爲止我到輸出管理的陣列類似如下:
[0] if
[1] (number
[2] >
[3] 50)
[4] {
[5] alert('Hello,
[6] World!');
[7] }
你看在陣列位置1
,它說:(number
?這不是我想要的。我甚至想把這個小圓括號放入它自己的數組位置。
我最初想做的是讀取代碼的每個字符,然後開始將它們存儲到數組中。但是,這似乎是我在解析字符串時重新發明輪子。有沒有更簡單的方法來做到這一點?
p.s.我這樣做是因爲我想學習適當的字符串操作。
這稱爲標記化,它是構建編譯器的第一步。我研究編譯器標記化,可能有幾十個示例用於標記類C語言。 – 2011-06-11 15:46:44
這個問題之前已經被問過很多次了;大多數最終提到http://stackoverflow.com/questions/1669/。此外,數組並不是語法的良好表示,如果您決定將代碼存儲在數組中,則字符串不是令牌的良好表示。首先決定你是否想學習如何解析代碼或操縱字符串,這兩者是不同的問題。 – 2011-06-11 16:47:19