标题是一个问题:单词“词法分析器”和“解析器”的同义词,还是他们不同?似乎维基百科使用这些词可以互换,但英语不是我的母语,所以我不能确定。单词“lexer”是单词“parser”的同义词吗?
7
A
回答
7
编号Lexer将输入流分解为“单词”;解析器发现这些“单词”之间的句法结构。例如,给定输入:
velocity = path/time;
词法分析器输出是:
velocity (identifier)
= (assignment operator)
path (identifier)
/(binary operator)
time (identifier)
; (statement separator)
然后解析器可以建立以下结构:
= (assign)
lvalue: velocity
rvalue: result of
/(division)
dividend: contents of variable "path"
divisor: contents of variable "time"
6
否。词法分析器将源文本分解为标记,而解析器则适当地解释标记序列。
8
词法分析器被用于分割输入了转换为令牌,而解析器用于从该令牌序列构造抽象语法树。
现在,您可以说令牌只是字符并直接使用解析器,但通常只需要展望一个令牌以确定接下来要做什么的解析器通常很方便。因此,在解析器看到它之前,词法分析器通常用于将输入划分为令牌。
词法分析器通常使用简单的正则表达式规则进行描述,这些规则按顺序测试。存在诸如lex
之类的工具,其可以从这样的描述中自动生成词法分析器。
[0-9]+ Number
[A-Z]+ Identifier
+ Plus
解析器,在另一方面,典型地通过指定一个语法说明。此外,还有一些工具,如yacc
可以从这样的描述中生成解析器。
expr ::= expr Plus expr
| Number
| Identifier
3
它们不同。
词法分析器将输入字符流作为输入,并生成令牌(又名“词法”)作为输出。
解析器将令牌(词位)作为输入,并生成(例如)表示语句的抽象语法树。
然而,这两者足够相似,不少人(尤其是那些从来没有写过任何类似编译器或解释器的人)将它们视为相同或更常使用“解析器”真正的意思是“词法分析器”。
1
据我所知,词法分析器和解析器在意义上是联合的,但不是确切的同义词。虽然许多来源确实使用它们作为类似的词法分析器(词法分析器的缩写)识别与输入语言相关的标记;而解析器确定令牌流是否符合所考虑语言的语法。
相关问题
- 1. 提取单词的同义词
- 2. 查找wordnet中单词的同义词
- 3. 获取单词的同义词
- 4. wikionary API - 单词的词义
- 5. 打印词类以及单词的同义词
- 6. 名词同义词词网
- 7. 单词的名词,动词,形容词等的单独列表
- 8. 查找多词词组的同义词
- 9. 需要自定义同义词替换文本中的单词
- 10. 如何在给定单词的单词袋词汇中获得单词的id?
- 11. 创建短语词组的单词云,而不是R中的单个单词
- 12. 简单单词 - 同义词模型,序列化属性还是关联?
- 13. 检索使用wordnet的单词的同义词为R
- 14. 在Python3与nltk如果某个单词是动词,如果某个单词是动词,名词.etc
- 15. 在java中查找单词的同义词和根
- 16. 列车数据的同义词单词英语与opennlp
- 17. 用字符串中的同义词代替单词
- 18. Solr - 包含多个单词的同义词
- 19. 使用wordnet获取单词的最佳同义词
- 20. 如何在我的模型中设置单词同义词?
- 21. 使用词网找到没有名词同义词或至少有一个名词同义词的词条
- 22. 查找特定单词后的单词
- 23. 生成与单词相关的单词
- 24. 查找单词游戏中的单词
- 25. Flex如何区分大写单词,小写单词和单词?
- 26. Marklogic值词典和单词词典
- 27. 获取Ruby字符串中特定单词后的单词吗?
- 28. 获取某个单词之前和之后的单词吗?
- 29. 使用Solr匹配包含相似单词的单词吗?
- 30. MySQL词+单词搜索
请注意,“词法分析器”有时也称为“标记器”或“扫描仪”。 – 2011-05-09 18:52:47
@谢谢,我不小心把错误写下来了。我的意思是“词法分析器是分词器的同义词”,所以你的评论其实就是答案。谢谢。 – 2011-05-09 19:00:47
:)不客气。 – 2011-05-09 19:04:51