Jobs/ENGI AD 2015 Bison


Bison : points d'entrée multiples
Reference id

ENGI AD 2015 Bison


5-6 months 2015

Research field


Related project



Akim Demaille

General presentation of the field

No mathematical knowledge needed. Good level in C required. C++ is a plus: it will be used, but at a very simple level. Java will also be used (again, limited knowledge will suffice).


Bison generates parsers for a given grammar. In some case, one is interesting in parsing different aspects of a grammar (for instance, "parse this expression", or "parse this declaration", or "parse this program"). There is no built-in support for this in Bison. It is however easy to implement. The internship consists in adding this feature in the front-end (i.e., find a means for the user to declare that she wants to have several "entry points"), and in the back-ends (i.e., prepare Java, C, and C++ parsers with the needed support: typically generating a "parse_foo()" function for each "foo" entry-point). There are many other things to develop in Bison, this is just an initial assignment: more will come as the first one is properly addressed.

(i) Sort the error messages: Bison has several passes, and each pass generates its own error messages. As a result, there is sometimes an error on line 3, then on line 2 and then on line 1. Sort them to issue them in a more natural order; (ii) Colorize the diagnostics: Today compiles such as GCC or clang issue messages in color. Do that in Bison too ; (iii) Optimize the generator parsers: Currently Bison aims at producing small parsers (small tables). It might be interesting to release some of these optimizations (since nowadays we have much more memory available) to see if we gain some speedup. That would result in a -O option, as in compilers (with -Os, -O2, etc.).

Benefit for the candidate
Place LRDE: How to get to us

500 € gross/month

Future work opportunities

<akim at lrde . epita . fr>