Sign in to follow this  
BornToCode

Flex and Bison

Recommended Posts

BornToCode    1185
I am been looking for this for a while. So i am wondering does anyone ever was able to build flex and bison under Visual Studio. Everything that i am finding are saying i need to use GCC. From what i have seen so far GCC does not work well under windows. I keep getting all these segfaults when i use it.

Share this post


Link to post
Share on other sites
BornToCode    1185
Sorry about that i should be a little more clear. The problem is that i have Bison/Flex .exe i compile my grammar and it gives me back the .h and .cpp files. Now what i want to do is be able to add those files into my C++ project and build it in Visual studio. But from the source code that Bison/Flex is generating, i cannot build it in Visual studio since it has a bunch of dependecies that MSVC doesn't have. Using Mingw gcc it works fine. But when i build my engine with GCC on windows i am getting all sorts of crash. So i am trying to find a way to get the source generated by bison/flex to compile under MSVC. Has anyone every done that. @rnlf The latest version of Mingw 4.6.1 i believe has a bunch of bugs. My code compiles fine but whenever i execute it it just crash. I am running Windows 7

Thanks Edited by BornToCode

Share this post


Link to post
Share on other sites
SiCrane    11839
If your code runs without runtime errors with one compiler but doesn't with another compiler, chances are the problem is your code and not the compiler. You may be relying on implementation defined behavior, or worse undefined behavior. Rather than writing off gcc as buggy, it would probably be a good idea to figure out the sources of the segmentation faults.

Share this post


Link to post
Share on other sites
BornToCode    1185
Well the latest version of GCC under windows is buggy. You can look for that online and you will find a ton of links that talks about it. The problem with flex and bison had nothing to do with GCC. What i meant when i say that is that when i build my engine with GCC instead of Visual Studio and run it. It segfault as soon as the application starts. But using gcc 4.5.3 instead of the 4.6 works fine. So you trying to tell me there is nothing wrong with GCC. I think you need to look it first before you start telling me to figure things out.

Share this post


Link to post
Share on other sites
SiCrane    11839
A quick web search for gcc 4.6 doesn't turn up any hits for anything that indicates that it's completely broken, even when checking projects notorious for uncovering compiler errors like LLVM. And code that works fine on one compiler and doesn't work with another, even for different versions of the same compiler, is generally an indication that your code is doing something non-kosher. So yes, I would suggest you investigate the source of the segfault and double check to see if it really is the compiler or something you are doing wrong. Seriously, if you're programming in C++ you should be welcoming any potential warning signs that there's something wrong in your code rather than ignoring them.

Share this post


Link to post
Share on other sites
L. Spiro    25620
The original poster’s troubles are warranted. Flex/Bison don’t emit code out-of-the-box that can compile on any compiler I have tried.
I have made a utility program that is called by a batch file to go over the generated files and replace certain things.

Some of them are related to includes, some of them are specifically to fix errors that happen in one compiler and not another. For example, “stack<T>> has to be replaced with “stack<T> >” to compile on GCC.

There are also many different versions of Flex/Bison and in my experience they also generate very different code. As a result I refuse to upgrade mine since all upgrades result in a plethora of issues to fix in order to get it running. As such this may no longer be the case, but my version is recent and no longer uses unistd.h. So what I said about it not being able to just compile out-of-the-box may vary depending on your version, but neither of the 2 versions I have used were able to do so, and historically Flex’s/Bison’s emitted code itself is the problem.


L. Spiro

Share this post


Link to post
Share on other sites

Create an account or sign in to comment

You need to be a member in order to leave a comment

Create an account

Sign up for a new account in our community. It's easy!

Register a new account

Sign in

Already have an account? Sign in here.

Sign In Now

Sign in to follow this