私はBisonとパーサを書いています。私は次の警告を受け取ります。私は、私は彼らと一緒に見つかったすべてのポストので、それらを取り除くための方法を検索するには、Googleを使用してきたが、かなり多く、彼らは(それらを修正するかどうかははるかに少ない)を意味するもので手ぶらで出ているBison文法の警告
fol.y:42 parser name defined to default :"parse"
fol.y:61: warning: type clash ('' 'pred') on default action
コンパイルエラーがあり、それらの警告は処理されません。誰かが私に彼らが何を意味し、どのように修正するか教えてもらえますか?関連するコードは以下の通りです。 61行目が最後のセミコロンです。私はそれが信じられないほど冗長なので、文法の残りの部分を切り捨てます。
%union {
char* var;
char* name;
char* pred;
}
%token <var> VARIABLE
%token <name> NAME
%token <pred> PRED
%%
fol:
declines clauses {cout << "Done parsing with file" << endl;}
;
declines:
declines decline
|decline
;
decline:
PRED decs
;
%start parseを使用した例はありません(どこに入れるべきか分からず、一番上に置くだけでglibcエラーが発生します)。他の警告については、エラーは発生しませんでした。 – user381261
'%token'を'%token'行の後ろに置いていますが、開始規則も文法の最初の規則である必要はありません。しかし、その警告がどのように生成されたのかわからないので、簡単には解決できません。同様に、他の問題もあります。あなたは問題を残しながら文法をトリミングして少し熱心でした。上記のコードでは、 'clauses'と' decs'の両方が使われますが、 'トークンとして定義されておらず、ルールもありません'。ルール 'decs:NAME;'と 'clauses:VARIABLE;を追加することは問題の診断に役立ちません。 'bison'は警告なしで文法をコンパイルします。 –