bug-bison
[Top][All Lists]
Advanced

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

Possible bug simple grammar


From: mjmoron
Subject: Possible bug simple grammar
Date: Sun, 14 May 2006 12:20:55 +0200 (CEST)
User-agent: SquirrelMail/1.4.6 [CVS]-0.cvs20050812.1.fc3

Hi,

I define a grammar with two tokens INT and REAL (files Ej3l.lex, Ej3y.yac).
and I have used flex 2.5.31 and bison 2.1.to generate code.
In order to test the error management, I have introduced the next
erroneous sentence:

7++;

the Message error which is shown, does not enumerate the other one
expected token, i.e., REAL.

However, if the grammar is modified by adding a third token, CAR, (files
Ej3lb.lex, Ej3yb.yac), the error message is right:

8++;
8 linea 2: syntax error, unexpected '+', expecting CAR or INT or REAL


Next lines list a sample in every case:

case "Ej3l":

7 +8 ;
7 8 +
TIPO resultado: INT
15
7++;
7 linea 2: syntax error, unexpected '+', expecting INT

case "Ej3yb":

8 +7;
8 7 +
TIPO resultado: INT
15
8++;
8 linea 2: syntax error, unexpected '+', expecting CAR or INT or REAL

In file /usr/share/bison/bison.simple I have add a prinf sentence to show
for index which are used to read 'yytname' array.

I generate code using this modified skeleton explicitly:

bison Ej3y.yac -S bison.simple -o Ej3y.c
bison Ej3yb.yac -S bison.simple -o Ej3yb.c

and in every case, the traces are:

In case "Ej3l":

address@hidden:~/TCI/Ejercicios/Bison-Modificado# ./Ej3y 8 + 9;
8 + 9;
8 9 +
TIPO resultado: INT
17
9++;
9
yyxbegin= 0;yyxend=4;yychecklim=4;YYNTOKENS=7
linea 2: syntax error, unexpected '+', expecting INT

and in the case "Ej3yb":

8 + 7;
8 7 +
TIPO resultado: INT
15
9++;
9
yyxbegin= 0;yyxend=8;yychecklim=8;YYNTOKENS=8
linea 2: syntax error, unexpected '+', expecting CAR or INT or REAL

Notice that the value of 'yyxend' in the first case is 'yychecklim=4'
instead of 7 (YYNTOKENS).
However, in the second case 'yyxend = yychecklim = YYNTOKENS'

I have verified that if yyxend is fixed to YYNTOKENS it works right.

Attachment: Ej3l.lex
Description: Binary data

Attachment: Ej3y.yac
Description: Binary data

Attachment: Ej3lb.lex
Description: Binary data

Attachment: Ej3yb.yac
Description: Binary data


reply via email to

[Prev in Thread] Current Thread [Next in Thread]