1

Linux ubuntu vmPlayerで動作するbison-flexプロジェクトがあり、何らかの理由で降りることができないという警告があります..これは私のファイルの始まりであり、私のプログラム(extra.yはbisonファイルです)は開始します「行」で:

%{   
   #include <stdio.h> 
   #include <stdlib.h>  
   #include <string>
   #include <string.h>
#include <iostream>
   #include <map>   
   #include <math.h>
   #include <algorithm>
   int yylex();   
   void yyerror(const char*)       
   char dollarOrWave=' ';
%}

%left OR 
%left AND
%union {
int     int_val;
char*   str_val;
}                         //THIS IS LINE 70 !!

%token<int_val> T_INT              
%token<str_val> STREXP
%type<int_val> expr   
%type<str_val> stringExp
%start lines

%%
lines:            
    line         { }//checkDollars(); }//checkDollars(); }
| lines line     { checkDollars(); numStringVarsFlag=0; }
;

警告:

extra.y:70 parser name defined to default :"parse"

私が見た検索:バイソン文法の警告 ですが、それでも警告が表示されます.. ..HELP ??

4

3 に答える 3

1

を使用していませんbison。を使用してbison++います。それは違いを生むので、質問でそれを明確にする必要があります。

表示される警告メッセージは では正常ですbison++。パーサー クラス名を明示的に宣言することで回避できます。

からman bison++(ドキュメントが正しくインストールされていると仮定して):

%name parser_name
このパーサーの名前を宣言します。C++ クラス名のユーザー、および多くの名前を一意にするためのユーザー。デフォルトは解析です。%unionand%defineまたは never の前に指定する必要があります。

于 2016-12-12T17:09:51.397 に答える