Xcode 在mac os中编译lex和yacc时出错

Xcode 在mac os中编译lex和yacc时出错,xcode,macos,flex-lexer,yacc,lex,Xcode,Macos,Flex Lexer,Yacc,Lex,我正在开发一个lex和yacc程序,在我的Desive MAC OS上 当我尝试执行以下操作时: gcc sample.tab.c lex.yy.c -ly -ll 它向我展示了很多错误,最后 致命错误:发出的错误太多,现在停止[-ferror limit=] 出现一些错误: ./sample.tab.h:44:6: error: expected identifier if = 260, ^ ./sample.tab.h:46:6: error: expected i

我正在开发一个lex和yacc程序,在我的Desive MAC OS上

当我尝试执行以下操作时:

gcc sample.tab.c lex.yy.c -ly -ll 
它向我展示了很多错误,最后

致命错误:发出的错误太多,现在停止[-ferror limit=]

出现一些错误:

./sample.tab.h:44:6: error: expected identifier 
     if = 260,
     ^
./sample.tab.h:46:6: error: expected identifier
     else = 262,
     ^
./sample.tab.h:48:6: error: expected identifier
     while = 264,
     ^
./sample.tab.h:53:6: error: expected identifier
     return = 269,
有人能帮我吗


谢谢。

您不能将C关键字用作非终端的名称。这就是为什么通常使用ALL-CAPS作为非终端名称的原因。所以您的flex文件可能包括

while    { return WHILE; }
return  {  return  RETURN; }
如果您是野牛,您可以声明别名:

%token WHILE "while"
%token RETURN "return"
允许您编写如下规则:

whileStatement: "while" '(' expression ')' statement
请这里没有足够的信息。