Syntax

Contents:

    1. Terms
    2. Keywords
    3. Grammar

 

  1. Terms

 

  1. Keywords
    Number, Currency, String, Boolean, Date, Time, DateTime, if, else, then, true, false, global, range, in, to, like, and, or

  2. Grammar

formula : gVarDeclStmts | statements | gVarDeclStmts ';' statements;

statements : statement | statements ';' statement;

gVarDeclStmts : gVarDeclStmt | gVarDeclStmts ';' gVarDeclStmt;

gVarDeclStmt : TKGLOBAL basictype typedescriptor gvarlist;


gvarlist : gvar | gvarlist ',' gvar;

gvar : TKNAME | TKNAME '=' expression | TKNAME '[' arraysize ']' | TKNAME '[' arraysize ']' '=' expression;

statement : emptystmt | exprstmt | lVarDeclStmt | ifelsestmt | returnstmt | compoundstmt;

ifelsestmt : ifpart elsepart;

ifpart : TKIF '(' expression ')' then statement;

then : | TKTHEN;

elsepart : | TKELSE statement;

compoundstmt : '{' statementlist '}' ;

statementlist : statement | statementlist ';' statement;

returnstmt : TKRETURN expression;

emptystmt : exprstmt : expression;

lVarDeclStmt : basictype typedescriptor lvarlist;


lvarlist : lvar | lvarlist ',' lvar;

lvar : TKNAME | TKNAME '=' expression | TKNAME '[' arraysize ']' | TKNAME '[' arraysize ']' '=' expression;

arraysize : | expression;

basictype : TKNUMBER | TKCURRENCY | TKSTRING | TKBOOLEAN | TKDATE | TKTIME | TKTIMESTAMP;

typedescriptor : | TKRANGE;

expression  : TKCONSTFLOAT | TKCONSTSTRING | TKTRUE | TKFALSE | '(' expression ')' | expression '+' expression | expression '-' expression | expression '*' expression | expression '/' expression | expression '%' expression | expression TKOR expression | expression TKAND expression | '!'expression | expression '<' expression | expression '>' expression | expression TKGE expression // >= | expression TKLE expression // <= | expression TKEQ expression // == | expression TKUNEQ expression // <> != | expression TKIN expression | '-' expression %prec UMINUS | '$' expression | function | variable // variable or global variable | SpecialVariable | expression '['subscriptexpr ']' | '[' expression arrayrange ']' | variable '=' expression;

subscriptexpr : expression | subrange //expression TKTO expression;

arrayrange : array | range;

array   : | ',' arrayelements;

arrayelements : expression | arrayelements ',' expression;

range : TKTO expression;

subrange : expression TKTO expression;

variable : TKNAME;

function : funcname '(' paramlist ')';

funcname : TKNAME;

paramlist : | expression | paramlist ',' expression;

SpecialVariable : '@' spvarname;

spvarname : TKNAME | TKCONSTSTRING;