antlr4

    1

    1答えて

    ANTLR C++ grammar fileを使用して、C++ソースコードの解析にANTLRを使用しようとしています。 private void parseCppFile(String file) throws IOException { String p1 = readFile(new File(file), Charset.forName("UTF-8")); System

    0

    1答えて

    IDの下にコメント行を追加するとOKですが、WSの下に1つ追加するとエラーが発生します。全体ファイルHello.g4は以下のとおりです。 /** * Define a grammar called Hello */ grammar Hello; r : 'hello' ID ; // match keyword hello followed by an identifier ID

    0

    1答えて

    に同じルールではなく別の位置でトークンをマッチング:中 in(name,(Silver,Gold)) は:機能です。 名前:IDです。 (シルバー、ゴールド):要素が「シルバー」で、「ゴールド」の文字列配列です。 パーザはIDとして常に混同され、文字列配列要素は同じ規則を持ちます。文字列に引用符や二重引用符を使用すると便利ですが、ここには該当しません。 また、述語はあまり役に立ちませんでした。

    1

    1答えて

    私は以下の文法を持っていて、ゆっくりと始めて、複雑な引数を移動しようとしています。 grammar Command; commands : command+ EOF; command : NAME args NL; args : arg | ; arg : DASH LOWER | LOWER; //arg : DASH 'a' | 'x'; NAME : [_a-zA-Z0-9

    1

    1答えて

    私はCソースファイルを取得し、すべての関数呼び出しの始めにいくつかのコードを挿入するプロジェクトに取り組んでいます。 Mainはファイルをロードして文字列に変換します。 Main.java String inputFilename = args[0]; byte[] bytes = Files.readAllBytes(Paths.get(inputFilename));

    0

    1答えて

    私はANTLR4で式を解析しようとしています。そのため私はビジターパターンを使用しており、抽象構文ツリーを作成しています。 結果は式など(この例のコードから削除したもの)にすることができます。訪問者は戻りタイプがantlrcpp::Anyであるため、抽象構文ツリーの要素はantlrcpp::Anyに変換されます。 antlrcpp::Anyからstd::shared_ptr<Expression>

    0

    1答えて

    antlrをantlr-3.3からantlr-4.7にアップグレードしようとしましたが、getTypeメソッドがTreeクラスに存在しなくなりました。ツリークラスのgetTypeの代替メソッドを使用して、ツリー解析のトークンタイプを取得することができますか? おかげ

    2

    2答えて

    を解析停止します。予想通り grammar Formula ; expr : <assoc=right> expr POW expr # pow | MINUS expr # unaryMinus | PLUS expr # unaryPlus | expr PERCENT # percent | expr o

    0

    1答えて

    ANTLR4とJavaを使用してコードインデントを作成しています。私は正常にレクサーとパーサーを生成しました。そして、私が使用しているアプローチは、生成された解析ツリーを歩くことです。 ParseTreeWalker mywalker = new ParseTreeWalker(); mywalker.walk(myListener, myTree); 自動生成* BaseList

    2

    3答えて

    私はコンパイルされた文法を持っており、それを使って入力シーケンスをXMLに変換したいと思っています。私のケースでは、非常に大きな文法を持っていますが、私のコードで各文法ルールを上書きしないようにしたいと思います。 混乱を避けるために例を使用します。私たちは、次の文法出力 解析ツリー に対応 <prog> <stat> A = <expr> 10 </e