3

宣言、算術、ブール、if、while ステートメントを含む ac のようなプログラムの 3 つのアドレス コードを生成しています。現在、私は算術式から始めています。テキストファイルからcのようなプログラムを読んでいます。

レックスコード:

parser.lex

Yacc コード:

parser.yacc

Cライクなプログラムを入力(test.txtの内容)

a=1+2/3;

次のようなメイクファイルがあります。

bison -d -v parser.y
flex  -o parser.lex.c parser.lex
gcc  -o cparser parser.lex.c parser.tab.c -lfl -lm 
./cparser

入力ファイルをコンパイルすると、次の出力が得られます。

t1=2/3/3
t2=1+2/3;+t1
a=1+2/3;=t2
Parsing Successful. The three address code is: 
syntax error
Successful parsing.
  • $1 $2 $3...などに希望の削減額が含まれていないのはなぜですか?
  • stderr 印刷構文エラーはなぜですか?
4

2 に答える 2