This page specifies the lexical syntax for Gilda.
GildaStatement := CommentBlock | ([Declaration | Command] [Comment] Line)
Comment := {';' | ':' | '&'} Printable*
CommentBlock := '<<' ((Printable)* Line)+ '>>' Printable* Line
Printable := ' ' to '~'
Line := '^M^J' | '^M' | '^J' | '^J^M'
Name := Alpha (AlphaNumeric | '.' | '_' | '$' | '#')*
EnumeratedName := '.' Alpha (AlphaNumeric | '.' | '_' )*
Alpha := 'a' to 'z' | 'A' to 'Z'
AlphaNumeric := Alpha | DecimalDigit
DecimalDigit := '0' to '9'
NumericLiteral := IntegerLiteral | RealLiteral
IntegerLiteral := DecimalLiteral | HexLiteral | OctalLiteral | BinaryLiteral
DecimalLiteral := [UnaryNumeric] DecimalValue
DecimalValue := DecimalDigit ('_' | DecimalDigit)*
HexLiteral := '#' ('_')* HexDigit ('_' | HexDigit)*
HexDigit := DecimalDigit | ('a' to 'f') | ('A' to 'F')
OctalLiteral := '8#' ('_')* '0' to '7' ('_' | '0' to '7')*
BinaryLiteral := '2#' ('_')* '0' | '1' ('_' | '0' | '1')*
RealLiteral := RealDecimal | RealHex
RealDecimal := [UnaryReal] [IntegerValue] '.' [IntegerValue] [Exponent]
Exponent := {'e' | 'E'} ['+' | '-'] DecimalDigit+
RealHex := [HexInteger] '.' [HexInteger] [HexExponent]
HexExponent := {'p' | 'P'} ['+' | '-'] HexDigit+
UnaryNumeric := '~' | UnaryReal
UnaryReal := '+' | '-'
TextQuote := (''' SingleQuote* ''') | ('"' DoubleQuote* '"')
SingleQuote := (Printable -{''' |'^'}) | SpecialText
DoubleQuote := (Printable -{'"' |'^'}) | SpecialText
SpecialText := '^^' | ('^' {Alpha | '>' | '?' | '@' | '[' | '\' | ']'}
BinaryOperator := BinaryNumeric | '!'
BinaryNumeric := BinaryReal | BinaryLogical | '%' | '_*' | '_/'
BinaryReal := '+' | '-' | '*' | '/' | '^'
BinaryLogical := '/\' | '\/' | '--' | '//' | '\\' | '<<' "'>>'
Comparator := ComparatorSign | '_>' | '_<' | '_<=' | '_=<' | '_<=' | '_=>'
ComparatorSign := '=' | '~=' | '>' | '<' | '<=' | '=<' | '>=' | '=>'
PrimitiveType := NumbericType | "string"
NumbericType := IntegerType | "single" | "double"
IntegerType := "byte" | "parcel" | "word" | "cell"
Gilda Lexicon
Gilda Statement