yacc

    0

    1答えて

    私はCの文法を探していて、このリンクが見つかった問題はcとlexコードの文法がありますが、私は加算、乗算のようなセマンティクスは見当たりません。構文チェックがありますが、他のツールで実装されているセマンティクスはどこにあるのかについてはセマンティクスを記述することもできます。 私はセマンティクスを書くには小さなコンパイラを実装しようとしていますが、関数を使ってyaccで記述するのは良いですか?

    -1

    1答えて

    私は自分自身のミニ言語用のパーサーを構築しようとしています。それはYACC自身によってC++に翻訳されています。 問題は、YACCは入力の第2行から最初のトークンだけでなく第1行も読み取っていて、それを対応するルールと照合していますが、入力の最初の行でトークンのみを読み取る必要があります。対応するルールでそれを一致 私の入力ファイルは次のとおりです。 print "hello" a = 10

    0

    1答えて

    私はコンパイラとプログラミング言語の作り方を理解しようとしています。そして、そうするために、私は単なる加算と減算を行う単純な電卓を作成することを考えました。以下は、LexおよびYaccのファイルです。 calc.yaccファイル: %{ #include <stdio.h> #include <stdlib.h> extern int yylex(); v

    0

    1答えて

    私は文法の中でshift reduceの競合を解決できません。私は問題の出力を読むために-vを追加しようとしましたが、それはState 0に向かって私を導き、INTとFLOATはルール9によってvariable_definitionsに減らされると言います。私はこの衝突を見ることはできません。 %{ #include <stdio.h> #include <stdlib.h> %} %t

    0

    2答えて

    シフト/排除簡素化yaacファイルです:2シフト/競合を減らすがあり %token CONTEXT_ // the corresponding string is "context" %token CONTEXTREF_ //"contextref" %token IS_ //"is" %token ID_L //"id_l" %token ID_L1 //"id_l1" %to

    0

    1答えて

    最近lexとyacc(とflexとbison)が見つかりました。プログラムに文があるかどうかを調べるときにエラーが出ます。ここで は.lexファイルです: %{ #include <stdio.h> #include "1.tab.h" %} %% tweety|sylvester return NP; a|the return AR; cat|bird ret

    0

    1答えて

    私の元の.yファイルは、ある程度のシフト/リダクションと削減/削減の競合を引き起こします。 そこで、これらの競合を解消するためにいくつかのルールを変更しました。そして私は新しいバージョンと古いバージョンとの間の等価性を手動で検証することができます。 しかし、私は新しいバージョンが自動的に元のバージョンと同等であることを検証したいですか?どうやって?

    0

    1答えて

    を実行する場合:左の式が非ゼロの場合 (式)(式) ?右の式が実行されます。 Bisonの文法規則を使用して、どのように私がそれを行うことができるかの例を誰にでも教えてください。ここで は、これまでのところ、私が持っているものを示して私のバイソンコードのPIECです: %union{ int d; char *s; } %token <d>INTEGER %token <s>VARIA

    1

    1答えて

    %token DIGIT RETURN IDENTIFIER COLON COMMA ELSE IF NL KEYWORD BR READ WRITE WHILE EQUAL %start y2 %left '-' %left '+' %right '=' %% stmt1:KEYWORD IDENTIFIER X1 //for initialization. ; y2:stmt1