問題タブ [happy]

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 に答える
154 参照

haskell - Happy を使用した switch ステートメントの解析

だから、私はこのようなスイッチステートメントを含むコードを解析しようとしています

しかし、私は取得し続けます:

生成されたパーサーを実行すると。ここで奇妙なのは、「case」キーワードの2 番目のインスタンスでは失敗するが、最初の では失敗しないことです。なぜそれが世界であるでしょうか?

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

parsing - 文法の曖昧さ: なぜ? (問題は: "(a)" vs "(az)")

そのため、1 行のステートメントに対して非常に単純な文法を実装しようとしています。

Happy パーサー ジェネレーター (http://www.haskell.org/happy/) を使用していますが、何らかの理由であいまいな問題があるようです。

エラーメッセージは次のとおりです。「シフト/競合の削減: 1」

あいまいさは次の 2 行にあると思います。

例: "(a)" vs "(az)"

lexer は、2 つのケースに対して次のようになります。

私が理解していないのは、これが LL[2] パーサーでどのように曖昧になるかということです。

ここで役立つ場合は、ハッピー文法の定義全体を次に示します。

ありがとうございました!

0 投票する
5 に答える
5029 参照

parsing - パーサーコンビネーターを使用するのではなく、ハッピーのようなパーサージェネレーターを使用する利点は何ですか?

文脈自由文法の書き方と構文解析の方法を学ぶために、ツールを選びたいと思います。Haskellには、2つの大きなオプションがあります。文法の説明からパーサーを生成するHappyと、Haskellでパーサーを直接コーディングできる*Parsecです。

どちらのアプローチの(不)利点は何ですか?

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

haskell - Happyの%%は何ですか?

Happyを使用してパーサーを構築していますが、これがオンラインドキュメントであることに気付きました。

yaccのように、本当の理由もなく、ここに%%を含めます。

%%

たとえそれが些細なことであっても、理由があるに違いありません。誰かがそれが何であるか知っていますか?

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

parsing - "Internal Happy Error" のオーバーライド - notHappyAtAll

Happy を使用してパーサーを生成しています。

トップレベルよりも低いレベルで文法の一部に一致するトークンを与えると(ステートメントの一部ではない独自の式を与えるなど)、「内部ハッピー」を取得することがわかりましたエラー」ではなく、解析エラーです。

notHappyAtAll「Internal Happy Error」よりも優れたエラー メッセージを出力できるようにオーバーライドする方法はありますか? 明らかに、文法を更新するたびに自動生成されたパーサー ファイルを変更する必要があるためです。

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

parsing - Happy パーサーの不可解なエラー メッセージ

Haskell でHappyを使用して JavaScript パーサーを作成していますが、どんなに頑張ってもデバッグできないというエラー メッセージが表示されます。

コードは数千行に及ぶため、ここにすべてのコードを掲載することはできません。関連するビットを投稿しようとします。誰かが私を助けることができれば、私は非常に感謝しています!

このエラー メッセージは非常に長いので、ご容赦ください。ほとんどの部分を省略しましたHappyAbsSyn。それが助けになるなら、私は完全なエラーメッセージを提供することができます.

わかった?わかりましたので、最初に行ったのは、Parser.hs (Happy によって生成されたファイル) の 800 行目です。

action_90と定義されている:

これは、コードが何に対応しているかを理解しない限り、あまり意味がありません。コンパイル時に情報ファイルを生成するよう Happy に依頼しましたが、これは (私が思うに) 適切な部分です。

IDステートメントと関係があるようです。この点で、私は本当にかなり混乱しています。ここからどこへ行くべきかについて誰か提案がありますか? これを解決するには、抽象構文を確認する必要があると思います。これがその一部です。繰り返しますが、お役に立てば幸いです。

長くなってすみません。私はここで頭がいっぱいです。どんな助けや指針も素晴らしいでしょう。

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

javascript - Happyパーサーで正規表現を照合するにはどうすればよいですか?

Happyを使用してJavaScriptパーサーを作成していますが、正規表現に一致させる必要があります。正規表現を完全に解析するのではなく、文字列として保存するだけです。

私のASTの関連部分は次のようになります:

これは関連するハッピーコードです:

私の質問は、非終端記号をどのように定義する必要があるかということregexです。このような構造は正しいですか?

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

haskell - Happyでのシフト/競合の削減

if-then[-else] ケースを解析するための正しいルールを作成するにはどうすればよいですか? ここにいくつかの文法があります:

この文法は、次の式を正しく解析します。

ただし、コンパイルすると、シフト/削減の競合に関する警告が発生します。幸福へのドキュメントには、そのような競合の例が含まれています: http://www.haskell.org/happy/doc/html/sec-conflict-tips.html

示されている解決策は 2 つあります。1 つ目は、再帰型を変更することです (この場合の方法は明確ではありません)。2 つ目は、何も変えないことです。このオプションは私には問題ありませんが、相談が必要です。

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

haskell - 幸せ:対立を減らす/減らす

なぜこれが競合の削減/削減に関する警告を発するのか

しかし、次は大丈夫ですか?

0 投票する
4 に答える
420 参照

java - HaskellでJavaの構文強調表示を作成するには?

すぐに、Java 構文の強調表示を行うことになっている Haskell のプロジェクトを提示することを余儀なくされるでしょう。私はいくつかの調査を行い、Happy が解決策になる可能性があることがわかりました (yacc のようなパーサーであるため)。また、バイソンとパーセクについても言及されていました。私は Haskell が初めてなので、このプロジェクトを開始する方法がまったくわかりません。どんなヒントでも大いに役立ちます。

ありがとう!