3
词法分析器返回其解析器的令牌的数据类型应该是什么?
如标题中所述,词法分析器应返回/提供解析器哪种数据类型?在阅读Wikipedia 的词法分析文章时,它指出: 在计算机科学中,词法分析是将一系列字符(例如在计算机程序或网页中)转换为一系列标记(具有已标识“含义”的字符串)的过程。 但是,与上述说法完全矛盾的是,当我在另一个站点上问过另一个问题(“代码审查”,如果您很好奇)得到回答时,回答者表示: 词法分析器通常读取字符串,并将其转换为词位流。词素只需要是一串数字。 他给了这个视觉效果: nl_output => 256 output => 257 <string> => 258 稍后,在他提到的文章中Flex,他已经存在一个词法分析器,并说用它编写“规则”比手工编写词法分析器更简单。他继续给我这个例子: Space [ \r\n\t] QuotedString "[^"]*" %% nl_output {return 256;} output {return 257;} {QuotedString} {return 258;} {Space} {/* Ignore */} . {error("Unmatched character");} %% 为了进一步了解并获得更多信息,我阅读了有关Flex的Wikipedia文章。Flex文章显示,您可以通过以下方式使用令牌定义一组语法规则: digit [0-9] letter [a-zA-Z] %% "+" { return PLUS; } …
21
data-types
lexer
flex