Solved

-ly Yacc library for Linux

Posted on 1998-02-13
5
1,454 Views
Last Modified: 2013-12-26
I've installed a new version of Suse Linux, but I cant find the -ly library which is nessesary for the gcc compiler to compile the yacc-generated yyparse and my parser.
My Question:
-Is the library on the distribution, but on another directory?
-Is the -ly library in the Internet?
0
Comment
Question by:bodirsky
  • 3
  • 2
5 Comments
 
LVL 51

Accepted Solution

by:
ahoffmann earned 100 total points
ID: 1295995
Linux uses bison instead of yacc, usually.
Bison doesn't need a library ;-)

0
 

Author Comment

by:bodirsky
ID: 1295996
But why gcc doesn't like my parser-routines any more?? In spite of upward-compability there are a lot of warnings and errors.
what is the equivalent for
lex lexfile
yacc yaccfile
gcc parser.c -ly
?
0
 
LVL 51

Expert Comment

by:ahoffmann
ID: 1295997
What do you mean  with:
  "gcc doesn't like my parser-routine"
Do you get compiler or linker errors?

lex lexfile       --> flex lexfile
yacc yaccfile     --> bison yaccfile
gcc parser.c -ly  --> gcc parser.c

0
 

Author Comment

by:bodirsky
ID: 1295998
In file included from bisoncomp.c:53:
lex.yy.c:267: conflicting types for `yytext'
ottersyntax.y:1: previous declaration of `yytext'
ottersyntax.l: In function `yylex':
In file included from bisoncomp.c:53:
ottersyntax.l:16: stray '\' in program
ottersyntax.l:16: parse error before `|'
ottersyntax.l:16: parse error before `['
ottersyntax.l:17: `i' undeclared (first use this function)
ottersyntax.l:17: (Each undeclared identifier is reported only once
ottersyntax.l:17: for each function it appears in.)
ottersyntax.l:19: break statement not within loop or switch
ottersyntax.l:20: case label not within a switch statement
ottersyntax.l: At top level:
ottersyntax.l:21: parse error before string constant
ottersyntax.l:21: stray '\' in program
lex.yy.c:752: warning: initialization makes pointer from integer without a cast
lex.yy.c:752: initializer element is not constant
lex.yy.c:752: warning: data definition has no type or storage class
lex.yy.c:755: parse error before `if'
lex.yy.c:782: conflicting types for `yy_c_buf_p'
lex.yy.c:219: previous declaration of

And so on without an end.

0
 
LVL 51

Expert Comment

by:ahoffmann
ID: 1295999
> lex.yy.c:267: conflicting types for `yytext'
> ottersyntax.y:1: previous declaration of `yytext'

I assume you have

  #include "lex.yy.c"

in ottersyntax.y , right?
If you combine flex and bison files, you need to have a common header file which defines yytext, for example.
I.g. this will be extracted from your tokens and defines in the .y file with
  bison -d
please refer to  man bison.

I'm not shure about
 > ottersyntax.l:16: stray '\' in program
sounds, that there is a \ which should be quoted.
PLease remove these 2, then compile again.

Flex/bison are much more flexible than lex/yacc. Most names, defines etc. are configurable (of cause most have usefull defaults, but unfortunately these defaults may be the source of you problem).
IMHO, you need to read man-pages (flex and bison). It's hard staff, but once you get used to it, you'll never use lex/yacc again :-)).

Feel free for more questions.
0

Featured Post

Find Ransomware Secrets With All-Source Analysis

Ransomware has become a major concern for organizations; its prevalence has grown due to past successes achieved by threat actors. While each ransomware variant is different, we’ve seen some common tactics and trends used among the authors of the malware.

Join & Write a Comment

Introduction: Dynamic window placements and drawing on a form, simple usage of windows registry as a storage place for information. Continuing from the first article about sudoku.  There we have designed the application and put a lot of user int…
Have you tried to learn about Unicode, UTF-8, and multibyte text encoding and all the articles are just too "academic" or too technical? This article aims to make the whole topic easy for just about anyone to understand.
This video will show you how to get GIT to work in Eclipse.   It will walk you through how to install the EGit plugin in eclipse and how to checkout an existing repository.
This tutorial demonstrates a quick way of adding group price to multiple Magento products.

705 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

18 Experts available now in Live!

Get 1:1 Help Now