問題タブ [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 投票する
3 に答える
416 参照

java - 文法のあいまいさへの対処(ポーカーファイルの解析)

私は現在、独身プロジェクトの一環としてポーカーハンドヒストリーパーサーに取り組んでいます。私は過去数日間いくつかの調査を行っており、いくつかの優れたパーサージェネレーターに出くわしました(プロジェクト自体はJavaでコーディングされるため、JavaCCを選択しました)。

ハンドヒストリーの文法は非常に基本的でわかりやすいものですが、プレーヤーのニックネームに使用できる文字のセットが原因で、あいまいさの問題があります。

次の形式の行があるとします。

トークンmyNicknameには、空白だけでなく任意の文字を含めることができます。これは、との両方(1500 in chipSeat 5:有効なニックネームであることを意味します。これは、最終的にあいまいさの問題につながります。長さ(4〜12文字)を除いて、プレーヤーのニックネームに制限はありません。

プレーヤーのニックネーム(たとえば、この特定の場合の座席位置とチップの量)とともにいくつかのデータを解析して保存する必要があるので、私の質問は、ここでの私のオプションは何ですか?

私はJavaCCを使用してそれをやりたいと思っています。

現在は機能しません(前述の問題のため)

また、GLRパーサー(あいまいな文法を処理しているようです)も検索しましたが、Bisonを除いて、ほとんどが放棄されているか、文書化が不十分であるようですが、Java用のGLRパーサーはサポートされておらず、複雑すぎて操作できない可能性がありますとにかく(あいまいさの問題は別として、私が述べたように、文法自体はかなり基本的です)

または、文字列を自分でトークン化することに固執し、indexOf(), lastIndexOf()etcを使用して必要なデータを解析する必要がありますか?それがあまりにも醜い私見であり、いくつかのケースを見逃すかもしれないので、それが残っている唯一のオプションである場合にのみそれを選びます(それは間違った構文解析につながるでしょう)

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

java - JavaCC でのイプシロンの定義

JavaCCでイプシロンを定義するにはどうすればよいですか?? 私は何かをしようとしています

しかし、うまくいきません。

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

token - JavaCC のトークン: シンボルが 1 行で 1 つであることを確認してください

"{" は 1 行に 1 つである必要があります。したがって、それを認識するトークンを使用する必要があります。これは正しい例です:

また

そして、これは間違った例です:

また

次に、次のようなトークンがあります。

しかし、記号「{」を1つ以上の「\n」の間に正確に入れる方法が思いつきません。そして、それを認識した後、正確に書く必要があります:

私が試してみると:

これは実行されますが、入力にあったように非常に多くの「\n」が書き込まれます。

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

string - JavaCC による文字列の解析

別のトークンと誤って一致させることなく、JavaCC を使用して文字列を解析する良い方法を考えようとしています。これらの文字列には、スペース、文字、数字を含めることができます。

私の識別子と番号トークンは次のとおりです。

私の現在の文字列トークンは次のとおりです。

理想的には、引用符の中にあるものだけを保存したいと思います。変数と値を実際に保存する別のファイルがあります。そこの引用符を削除する必要がありますか?

私はもともとパーサーファイルに次のようなメソッドを持っていました:

しかし、ご想像のとおり、これにはスペースや数字を使用できませんでした。変数名などの識別子については、文字のみを許可したいと考えています。

そのため、文字列リテラルをキャプチャする方法についてアドバイスをお願いしたいと思います。特に、次のような文字列を作成したいと思います。

私の構文で有効です。

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

string - JavaCC の英語以外のトークン

私はすでにこのリンクを試しました: Print in JavaCC。しかし、なんらかの理由で、その答えはうまくいきませんでした。テキストをコピーしてファイルに貼り付けて実行しましたが、µたとえば と入力しても何も出力されませんでした。

文字列トークンで非英語を使用できるようにしたいと考えています。テスト目的のためだけに、現在私は持っています:

パーサーを実行して を含むファイルをフィードするとá, é, í, ó, ú、たくさんの疑問符しか表示されません。

自動生成される char ストリーム ファイルを変更する必要があると読んだことがありますが、よくわかりません。

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

java - JavaCCへのJava正規表現

次の文字列(*)があり、JavaCCで解析する必要があります。

初期文字列:(*)

次の部分文字列を抽出する必要があります:

「[step」という単語なしで抽出する必要があります。同じ単語( "[step")を入力ストリームに保持します。

Javaの通常の式を使用する場合簡単ですが、JavaCCを使用して同じ結果を取得するためのソリューションが必要です

Javaでは、次のような通常の表現がありますSPECIAL_STEP=[^=]*(?=\r?\n\[step))

今JavaCCでも同じことをする必要がありますが、JavaCCで前向きな先読みができるかどうかはわかりません。

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

java - JavaCC: 一般的な単語を含むトークンの処理方法

次のようなソースコードのパーサーを作成しようとしています:

...そして、以下は私が定義した文法です:

問題は、パーサーがトークン (「コード テーブル」) を正しく識別することですが、トークン CODE_TAB_BEGIN (つまり「コード」) に既に含まれている単語が含まれているため、トークン IDENT (「code_table_name」) を識別しません。パーサーは、「コードの後に​​無効な文字 _ が続いている」と文句を言います...

そうは言っても、パーサーを正しく機能させるために何が欠けているのか疑問に思っています。私は初心者で、どんな助けも本当に感謝しています;-)

ありがとう、j3d

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

regex - JavaCC 行頭

JavaCC は '^' のような改行正規表現をサポートしていますか?

私はこのようなトークンを持っています

次の正規表現のみに一致させたい

次のことを試しましたが、どちらも機能しません

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

regex - 特定の文字列を除くすべての文字列に一致するJavacc正規表現

これらの文字列を除いて、 にでも一致する正規表現は何ですか: =>|

javaccに精通している場合は、ANYTHING以下に示すようにトークンを定義しようとしています。

ありがとう

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

javacc - 解析用のJavacc'

私はCFGのセットのパーサーを書いています。(注:RHSは大文字のみにすることができます)

/*宣言などを無視します。これがコードの主要部分です*/

これは明らかにいくつかのエッジケースを見逃しました。

A => A | a | D E => e

それで、私は何を間違えましたか?