2008Q3 Grant Proposal: Rufus
Fri, 01-Aug-2008 by
Alberto Simões
edit post
* **Authors:** Igor Sanchez-Puls and Rene Sanchez-Puls
* **Title:** Rufus
* **Synopsis:** Build a preprocessor for PASM and a language with PASM like syntax
**Name**
Igor Sanchez-Puls and Rene Sanchez-Puls
**Project Title**
Rufus
**Synopsis**
Build a preprocessor for PASM and a language with PASM like syntax
**Benefits to the Perl Community**
A nice approach "bottom-up" from PASM and tools for making easier PASM programming.
**Deliverables**
A PASM preprocessor "Rufus preprocessor" and a "Rufus language".
In development an alfa version of rufus-0.7.0.rpp rufus script, Rufus language development will start when we have a stable and robust Rufus preprocessor.
Then for the moment we have a Rufus script rufus-0.7.0.rpp (only handle "define" preprocessor directive)
We will deliver regularly versions of a Rufus preprocessor and a Rufus language
**Project Details**
(rufus-0.7.0.rpp code is written using only registers, one hash, two arrays and without globals).
A PASM preprocessor "rufus preprocessor" made completely from PASM that will handle most of c preprocessor directives and some others, like:
a.- define
b.- undef
c.- include (a different one of PASM include)
d.- extern
e.- if
f else
g.- multiline macros with "\"
h.- simple regex(with constants) "s///","m//","tr///" and
i.- plain pod integrated into the preprocessor
j.- data macros
k.- eval macros
l.- classes macros
A "Rufus" language with PASM like syntax(starting after we have a robust preprocessor) eg:
set I0,1 if (I2>5)
with some features like
a.- scalar context and list context
b.- static variables and dynamic variables
c.- A LL and a LR parsers
d.- regex
**Project Schedule**
For the preprocesor we expect to have a robust(usable) one in three monts.
For the compiler, is a long-term duration project but we expect to start the beggining of the language this year.
But in general we can't say when we are going to finish the project or one part of it, we can only give advances regularly with a working version of it each time.
**Biography**
We are graduated engineers (Industrial and Systems, and Electronics and Communications respectively) from the ITESM "Instituto Tecnologico y de Estudios Superiores de Monterrey" in Mexico City. and I(Igor) have several years working with perl
We are the best people for working in this project, because we are the owners of the idea and because I have one year studing PASM and six months programming with PASM and I am a good programmer in c, perl and I can apply my knowledge on assembler language.
**Amount Requested**
We request $3000
Comments (4)
Why not use a generic preprocessor?
I tend to agree with acme. What's new, and distinguish Rufus from CPP, for instance?
Alberto
TPC GC Chair
I don't really see the point of this project.
The idea of rufus language is to have a fast language with a static design and with some dynamic features.
There is a very good language "PIR", but for my knowlwdge of that language is designed for make easier programming for dynamic languages.
My design is to use registers as posible, then when more varibles are needed use arrays, and use hashes when they are the best option for a special purpose.
That means a fast static language with dynamic features.
The idea is to create stand alone programs and make some things with it like a rufus translator with the use of ncurses, a translator with its terminal.
It can be used to construct fast procedures, like a module that find words "m//".
It will have a full interconection with PIR, PASM and c and languages that require fast static modules.
I need to construct rufus in steps and the first step is a preprocessor(only find directives and replace code, whitout separated lexer and parser).
Then I´m going to replace parts of the preprocessor by adding automatas for recognize labels, strings, arrays, integers, floats and so on.
Then I have to construct the parsers for PASM(is the first step), and then enhance them to manage mixed sentences like set I5,23 if I7,milevel, and then construct additional parsers for manage the more complex instructions like (I6=4), and have instructions like set I5,23 if (I6=4) or bsr label if (I6=4)
It´s intended that rufus language have integrated rufus preprocessor, one use could be a pretty printer, pretty printer have almost the same code as the code that find tokens in the "lexer" in the preprocessor, with preprocessor directives like if an else the pretty printer will have the code to format the output and code to bring statistics for printing line numbers and token positions and directives contents.
Sincerely
Igor
Rene