这个野牛档案有什么问题?
21124-hw2.y:冲突:148次/减少,1减少/减少 错误就是这个。哪里暧昧? 这个野牛文件连接flex文件,这些所有令牌也都是在flex中创建的。 我没有写这个代码包括部分和主要部分。正如你在评论中看到的那样,问题就是问题。我给出了这些部分的优先权,但它没有用。
%token tFOR tIN tIF tFUNCTION tSEMICOLON tLPAR tLBRKT tSTAR tPLUS tLBRACE tLT tCOLON tINT tREAL tSTRING tWHILE tVAR tELSE tEQCHECK tCOMMA tRPAR tRBRKT tRBRACE tGT tEQ tMINUS tNOT tIDENT
// these are tokens which i getting in flex
%left '+' '-' '!'
%left '*' "=="
%left '<' '>'
%left ';'
%left '='
%left '(' ')'
%left '{' '}'
%left '[' ']'
%left ',' ':'
// these re the prirotiries
%%
// down below all thing grammer part.
prog : statementList
;
statementList : statementList statement
| statementList ';' statement
| statement
;
statement : assign | if | expr | statementBlock
| while | for | functionCall | functionDeclaration
;
assign : tIDENT '=' expr
| tVAR tIDENT '=' expr
;
if : ifPart elsePart
;
ifPart : tIF '(' expr ')' statementBlock
;
elsePart : tELSE statementBlock
|
;
while : tWHILE '(' expr ')' statementBlock
;
for : tFOR '(' tIDENT tIN expr ')' statementBlock
| tFOR '(' tVAR tIDENT tIN expr ')' statementBlock
;
functionDeclaration : tFUNCTION tIDENT '(' exprList ')' statementBlock
| tFUNCTION tIDENT '(' ')' statementBlock
;
statementBlock: '{' statementList '}'
;
functionCall : tIDENT '(' exprList ')'
| tIDENT '(' ')'
;
// i think the problem is there
expr : tIDENT | tREAL | tINT | tSTRING |
| '[' ']' | '[' exprList ']'
| '{' '}' | '{' propertyList '}'
| '!' expr | expr '+' expr | expr '-' expr
| expr '*' expr | expr "==" expr
| expr '<' expr | expr '>' expr
//if there is the expr between '*' star should havpriority
;
exprList : expr | exprList ',' expr
;
propertyList : tIDENT ':' expr
| propertyList ',' tIDENT ':' expr
;
// this down below is main it say grammaticly correct or not?(i didnt wrote that part)
%%
答案 0 :(得分:1)
问题在于,在第一个引用行的末尾:
expr : tIDENT | tREAL | tINT | tSTRING |
| '[' ']' | '[' exprList ']'
重复的 | 有效地创建了规则:
expr : %empty
会立即导致大量冲突,特别是因为您允许分号是可选的:
statementList : statementList statement
| statementList ';' statement
| statement
如果您曾要求野牛发出警告,则会立即显示该错误(以及您可能需要考虑的其他一些警告):
bison -Wall ...