【问题标题】:Does ANTLR provide semanticsANTLR 是否提供语义
【发布时间】:2012-04-14 21:05:45
【问题描述】:

我目前正在使用来自 ANTLR 网站的 Python 2.5 示例。我实际上想知道语法是否也已经产生语义。如果没有,我可以做什么或我可以使用什么(工具)在用 ANTLR 解析它后为 python 生成语义?

【问题讨论】:

    标签: java python compiler-construction antlr semantics


    【解决方案1】:

    没有工具可以生成语言的语义,这是你必须自己实现的东西。

    既然你已经解析了 Python 代码,你可以先做一些必要的处理,再次将其输出为 Python 代码,并使用 Python 语言的现有实现来执行。

    【讨论】:

    • 我完全不知道我将如何做语义,你能建议我可以用来创建语义的任何资源吗?
    • Python 语言参考中描述了该语言:docs.python.org/reference 这是学习 Python 语言语义的最佳选择。
    【解决方案2】:

    ANTLR 处理解析,但不处理语义;毕竟,它是一个解析器生成工具。如果您添加了语义,您将拥有一个完整的 python 实现(模充实库)。

    【讨论】:

      【解决方案3】:

      ANTLR 允许您根据与语法规则相关的操作来指定语义。对于简单的任务,这可能很方便,但对于较大的语法,您通常所做的只是生成一个 AST(抽象语法树),即您解析的内容的表示,它比非常长的字符串更方便在程序中处理。

      如果没有看到代码,很难说您正在使用的示例中是否包含或包含多少;-)

      【讨论】:

      • import_as_name:姓名(姓名)? ;这是语义样本吗?
      • 不,这是一个语法规则,即如何形成正确程序的描述。语义将是找到import 语句中提到的模块并开始从中读取指令的代码。
      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多