-   Ubuntu (
-   -   lex yacc programming (

hrishi_j 02-25-2012 01:59 PM

lex yacc programming
hey i just want to learn more about lex and yacc programming in ubuntu as my final year project is based on it
in that i have to detect for loop in c program which can be pass using lex and yacc tool of linux and then it will insert openmp pragmas in to that c programm so that the c program shuld be parallelly executed..

johnsfine 02-25-2012 02:10 PM

lex and yacc are ineffective tools for real world problems.
When parsing a very clean grammar, they are a convenient resource. But the uglier the grammar the harder it is to contort lex and yacc to handle it.
It quickly becomes easier to just code a parser in a general purpose language than to kludge the problem spots into lex and yacc.

In a typical academic project involving lex/yacc you get to define the target language, so lex and yacc show their one true value: If you are designing the language and the parser at the same time and you have trouble using lex and yacc, it likely means you are making poor choices in language design and use of lex an yacc may push you to better language design. But if someone else already designed the language, the language design choices that turn lex and yacc into a giant problem have already been made.

I think ANTLR is far better than lex/yacc. But that doesn't necessarily mean I recommend ANTLR. Having used lex/yacc, and ANTLR and simply coding a parser in C++ without any parser specific tools, I have always found that the last of those choices yields the least long term difficulty. ANTLR or lex/yacc may save a lot of boring work on the easy parts of the language. But as you dig into the hard parts of the language you are supporting, you over pay wildly for that initial benefit.


Originally Posted by hrishi_j (Post 4611895)
detect for loop in c program

C is a very ugly language in formal language terms. Parsing C in lex/yacc is an exercise in futility. I wouldn't be surprised if someone has done it. I've seen (and even been forced to work on) projects in which an impossible for lex/yacc language is parsed with lex/yacc by burying unreasonable kludges in the C actions (and usually by failing to find and fix a bunch of problem cases that even the kludges won't cover).

Superficially, it may appear that recognizing for loops is a much smaller problem than parsing the whole language. But most ways of taking advantage of that smaller size lead to designs that can be tricked. An academic project may allow work that is only mostly correct. But in my opinion a more practical project that can be done correctly is a better exercise.


Originally Posted by hrishi_j (Post 4611895)
then it will insert openmp pragmas in to that c programm so that the c program shuld be parallelly executed..

I assume you do not mean it will automatically detect loops for which an openmp pragma could be added without corrupting the answer. That would be impossible to do accurately.
Do you mean adding openmp pragma even in places where doing so would cause the program to crash (once compiled and run with openmp support)?

hrishi_j 02-29-2012 11:00 PM

thanks sir for suggesting ANTLR....before ur reply i really dnt knoew abt ANTLR...but noe i think it is good tool rather using lex yacc for parsing

hrishi_j 03-02-2012 11:52 AM

can anyone tell me how to install gtk on ubuntu 11.04?
i have install it ie (libgtk-3-dev) using synaptic package manager but after executing the code
it gives an error msg as follows:
fatal error:gtk/gtk.h no such file or directory

knudfl 03-02-2012 12:09 PM

GTK2 : package name = libgtk2.0-dev

Using gtk2, example ..
gcc -Wall -g infile.c -o outfile `pkg-config --cflags gtk+-2.0` \
`pkg-config --libs gtk+-2.0`

Gtk2, gtk3 :


All times are GMT -5. The time now is 03:03 PM.