2.0 Gilda Phrase Syntax
NumericExpression := NumericLiteral | VariableField | NumericFunction
| ([UnaryNumeric] NumericExpression
| (NumericExpression BinaryNumeric NumericExpression)
| '(' NumericExpression ')'
StringExpression := StringLiteral | VariableField | StringFunction
| StringExpression '!' StringExpression
| '(' StringExpression ')'
UserFunction := Name '(' ArgumentList ')'
ArgumentList := NumericExpression [',' ...]
------------------------------------------------------
Condition := Comparison [{"and" | "or"} ...]
Comparison := StringExpression [ComparatorSign StringExpression]
| NumericExpression [Comparator NumericExpression]
| NumericExpression {'=' | '~='} ComparisonList
ComparisonList := (IntegerLiteral ["to" IntegerLiteral]) ['|' ...]
------------------------------------------------------
Declaration := {Variable | Pointer | Array | Micro | Macro} [',' ...]
Variable := Name ['=' Integer] Type
Pointer := ['@" | "*"] Name ['=' Integer] Type ['|' ...]
Array := ['@" | "*"] Name ('[' ArrayRange ']')
ArrayRange := ArrayBound ["to" ArrayBound] [',' ...]
ArrayBound := Integer | Name | '?'
Micro := Name "|=" StaticExpression
Macro := Name [( Name [',' ...]] '=>' {Expression | Comparison}
Enumeration Value
Arithmetic Expression