引用Yacc中具有相同名称的生产中的多个非终端

  • 本文关键字:生产中 终端 Yacc 引用 ml-yacc
  • 更新时间 :
  • 英文 :


让我们假设我有生产:

Expression                             // These are my semantic actions
: Expression PLUS_TOKEN Expression ( create_node(Expression, Expression) )
| SimpleExpression                 ( SimpleExpression ) (* Returns a node of type expression *)

请注意,在我的顶级产品的语义操作中,我无法分辨哪个表达式是哪个。如何引用左右表达式?如果在同一个产品中出现三个或多个"Expression",该怎么办?

参考:http://www.smlnj.org/doc/ML-Yacc/mlyacc002.html

根据ML Yacc文件,我们用以下符号表示非终端:

{non-terminal}{n+1}

使得n是符号左边的非终端的出现次数。如果n等于1,那么我们可以使用非终端名称。

因此,上面的例子看起来是这样的:

Expression                             // These are my semantic actions
: Expression PLUS_TOKEN Expression ( create_node(Expression1, Expression2) )
| SimpleExpression                 ( SimpleExpression ) (* Returns a node of type expression *)

相关内容

  • 没有找到相关文章

最新更新