Parsing is the first step in the analysis of programming languages. For example, to analyze the quality of software systems or to perform language transformations.
To perform such analysis we are first require to encode all the grammar rules of the programming language, and then build a parser that, using our defined grammar, can recognize any program written in the language. Parsers return a tree like structure, we will be a specifc kind of tree called eCST [1] that is then use as input for our desired translation tool.
Thankfully, we do not need to generate full parsers for programming languages, as this task is very complex. We can use existing parser generators, as ANTLR, that, given a grammar, can generate and efficient and correct parser for a language.
In this project we want to use such a parser to translate dated C applications into a 21st century language like Rust. The first step in the translation, your project, will be to create an intermediate representation that abstract specific syntactic abstractions for an effective translation.
The objective of this project is to take the existing grammar definition for Rust and compliment it with missing features in the language (deprecated or new features). The grammar must comply with the [ANTLT4][https://www.antlr.org] specification. Then, given the grammar, with the objective to generate a parser for swift.
n.cardozo