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