【问题标题】:BNFC is not parsing individual functionsBNFC 不解析单个函数
【发布时间】:2020-06-24 09:18:21
【问题描述】:

我有以下 BNFC 代码:

GFDefC. GoalForm ::= Constraint ;
GFDefT. GoalForm ::= True ;
GFDefA. GoalForm ::= GoalForm "," GoalForm ;
GFDefO. GoalForm ::= GoalForm ";" GoalForm ;

ConFr. Constraint ::= Var "#" Term ;

TVar. Term ::= UnVar;
TFun. Term ::= Fun ;

FDef. Fun  ::= FunId "(" [Arg] ")" ;
ADecl. Arg ::= Term ;
separator Arg "," ;

...

但是,下面的内容没有被解析

fun(X)

当它解析下面的那个时

x # fun(Y)

总而言之,它将函数解析为约束的一部分,但不是单独解析。 它应该解析它们。

谁能指出原因?

【问题讨论】:

    标签: bnfc


    【解决方案1】:

    你应该正确设置你的entrypoints

    当您成功解析x # fun(Y) 时,我假设您已将entrypoints 设置为Constraint 并使用生成的pConstraint 函数来解析您的表达式。然后,您可以将Constraint 的规则更改为

    ConNoVar. Constraint ::= Term ;
    ConFr.    Constraint ::= Var "#" Term ;
    

    或者,您可以将Term 添加到您的entrypoints 并调用pTerm 来解析您的函数术语。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 2015-08-16
      • 2021-07-13
      • 2021-08-24
      • 2013-03-21
      • 2010-10-02
      • 2013-11-04
      • 2021-12-02
      相关资源
      最近更新 更多