問題タブ [javacc]

For questions regarding programming in ECMAScript (JavaScript/JS) and its various dialects/implementations (excluding ActionScript). Note JavaScript is NOT the same as Java! Please include all relevant tags on your question; e.g., [node.js], [jquery], [json], [reactjs], [angular], [ember.js], [vue.js], [typescript], [svelte], etc.

0 投票する
1 に答える
1532 参照

parsing - Java でのラテックスのような言語の解析

Latex に似た単純な言語用のパーサーを Java で作成しようとしています。つまり、その間にいくつかの \commands[with]{some}{parameters} を含む多くの非構造化テキストが含まれています。\\ のようなエスケープ シーケンスも考慮する必要があります。

私は JavaCC でそのためのパーサーを生成しようとしましたが、JavaCC のようなコンパイラ-コンパイラは高度に構造化されたコード (汎用プログラミング言語に典型的) にのみ適しており、乱雑な Latex のようなマークアップには適していないようです。これまでのところ、低レベルに進んで独自の有限状態マシンを作成する必要があるようです。

だから私の質問は、ほとんど構造化されていない入力を解析する最も簡単な方法は何ですか?

編集: 有限状態マシンで低レベルに移行することは困難です。これは、Latex コマンドをネストできるためです。

0 投票する
2 に答える
1673 参照

python - JavaCC ソースから Python 言語でパーサーを生成しますか?

???正確にはわからないので、タイトルのことを意味します。状況を説明しましょう。

私はコンピュータ サイエンスの学生ではありません。また、コンパイラ コースを受講したこともありません。今まで私は、コンパイラーを書いている言語が何であれ、コンパイラーのパーサー・コンポーネントを書かなければならなかったので、コンパイラー・ライターやコンパイラー・コースを受講した学生は優れていると思っていました。簡単な仕事じゃないですよね?

私は情報検索の問題を扱っています。希望するプログラミング言語は Python です。

Parser Nature: http://ir.iit.edu/~dagr/frDocs/fr940104.0.txtはサンプル コーパスです。このファイルには、XML スタイルのマークアップを含む約 50 のドキュメントが含まれています。(上記のリンクで見ることができます)。<DOCNO> FR940104-2-00001 </DOCNO>&のような他のいくつかの値を書き留める必要があり、削除する必要があるいくつかのさまざまなタグと、無視する必要がある多くのコメントといくつかの文字エンティティを含むドキュメントの部分<PARENT> FR940104-2-00001 </PARENT>にインデックスを付けるだけで済みます。ブラウザーや適切な XML ドキュメントによってレンダリングされることを意図していないことがわかっているのに、なぜコーパスにこのようなものが含まれているのかわかりません。<TEXT> </TEXT><!-- -->&hyph; &space; &amp;

Python XML パーサーを使用して、目的のテキストを抽出することを考えました。しかし、少し検索した後、ここで使用している同じコーパスのJavaCC パーサー ソース コード (Parser.jj)を見つけました。JavaCCに続いて Compiler-compilerをざっと調べてみると、結局のところ、コンパイラの作成者は思ったほど優れていないことがわかりました。Compiler-compiler を使用して、目的の言語でパーサー コードを生成します。ウィキは、コンパイラコンパイラへの入力は入力が文法(通常はBNF)であると言います。これは私が迷っているところです。

  1. Parser.jjは文法 (JavaCC と呼ばれるコンパイラー コンパイラーへの入力) ですか? それは間違いなくBNFではありません。この文法は何と呼ばれますか? なぜこの文法には Java 言語があるのですか? 普遍的な文法言語はありませんか?
  2. コーパスを解析するための python パーサーが必要です。Parser.jj を翻訳して Python と同等のものを取得する方法はありますか? はいの場合、それは何ですか? いいえの場合、他にどのような選択肢がありますか?
  3. ひょっとして、このコーパスが何かわかる人はいますか?その元のソースはどこですか?私はそれについてのいくつかの説明を見たいと思います。という名前でインターネット上で配布されていますfrDocs.tar.gz
0 投票する
1 に答える
697 参照

java - JavaCC パーサーが 2 文字未満のトークンを解析しないのはなぜですか?

私は、BBcode を解析する必要がある JavaCC パーサーに取り組んでいます。

私の Javacc ソース コード: patebin.com (Junit テスト: here )

ソースコードの種類は機能しますが、単一文字のトークンを受け入れたくないため、複数の文字列のみが認識されます。

次の文字列を解析します。

"test[b]bold[/b]nothing[b]bold[/b]after"

だがしかし:

"t[b]bold[/b]nothing[b]bold[/b]after"

