Jobs/ENGI AD 2015 Bison

From LRDE

Revision as of 16:22, 10 November 2015 by Cd (talk | contribs)
(diff) ← Older revision | Latest revision (diff) | Newer revision → (diff)
Bison : points d'entrée multiples
Reference id

ENGI AD 2015 Bison

Dates

5-6 months 2015

Research field

Bison

Related project

Bison

Advisor

Akim Demaille

General presentation of the field
Prerequisites

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).

Objectives

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
References
Place LRDE: How to get to us
Compensation

500 € gross/month

Future work opportunities
Contact

<akim at lrde . epita . fr> <akim at lrde . epita . fr>