LBNFでC/C++関数の宣言に次のような形式(略称)を指定しようとしています(<sym>はoptionallity、[rule]もっとリスト): type ident ([type <id>]);
関数定義は次の形式を持っているが: entrypoints Program ;
Program. Program ::= [TopDef] ;
FnDef. TopDef ::= Type
BNFCでコンパイラを作成しようとしています。抽象構文木を生成するためにBNFCを使用するつもりです。しかし、私はそのためのエラーを取得していると私は理由を把握することはできません。そこには多くのドキュメントがないようです。 は、ここで私は取得していますエラーです:ここ Bad coercion in rule _. Prog ::= Block
Bad coercion in rule _.
複雑な文法のためにC#でAST(抽象構文木)を実装していますが、この質問を簡単にするために、私は非常に単純な文法を使用します。 はこの文法を考えてみましょう: rules Expr ::= Term "+" Term
| Term ;
rules Term ::= Ident
| Integer ;
私はbnfcを使用してパーサ/レクサを生成し、私はコードの一部を解