問題タブ [grammar]
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.
c - 文法の左再帰は競合を引き起こします
Bisonの文法全体を通して、私は右再帰を使用しています。最初にスタック全体を構築する必要がないため、左再帰の方が優れていることを読みました。
しかし、それらのいずれかで左再帰に切り替えようとすると、常に多くの競合が発生し、その理由がわかりません。
右の代わりに左の再帰を使用すると競合が発生する一般的な例を誰かに教えてもらえますか(右の再帰が競合を引き起こさない場合)。次に、そのような競合を修正するために左に切り替えるときに何をする必要がありますか。基本的な例は、自分の文法を修正するだけでは不十分だと思います。
編集:
しかし、私の理解は完全ではないので、とにかく特定の例を含める必要があると思います:-)「listseparatorcommand」を「commandseparatorlist」に変更すると競合が解決します。
programming-languages - 多くのプログラミング言語が変数名の*後に*型を置くのはなぜですか?
Go FAQ でこの質問に出くわしましたが、しばらくの間私を悩ませていたことを思い出しました。残念ながら、答えが何を目指しているのか、私にはよくわかりません。
ほとんどすべての非 C ライク言語では、次のように変数名の後に型を置くようです。
純粋な好奇心から、これはなぜですか?どちらかを選択する利点はありますか?
xml - Generating an XML path from a set of attributes
I have a set of XML documents that all share the same schema. (They're SAPI grammars with semantic tags, if that matters.) I can use the documents to match text strings, returning a set of attributes with known values.
My problem is that I'd like to take a set of attribute values and generate a string from the grammar that (when submitted to the grammar) would produce the same set of attribute values. A further complication is that different grammars have the tags in different order (the grammars are for different natural languages), so I can't do a straightforward tree walk.
Does anybody have a good approach to this problem?
EDIT: Here's an example set of grammars:
Grammar 1 (English):
Grammar 2: (German)
What I want to do is to specify "NumberCommand = 5" and get "choose 5" from the English grammar, and "funf klicken" from the German grammar.
grammar - flex と yacc で作成したプログラムで構文エラーが発生するのはなぜですか?
簡単な文法を認識するプログラムを作りました。有効なステートメントであると思われるものを入力すると、エラーが発生します。具体的には、入力すると
int a;
int b;
うまくいきません。int a; と入力した後 プログラムが反響します。何らかの理由で。次に、int b; と入力すると、構文エラーが発生します。
lex ファイル:
yacc ファイル:
grammar - flex から yacc にリテラルを返す方法は?
私の yacc ファイルには、次のようなものがあります。
ID、NUM、INT、および VOID は flex から返されるトークンであるため、yacc はそれらを問題なく認識します。問題は、上記に「[」や「;」のようなものがあることです。これらが flex によって認識された場合、yacc には何を返す必要がありますか?
grammar - flex/yacc で作成したプログラムが常に識別子を認識しない
簡単な文法を認識するプログラムを作りました。有効なステートメントであると思われるものを入力すると、エラーが発生します。具体的には、識別子から始めると、自動的に構文エラーが発生します。ただし、「int」が前に付いている場合、識別子を使用してもエラーが発生しないことに気付きました。a が識別子の場合、「int a;」と入力すると これで結構です。しかし、「a = 3」と入力すると、エラーが発生します。a を単独で入力すると、エラーが発生します。
lex ファイル:
yacc ファイル
syntax - 私の文法の何が問題になっていますか
私はyaccパーサーに以下を入力しようとしています:
yaccファイルで定義されている内容によれば、私には有効に見えますが、返された後に「構文エラー」メッセージが表示されます。何故ですか?
yaccファイル:
grammar - この yacc コードにシフト/リデュース エラーはありますか?
shift/reduce の競合があるというメッセージを yacc から受け取りました。yacc ファイルのこの部分から来ていると思います。
競合が見えますか?どうすれば修正できますか?
scala - 文法、Scalaパーサーコンビネーター、オーダーレスセット
さまざまな「コマンド」文字列を取り込むアプリケーションを作成しています。コマンドをトークン化するためにScalaコンビネータライブラリを調べてきました。多くの場合、「これらのトークンは順序のないセットであるため、任意の順序で表示でき、一部は表示されない可能性があります」と言いたいことがあります。
文法に関する私の現在の知識では、シーケンスのすべての組み合わせをそのように定義する必要があります(疑似文法)。
だから私の質問は、tokenA-Cがユニークであることを考えると、文法を使用して任意の順序のセットを定義するより短い方法はありますか?