2013-03-08 86 views
0

我必須爲(例如)形式爲[1,2,3]或(['c','s','q','t'])的(例如)形式的列表製作一個詞法分析器。詞彙表的詞法分析

我真的不明白我是否需要在輕鬆的階段匹配列表。因此,例如

2:[1,2,3];

NUM(2)結腸LSQBRACKET NUM(1)COMMA NUM(2)COMMA NUM(3)RSQBRACKET SEMI

NUM( 2)COLON列表([1,2,3])SEMI

感謝您的幫助。

回答

1

從技術上講,這取決於你。如果你只需要匹配非常簡單的列表文字,那麼也許你可以脫離處理它們,像字符串文字。 (但是,這不太可能是一個好方法)。

您通常希望詞法分析器輸出一系列簡單的標記。詞法分析器應該比較簡單 - 一條經驗法則是它永遠不需要遞歸。例如,要求它輸出一個「LIST」標記將會適得其反 - 詞法分析器必須遞歸嵌套列表,這意味着它將實現一個迷你分析器。將該作業留給解析器。

第一種情況使得更簡單的詞法分析器對於後期解析器仍然有用。