問題タブ [lemon]

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

lemon - Lemon は nonassoc の優先順位を正しく処理していますか?

Lemon パーサー ジェネレーターが nonassoc の優先順位で間違っているように感じます。私が見ている問題を示す単純化された文法があります。

次のような競合を含むレポートが生成されます。

equals を連想のままにすると、問題は解決します。nonassoc がルールを優先順位セットに入れないかのようです。その文法の Bison バージョンと比較すると、競合はありません。そして、割り当ては実際には非関連であるべきです。これを回避するために、それについて嘘をつきたくはありません。

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

parsing - Bison/YACC vs. Lemon vs. 標準入力

電卓をバイソンからレモンに変換しようとしています。

2 つのプログラムの動作がまったく異なる、標準入力に関する予期しない問題に遭遇しました。Bison バージョンでは、[Enter] を押すとすぐに結果が出力されます。Lemon バージョンでは、新しい式を入力して [Enter] を押すまで結果が表示されません。

この問題を説明するために、小さな Bison と Lemon の文法と Flex スキャナーを作成しました。これは Windows 7 で、Lemon、Bison 2.41、および gcc (tdm64-2) 4.8.1 の 2014 年 7 月バージョンを使用しています。

Bison バージョンでの簡単なセッション

バイソン版セッション

単純な式の後で [Enter] を押すと、結果がどのように返されるかに注目してください。

レモンバージョンの簡単なセッション

レモンバージョンセッション

2 番目の式を入力して [Enter] を押した後にのみ結果が返されることに注意してください (ctrl Z は、cmd.exe の入力の終わりを示します)。

私は何を間違えましたか?

Bison/Flex バージョン ソース

badd.l:

badd.y:

ビルドするには:

Lemon/Flex版ソース

ladd.l

ladd.y:

main.c:

ビルドするには:

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

ios - Lemon (および Core Foundation) を使用した JSON 解析

Lemon と Apple Core Foundation を使用して単純な JSON パーサーを作成しようとしています。

これまでのコードは次のとおりです。

このような単純なJSONで

メンバールールを超えることができません(その時点で、辞書は正しく設定されています)。

objectルールは呼び出されず、json ::= オブジェクトも同じことを行います!

私は愚かなことをしていますか?

どんな入力でも大歓迎です!

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

c++ - Lemon で生成されたパーサーでカスタム クラス メンバーが宣言されていないため、コンパイル エラーが発生する

私は Lemon パーサー ジェネレーターの使用方法を学ぼうとしており、学習プロジェクトを作成しました。しかし、ソースをコンパイルしようとすると、GCC から奇妙なエラーが発生します。テキストの転記の問題やタイプミスがあるようですが、見つかりません。C++11 標準を使用してコンパイルしています。ファイル「ログ」には、コンパイラの出力が含まれています。

私はコンパイルします

AST.h

文法.y:

レキシコン.l:

main.cpp

ログ:

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

parsing - カスタム トークン値で Lemon パーサーを使用する

私は古い文法をレモンに移植しており、すべての終端記号はヘッダー ファイルで既に定義されています。レモンによって parser.h で生成された値の代わりに、それらの値でそれらを使用したいと思います:それは可能ですか?
parser.h の上書きは完全に無用です。これは、内部で発生することのミラーにすぎず、一致する値が同じままになるためです。
(lemon は Bison と多くのコードを共有しているので、bison の解決策は、lemon の問題も解決すると思います)

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

parsing - レモンがすぐに端末を実行しないのはなぜですか?

flex と yacc を使用して小さなスレッド インタープリターを re2c と lemon に移動しています。すべてが機能していますが、リテラルです。

リテラルに関連付けられたアクションが yacc の場合のように実行できないのはなぜですか? 「1.0 end」を期待していますが、「0.0 end」を取得します

dspgrammar.y

main.c

メイクファイル

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

c - レモンを使用して変数を持つ式を処理する方法

私はそのようなプログラムを実装したいと思っています: それはいくつかの変数を含むいくつかの式を読み込みます. これらの変数は後で設定され、プログラムは最終結果を計算する必要があります ( SQL 準備済みステートメントのように)。

たとえば、式は のようなもので、とが後で設定され$foo + $bar + 2たときに結果を計算する必要があります。$foo$bar

ラジェルレモンで実装しようとしています。Ragelを使用して式を解析することを学びました。しかし、変数を処理して計算を行うためにレモンを使用する方法がわかりません。

助けてくれてありがとう。