2013-03-08 94 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”标记将会适得其反 - 词法分析器必须递归嵌套列表,这意味着它将实现一个迷你分析器。将该作业留给解析器。

第一种情况使得更简单的词法分析器对于后期解析器仍然有用。