0

精简版:

在其他解释语言(Python、Ruby 等)和编译语言(C 系列、Java 等)中是否有类似于PHP 解析器标记的东西?

长版:

CPP Rocks 网站上,有一篇文章通过将语言的各种构建块分解为类别的图表来显示语言复杂性的视觉比较。Coffeescript 的图表如下所示:

在此处输入图像描述

我想使用解析器标记作为起点为 PHP 制作这样一个图表(以确保我不会错过任何东西,因为我很懒)。我想知道在其他解释语言(Python、Ruby 等)和编译语言(C 系列、Java 等)中是否存在与这些标记类似的东西。

迄今为止的发现:

4

2 回答 2

1

所有解析器都将输入变成标记。该语言可能会或可能不会显示这些标记是什么,当然,标记的实际含义和名称会有所不同,当然,由于不同的语言具有不同的语法、保留字集和其他结构,每种语言都会有一个稍微不同的令牌集。

这里的标记只是“语言规范中实际符号的命名表示”。例如,解析器会将单词break视为输入,并将其放入 tokenT_BREAK中。

对于您正在查看的图表类型,您需要知道不同的语言结构是什么,对它们进行分类,然后以图形方式显示它们——我不确定查看标记列表是实现这一目标的最佳方式。

于 2013-09-25T07:16:29.247 回答
-1

没有一种语言的标记列表之类的东西。标记是解析器的属性(更准确地说:它们是词法分析器和解析器之间接口的属性),而不是语言。解析相同语言的不同解析器可能使用完全不同的标记集。许多现代解析器是无词法分析器的,这意味着它们根本没有标记。

例如,在 Ruby 中,Melbourne(Rubinius 使用的解析器)使用的标记集与 RedParse/RubyLexer(各种项目使用)非常不同,RedParse/RubyLexer 再次使用与基于 ANTLR 的解析器使用的标记集截然不同钢中的 XRuby 和蓝宝石。

于 2013-09-25T10:08:40.667 回答