Solved

HI more lex and yacc

Posted on 1998-12-15
13
165 Views
Last Modified: 2010-04-15
Hi, sometimes my lex compiler refuses to let me make a new rule for example something like this abc "abc"
{abc}{return(V1);}
It will say rule abc not know. It's driving me nut, please help.
0
Comment
Question by:laeuchli
  • 6
  • 6
13 Comments
 
LVL 51

Expert Comment

by:ahoffmann
Comment Utility
if you have not missed the  %%  separator, please post the file.
0
 
LVL 5

Author Comment

by:laeuchli
Comment Utility
The file is a little long to post, and besides that it is on a linux filesystem. I would just like to know what can make lex do that.
jesse

0
 
LVL 51

Expert Comment

by:ahoffmann
Comment Utility
will be hard to analyze without having the code :(
Anyway, check with  lex -v  what are the tables sizes used(needeed in you program, probably you need to adjust them (see %p %n %a %e %k %o)

0
 
LVL 5

Author Comment

by:laeuchli
Comment Utility
explain the table sizes please. If that does not help I will try to get to code.
Thanks

0
 
LVL 51

Expert Comment

by:ahoffmann
Comment Utility
If you use -v option to lex, it print a statistic about lex's internal table usage and sizes. These table sizes can be preset with the spezial %p etc. keywords. Please read lex's man-page for details, it's to much to explain here.
I'm not shure if this is your problem, just an assumtion, 'cause you do give any errors or code :-(
0
 
LVL 5

Author Comment

by:laeuchli
Comment Utility
%{
#include <stdio.h>
#include <stdlib.h>
#include "os.h"
int k=0;
%}

bootc "void main()"  
equal "="
par ["]
ifj "ifj"
word [A-Za-z0-9]*
num [0-9]*
exit "QUIT"
partb "char"
lb "["
rb "]"
semi [;]
%%
{exit}  {exit(0);}
{partb} {return(V1);}
{lb}    {return(V2);}
{rb}    {return(V3);}
{par}   {return(V4);}
{bootc} {return(BOOTC);}
{ifj}{return(V9);}
{equal} {return(V5);}
{semi}  {return(V6);}
{num} {return(V7);}
{word} {
strcpy(yylval.hold,yytext);
return(V8);
}
%%


Here is the code.  I still can'r get it to compile.



0
Highfive + Dolby Voice = No More Audio Complaints!

Poor audio quality is one of the top reasons people don’t use video conferencing. Get the crispest, clearest audio powered by Dolby Voice in every meeting. Highfive and Dolby Voice deliver the best video conferencing and audio experience for every meeting and every room.

 
LVL 51

Accepted Solution

by:
ahoffmann earned 100 total points
Comment Utility
{ifj}      {return(V4);}
0
 
LVL 1

Expert Comment

by:lafanga
Comment Utility
Guess!! this is something new for me.  
Is there any place where I can know more about this??

0
 
LVL 5

Author Comment

by:laeuchli
Comment Utility
ahoffmann what do you want me to do about the think that I am already returning with V4. Why would I do this? Please tell me more.  lafanga look at my bio and look at the ? looking in a file.



0
 
LVL 51

Expert Comment

by:ahoffmann
Comment Utility
laeuchli, did you replace you rule with the one i posted?
It's slightly different (blanks ;-)

lafanga, how about:  man lex; man yacc
0
 
LVL 5

Author Comment

by:laeuchli
Comment Utility
Yes I did and it worked. I would now like to know why?

0
 
LVL 51

Expert Comment

by:ahoffmann
Comment Utility
read  man lex  ;-)
(at least one white space must seperate a rule from it's actions)
0
 
LVL 5

Author Comment

by:laeuchli
Comment Utility
OHH, I feel dumb. Thanks a lot for your help.

0

Featured Post

Highfive + Dolby Voice = No More Audio Complaints!

Poor audio quality is one of the top reasons people don’t use video conferencing. Get the crispest, clearest audio powered by Dolby Voice in every meeting. Highfive and Dolby Voice deliver the best video conferencing and audio experience for every meeting and every room.

Join & Write a Comment

Windows programmers of the C/C++ variety, how many of you realise that since Window 9x Microsoft has been lying to you about what constitutes Unicode (http://en.wikipedia.org/wiki/Unicode)? They will have you believe that Unicode requires you to use…
This is a short and sweet, but (hopefully) to the point article. There seems to be some fundamental misunderstanding about the function prototype for the "main" function in C and C++, more specifically what type this function should return. I see so…
Video by: Grant
The goal of this video is to provide viewers with basic examples to understand and use while-loops in the C programming language.
The goal of this video is to provide viewers with basic examples to understand and use switch statements in the C programming language.

772 members asked questions and received personalized solutions in the past 7 days.

Join the community of 500,000 technology professionals and ask your questions.

Join & Ask a Question

Need Help in Real-Time?

Connect with top rated Experts

12 Experts available now in Live!

Get 1:1 Help Now