Kyle Lahnakoski

This document has moved


Letter:= 'A'
:= 'Z'
:= 'a'
:= 'z'

Digit:= '0'
:= '9'

Alpha:= <l AS List(Type=Letter)>
Number:= <d as Digit*>

VarChar:= Letter
:= Digit
:= '_'

Integer := '-' <n AS Number>;
:= <n AS Number>;

Variable := '_' <v AS VarChar*>
:= <l as Letter> <v AS VarChar*>



Method := MethodPrefix
        := MethodPrefix Instruction

MethodPrefix:= 'METHOD' <method name AS Variable> '(' <parameter AS Parameter* BY ','> ')' 'RETURNS' <return type AS Object_Class>

Parameter := <parameter name|Variable> 'AS' <parameter type|Class_Class>


Field:= 'FIELD' parameter

Instruction := '{' Instruction '}'
:= ANYTHING ';'

ForParam:= <parameter name|Variable> 'AS' <parameter type|Class_Class> 'IN' <container|Container_Class>

FOR <loop name AS Variable> ( <parameter AS List(Type=ForParam, Seperator=,)> ) <instruction AS Instruction>

    FIELD Iterator AS Iterator_Class;
    Iterator=
parameter(0).container.getIterator();
    IF (NOT Iterator.isDone()){
        FIELD parameter(0).[parameter name] AS parameter(0).[parameter type];
        parameter(0).[parameter name]=Iterator.getFirst();
        LOOP [loop name] {
        FOR (p IN parameter, START=2){
            FIELD pIterator AS Iterator_Class;
            Iterator=p.container.getIterator();
            IF (NOT Iterator.isDone())){
                FIELD p.[parameter name] AS p.[parameter type];
                p.[parameter name]=Iterator.getNext();
                LOOP {
        }//for
                [instruction]
        FOR (i IN parameter, START=2){
                    if (Iterator.isDone()) EXIT LOOP;
                }//loop
            }//endif
        }//for
        if (Iterator.isDone()) EXIT *[loop name];
        }//LOOP
    }//ENDIF

kyle@lahnakoski.com