lalr

    1

    2答えて

    TL; DR VERSION:以下をサポートするパーサージェネレータがあります:いくつかのルールが縮小されたとき(私はLALR(1)パーサと仮定します)、縮小は実行されませんパーザはこのルールの値を使用して入力を別のコードに置き換え、そのコードを解析します。必要に応じて繰り返します。コードは「私は++」とルールは「exprのPOST_INCR」であるのであれば、私は、多かれ少なかれを行うことができ

    17

    3答えて

    C#とJavaの文法がLALR(x)であるのだろうか?はいの場合、xの値は何ですか? 編集:ジャワの現在のリリースを解析する可能性のあるLALR(x)のパーサがあり : は本当の答えを受け入れた後、私はこの方法でQを変更することをお勧めだと思います(バージョン7)またはC#(バージョン4)?はいの場合、xの値は何ですか?

    -2

    1答えて

    は、私は他の人の間で、次の構文を持つ言語のためのBisonパーサを書いています: 自己派遣:[identifierarguments] 派遣:[expression。 identifierarguments] 文字列スライシング:expression [expression、expression] - Pythonに似ています。 argumentsはカンマで区切られた式のリストです。空の場合もあり

    1

    1答えて

    jison(http://zaa.ch/jison/docs/)という単純なパーサを説明文に記載して書こうとしました。 %lex %% [\s\n\t]+ return 'TK_SPACE'; [0-9]+("."[0-9]+)?\b return 'TK_NUMBER'; [a-zA-Z]+([a-zA-Z0-9]+)?\b return 'TK_WORD'; <<EOF>

    0

    1答えて

    現在、Visual BasicのようなLALR(1)文法を書いていますが、この特定のシフト/リダクションの矛盾に直面しています。 文法の問題の部分は、(明確化のためにEDIT 1及びEDIT 2を参照してください)である。 Expression : IndexExpression | /* other expressions */ IndexExpression

    12

    2答えて

    私はlex/yaccを使用していましたが、今ではANTLRに切り替えようとしています。主な関心事は、ANTLRはLALRであるyaccとは違って、LL(*)パーサーであるということです。私はボトムアップを考えるのに慣れており、LL文法の利点が何であるか正確には分かりません。 LL文法は理解しやすく、最近普及していると言われています。しかし、LRパーサはより強力であると思われる。 LLパーザは左回帰

    0

    1答えて

    私はflexとbisonを用いた小型のコンパイラを作るしようとしていますが、私はすべてのルールのアクションを与えることをどのようになっていなかったためにアクションを与える方法 私の文法は次のようである: %union{ std::string *s; }; %start program %type <s> expr %token <s> KEYWORD %to

    0

    1答えて

    現在、Decaf(プログラミング言語)文法の一部を実装しています。ここでバイソンコードの関連するスニペットは次のとおりです。 type: INT | ID | type LS RS ; local_var_decl: type ID SEMICOLON ; name: THIS | ID | name

    6

    1答えて

    これは実際的な問題よりも「原理的に」問題のほうが多いです。 Yaccがプロダクションを減らし、定義されているレクサーから新しいトークンを読み込む順序です。それはのようなプロダクションのセットが指定されると、単一のものにINTEGER BEGIN INTEGER_VALUEを低減する前に、 INTEGER_BEGIN INTEGER_VALUE LESS_THAN INTEGER_BEGIN

    0

    1答えて

    私は現在、言語を解析するのにhappyを使用していますが、パーサーがLALRパーサーであると言う以外はパーサーとは関係ありません。文法の抜粋は次のとおりです。 ArithExpr -> ArithExpr + ArithExpr ArithExpr -> (ArithExpr) ArithExpr -> ... BoolExpr -> ArithExpr == ArithExpr Boo