help-bison
[Top][All Lists]
Advanced

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

please help me with this


From: Tejas Kajarekar
Subject: please help me with this
Date: Fri, 18 Dec 2009 01:58:09 -0500

Hello,
My name is Tejas. I am trying to use Flex and Bison to parse (and convert)
one file to another format. Currently, I am not bothered about conversion,
just the parsing.
I have never used either tools, and what my problem is, may be trivial.
(Worth laughing)
Here is my problem:
I am going to attach my .l and .y files and .txt file which is my input.
Here I will just include the tokenIZING part of .l and grammar of .y.
This is part of my flex which returns tokens to yyparse:-
"graph"        {    return GRAPH;    }
"{"               {    return '{';             }
"}"               {    return '}';             }
"init"            {    yylval= yytext;
                        return INIT;         }
{id}              {    yylval = yytext;
                        return ID;            }
 where id = [a-zA-Z_][a-zA-z_0-9]*

This is my bison grammar:-
%%
input:                    /* empty */
                            | GRAPH '{' graphitemset '}'    { printf("GRAPH
FOUND");      }
                            | error

graphitemset:        responsivestate            { printf("RESPONSIVE
STATE");    }

responsivestate:    INIT statename '{' '}'        { printf("INIT %s",$2);
     }

statename:            /* empty */
                            | ID

%%

After running it,
C:\>gnu\bin\flex -olex.yy.c -i s.l
C:\>gnu\bin\bison -d s.y
C:\>gcc -ose s.tab.c lex.yy.c -ly -lfl
C:\>se < s.txt
Now if my s.txt = *graph{init{}}*
then I get output *INIT (null)RESPONSIVE STATEGRAPH FOUND.*

However, if I change s.txt to *graph{initnabc{}}*
then I get *se: syntax error line 0*
i.e., it only recognizes state names which are empty, otherwise, there is
some problem with ID.

I want it to recognoze graph, init as well as the state name.
I think ID definition conflicts with "graph", or "init".
It also generates a warning: No new line at end of file for .l file.
Please help me with this problem.
__________________________________________________________________________
Also, simlar kind of problem, but with very simple files:
"graph"        {    return GRAPH;    }
{id}        {    yylval = yytext;
            return ID;    }
for tokens


input:            GRAPH { printf("GRAPH FOUND");      }
            | GRAPH ID { printf("GRAPH + ID");    }
the grammar

with input graph, its executes to* GRAPH FOUND;*
with input graphgraph, it gives syntax error; and not GRAPH FOUND twice.,
nor GRAPH + ID for something like graphbhg.

Do we have to run the tokenizing routing in some loop like while not EOF,
etc.?

I have no idea what to do to get the desired output.
This may sound very funny, but as I said, I have no experience with these
two tools.
I will really appreciate your help.
The actual input will be quite large, I am just experimenting with
graph{init{}}, and having problems with that
Also, sorry for the long email.

thanking you in advance,
tejasSK

Attachment: s.txt
Description: Text document

Attachment: s.y
Description: Binary data

Attachment: s.l
Description: Binary data

Attachment: ex.l
Description: Binary data

Attachment: ex.y
Description: Binary data


reply via email to

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