User:Ondrej: Difference between revisions
No edit summary |
No edit summary |
||
| Line 7: | Line 7: | ||
Subversion branch: {{srcbranch|ondrej|}} | Subversion branch: {{srcbranch|ondrej|}} | ||
[[Category: | == Project description == | ||
Goal of this project is to create a prototype implementation of possible new ASCEND | |||
compiler. Current compiler is highly effective, coded using Flex/Bison, but has a huge and | |||
difficult code, that is hard to understand and extend. Being a critical part, compiler code | |||
needs to be high quality with no (or least possible amount of) errors and bugs. That is still | |||
harder to achieve in current vast situation. Using more modern language description and | |||
parser generation tool like ANTLR, the listed issues can be resolved. ANTLR, having very | |||
good GUI-based development environment, active community and various output languages | |||
can result in a modular, maintainable and fast compiler. Additionally, some of the | |||
objectives of next-generation ASCEND syntax can be incorporated in the solution and tried | |||
out. | |||
== Tasks == | |||
Create ANTLR parser of ascend4 language - rewrite Flex/Bison rules to more readable | |||
ANTLR'sExtended Backus-Naur Form. By doing this, obtain an AST (Abstract Syntax Tree | |||
). This will also result in getting rid of much of the code behind Bison rules. Pass the AST | |||
to ANTLR-created semantic analysis filters. Additionally, extend the existing parser with | |||
next-generation parser ideas - at least some syntax ideas like respelling the pedantic | |||
keyword style, moving the language to look more like modern programming languages, etc. | |||
Create tree walker converting ascend4 tree to the extended grammar trees. Test the solution | |||
on a reasonable amount of test input. If there is time left, start incorporating the solution | |||
into the existing C-based system. | |||
== Milestones == | |||
Finish the ascend4 parser including semantic analysis filters by mid-term. By the end, test | |||
the parser thoroughly and work on the new ideas. Complete as many as possible, resulting | |||
in a solid and compact prototype for a new compiler implementation. | |||
[[Category:GSOC2010]] | |||
Revision as of 09:53, 26 May 2010
Ondrej Krc-Jediny
Proposal: http://socghop.appspot.com/gsoc/student_project/show/google/gsoc2010/ascend/t127230757738
Mentor: Ben Allan.
Subversion branch: ondrej:
Project description
Goal of this project is to create a prototype implementation of possible new ASCEND compiler. Current compiler is highly effective, coded using Flex/Bison, but has a huge and difficult code, that is hard to understand and extend. Being a critical part, compiler code needs to be high quality with no (or least possible amount of) errors and bugs. That is still harder to achieve in current vast situation. Using more modern language description and parser generation tool like ANTLR, the listed issues can be resolved. ANTLR, having very good GUI-based development environment, active community and various output languages can result in a modular, maintainable and fast compiler. Additionally, some of the objectives of next-generation ASCEND syntax can be incorporated in the solution and tried out.
Tasks
Create ANTLR parser of ascend4 language - rewrite Flex/Bison rules to more readable ANTLR'sExtended Backus-Naur Form. By doing this, obtain an AST (Abstract Syntax Tree ). This will also result in getting rid of much of the code behind Bison rules. Pass the AST to ANTLR-created semantic analysis filters. Additionally, extend the existing parser with next-generation parser ideas - at least some syntax ideas like respelling the pedantic keyword style, moving the language to look more like modern programming languages, etc. Create tree walker converting ascend4 tree to the extended grammar trees. Test the solution on a reasonable amount of test input. If there is time left, start incorporating the solution into the existing C-based system.
Milestones
Finish the ascend4 parser including semantic analysis filters by mid-term. By the end, test the parser thoroughly and work on the new ideas. Complete as many as possible, resulting in a solid and compact prototype for a new compiler implementation.