Advertisement

Flex and Bison

Started by December 12, 2012 08:42 AM
7 comments, last by L. Spiro 11 years, 11 months ago
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.
GCC (MinGW) works just fine under Windows. Haven't tried flex and bison though. If you were a bit more specific in your error description, it might be easier to help you.
Advertisement
I just use cygwin's flex and bison rather than compiling from scratch.
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
You know what guys i managed to fix it. It was stupid of me, i find out i can replace unistd.h with io.h

Thanks
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.
Advertisement
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.
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.
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

I restore Nintendo 64 video-game OST’s into HD! https://www.youtube.com/channel/UCCtX_wedtZ5BoyQBXEhnVZw/playlists?view=1&sort=lad&flow=grid

This topic is closed to new replies.

Advertisement