bnfc

    0

    1答えて

    Iは、各セクションは、単純な宣言のリストが続く[]の間に名前を持つ多くのセクションからなる設定ファイルを記述するこのBNFCファイルが comment "#"; rulse Boolean ::= "True" | "False"; Conf. Config ::= [Section]; //a config is a list of sections terminator Section

    5

    1答えて

    bnfcツールを使用して、lexer、parserなどのファイルを生成していました。これは正常に動作します。今度は、bnfcファイルを手動でコンパイルせずに、/srcというフォルダを乱雑にするファイルを多数生成する必要がなくなり、これを少しきれいにしたいと思っていました。 私は.cabalファイルのbuild-toolsフィールドにツールをリストし、extra-source-filesフィールドに

    0

    1答えて

    シンプルな命令型言語のために、haskellにインタプリタを書いてみたいと思います。 これを行うには、まずBNFCツール(http://bnfc.digitalgrammars.com/)用の言語の文章を書いた。それだけ、私はBNFCツールを実行し、提供されたスクリプトでそれをテストすることができます持つ EAdd. Expr ::= Expr "+" Expr ; EMinus. Expr

    0

    1答えて

    LBNFでC/C++関数の宣言に次のような形式(略称)を指定しようとしています(<sym>はoptionallity、[rule]もっとリスト): type ident ([type <id>]); 関数定義は次の形式を持っているが: entrypoints Program ; Program. Program ::= [TopDef] ; FnDef. TopDef ::= Type

    0

    1答えて

    なぜ次の文法はnat -> natを認識しませんが、(nat -> nat)を認識し、それをどのように修正できますか?宣言の順序を反転 TNat . Typ4 ::= "nat" ; TVoid . Typ4 ::= "<>" ; TProd . Typ3 ::= SumType; TProd . Typ2 ::= Typ2 "*" Typ3;

    0

    1答えて

    したがって、私はBNF-Convertor (BNFC)を使って文法を書いて、C++プログラムを解析しています。 C++プログラムは以下の通りです。 // a small C++ program #include <iostream> int main() { std::cout << "i"; return 0; } 私がこれについて書いたBNF文法は次のとおり

    0

    1答えて

    BNF Converterでパーサーを作成しようとしています。私が使っている文法は、a ::= trueとb ::= falseのようなものを許可します。だから私はこれを達成するためのトークンを作成しようとしています。これは私がこれまで持っているものです。 token BVAL ("true"|"false"); 私はこのようにそれを使用するように願っています: Exp ::= BVAL "|

    0

    1答えて

    BNFCでコンパイラを作成しようとしています。抽象構文木を生成するためにBNFCを使用するつもりです。しかし、私はそのためのエラーを取得していると私は理由を把握することはできません。そこには多くのドキュメントがないようです。 は、ここで私は取得していますエラーです:ここ Bad coercion in rule _. Prog ::= Block Bad coercion in rule _.

    0

    1答えて

    複雑な文法のためにC#でAST(抽象構文木)を実装していますが、この質問を簡単にするために、私は非常に単純な文法を使用します。 はこの文法を考えてみましょう: rules Expr ::= Term "+" Term | Term ; rules Term ::= Ident | Integer ; 私はbnfcを使用してパーサ/レクサを生成し、私はコードの一部を解