词典分析列表

时间:2013-03-08 09:11:00

标签: lexical-analysis

我必须为某种语言制作词法分析器,该语言包含(例如)[1,2,3]形式的列表或['c','s','q','t']

我真的不明白我是否需要在lexing阶段匹配列表。所以,例如

  

2:[1,2,3];

  

NUM(2)COLON LSQBRACKET NUM(1)COMMA NUM(2)COMMA NUM(3)RSQBRACKET SEMI

  

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

感谢您的帮助。

1 个答案:

答案 0 :(得分:1)

从技术上讲,这取决于你。如果你只需要匹配非常简单的列表文字,那么也许你可以放弃对待它们有点像字符串文字。 (但是,这可能不是一个好方法)。

您通常希望词法分析器输出一系列简单的标记。词法分析器应该相对简单 - 一个经验法则是它永远不需要递归。

因此,例如,要求它输出“LIST”令牌会适得其反 - 词法分析器必须在嵌套列表上递归,这意味着它将实现一个迷你解析器。将该作业留给解析器。

第一种情况是一个更简单的词法分析器,它对后期解析器仍然有用。