|
|
PHOENIX FRONT-END TOOLKIT AND ENVIRONMENT
(Phoenix-FETE)
Vladimir O. Safonov
Professor, Head of laboratory
Daniel A. Vassilyev
PhD Student
St. Petersburg University
October 2006
Phoenix.FETE is a modern tool for compiler development based on Microsoft
Phoenix being developed at St. Petersburg University under supervision of
professor Vladimir Safonov, as part of Microsoft Research granted “SPBU for
Phoenix” project.
The main features of the tool are:
The purpose of the Phoenix-FETE project is to develop
Phoenix-oriented compiler front-end tool and environment based on
syntax-directed translation schemes, similar to yacc, bison and other compiler
generation tools, but intended to use with Phoenix. It should take as input an
attributed LL or operator precedence grammar of a programming language and
produce a compiler front-end for this language that issues HL-AST or Phoenix IR.
The purpose of the tool is to make easier a new compiler front-end development
for Phoenix.
Features to be implemented in Phoenix-FETE:
-
The ability to process either LL or
operator precedence grammars and to generate a purely recursive descent, or
combined recursive descent (for statements) and operator precedence (for
expressions) parser, since in real compilers, including our experience,
often combined forms of parsers are used;
-
The ability to define and process LL
or operator precedence conflicts (like in other modern compiler development
tools – ANTLR, Coco/R);
-
Support of efficient parsing and
semantic evaluation techniques (storing synthesized attributes in the HL-AST
during LR parsing, etc.);
-
Support of visualization,
understanding and control over the process of generation a Phoenix-FETE
based compiler front-end, and the process of the generated front-end’s work;
-
Adequate support of both HL-AST (whose
architecture should be developed as another part of our project) generation,
and directly Phoenix HIR generation by a Phoenix-FETE generated compiler
front-end;
-
The ability for Phoenix-FETE to work
as a Visual Studio.NET add-in.
For more information, read the complete
whitepaper. |