私はここでちょっと迷っています。どんなヒントでも歓迎します。

0 投票する
2 に答える
1503 参照

java - JavaCCでオプションのオープン/クローズタグを一致させる方法は?

JavaCC構文は、これらの種類の行を解析できる文法を実装します。

JavaCCパーサーはすべての行を解析する必要がありますが、正しいタグ付け動作と誤ったタグ付け動作を区別する必要があります。

正しいタグは1行目のようなもので、開始タグと終了タグがあります。タグが一致すると、太字のテキストが出力されます。

正しくないタグは、行の2と3のようなもので、一致する開始タグまたは終了タグがありません。これらが発生すると、そのまま出力に書き込まれ、タグとして解釈されません。

以下のJavaCCコードを試しました(LOOKAHEAD = 999999)。問題は、この構文は常にbold ()ではなくinvalidTag()としてすべてに一致することです。可能な限り、JavaCCパーサーがbold()と一致することを確認するにはどうすればよいですか?

0 投票する
2 に答える
1433 参照

java - JavaCC および SKIP 命令のパーサー

JavaCC を使用して複雑なパーサーを構築しています。ある時点で、文法内の目的のトークンまで、表示されるすべての文字をスキップしたいと思います...たとえば、次のようにしましょう

/* bla bla bla bla bla bla bla bla */ => 次のような文法を定義したい

<OPEN_COMMENT> SKIP ~[] until <CLOSE_COMMENT>「bla」が通常のトークンでも真であってほしい

ご協力いただきありがとうございます

0 投票する
1 に答える
987 参照

parsing - javacc で特定の行数を解析する

解析したい特定の形式のファイルがあります。このファイルには、それに続く行数を指定する行に数字があります。

ファイルからの抜粋例:

数値 (この例では 3) を読み取り、次の 3 行のみを読み取りたいとします。行が少ないか多い場合は、エラーを生成します。javaccでこれを行うにはどうすればよいですか?

ありがとうございました

0 投票する
1 に答える
2751 参照

java - JavaCC / JJTreeを使用してトークンを保存するにはどうすればよいですか?

あるタイプのDSL用にJJTree(JavaCC)構成を作成しましたが、これは特定の形式のファイルを正常にトークン化し、要求されたときにASTをダンプします。

問題は、現在トークンを保存していないため、ツリー内の各ノードが空であるということです(例を理解できません)。

これが私の.jjtファイルの一部です:

ルートノードにSection1、Section2への参照とSection3への参照のリストを保存したいと思います。Section3ノードに識別子とヘッダーブロックを保存し、詳細ブロックのリストを保持してほしい。

私のfill.jjtファイルは数百行ですが、これら2つのセクションで理解できれば、JJTreeがどのように機能するかを理解できると思います。JJTreeの使い方を教えてください。

ありがとう。

0 投票する
1 に答える
330 参照

java - JavaCC でテキスト ブロック内のトークンを処理するにはどうすればよいですか?

キーと値を次のように定義できる DSL の単純な側面があります。

この例で必要な 3 つのトークン (値の部分) は次のとおりです。

  • ValueLiteral == これは私のものです
  • ValueReference == $REF{便利}
  • ValueLiteral == 複数行など....

値のルールを次のように定義しました。

複数行の文字列型の TOKEN 定義は次のとおりです。

私の問題は、複数行の文字列トークン タイプが '$REF{' 文字の文字シーケンスも消費することです。

この複数行の文字列を変更して、エスケープされていない "$REF{" に遭遇したときに文字の消費を停止するようにします (ただし、"\$REF{" シーケンスを超えて読み続けます)。

どんな援助でも大歓迎です。

0 投票する
0 に答える
135 参照

html - javacc、dir/x/s から HTML に変換

dir/x/s 言語から html に翻訳したいと思います。

私は Analyzer.j を持っています:

ソースコードは次のとおりです。

HTML言語での結果は次のようになります。

あるコードを別のコードに解析するにはどうすればよいですか? そして、html コードをファイルに保存します。

0 投票する
2 に答える
746 参照

warnings - JavaCC:警告が多すぎます

JavaCCバージョン5.0を使用しています。Eclipseガリレオで。

しかし、jjファイルでオプション「static = true」を設定すると、生成されたTokenManagerファイルには、「SimpleCharStream型の静的メソッドreadChar()は静的な方法でアクセスする必要があります」などの多くの警告があります。また、jjファイルからのすべてのインポートはTokenManagerにコピーされ、未使用のフラグが付けられます。これを防ぐオプションはありますか?

この問題はJavaCCv4.1で修正されたようですが、なぜまだこれに直面しているのですか?