"Start Symbol" = ! ------------------------------------------------- Sets {ID Head} = {Letter} + [_] {ID Tail} = {Alphanumeric} + [_] {String Chars} = {Printable} - ["\] {Number Types} = [fd] ! ------------------------------------------------- Terminals Identifier = {ID Head}{ID Tail}* StringLiteral = '"' ( {String Chars} | '\' {Printable} )* '"' !DecimalLiteral = '{Numeric}.{Numeric}{Number Types}?' DecimalLiteral = '{Numeric}.{Numeric}' FloatLiteral = '{Numeric}*(.{Numeric}*)?f' DoubleLiteral = '{Numeric}*(.{Numeric}*)?d?' !IntegerLiteral = '{Numeric}{Number Types}?' IntegerLiteral = '{Numeric}' ! ------------------------------------------------- Rules ::= | ::= Identifier ::= '.' ::= | 'void' ::= '>' | '<' | '<=' | '>=' | '==' !Equal | '<>' !Not equal | ::= ::= '+' | '-' | ::= '*' | '/' | '%' | ::= '-' | '++' | '--' | '++' | '--' | ! ----------------------------------------------- Values ----------------------------------------------- ::= | ::= | ::= | | StringLiteral | 'null' ::= FloatLiteral | DoubleLiteral | IntegerLiteral ::= 'true' | 'false' ! ----------------------------------------------- Language Constructs ----------------------------------------------- ::= ! Items at the root of a file ::= | | '' ::= | ! Namespace Items ::= | | '' ::= | | ! Class members ::= | | '' ::= | | ! Statements ::= | | '' ::= '=' ! Assignment operator | ! ----------------------------------------------- Declarations ----------------------------------------------- ! Import a namespace's symbols ::= 'using' ::= 'namespace' '{' '}' ::= 'class' Identifier '{' '}' ::= 'delegate' ';' ::= Identifier ';' ::= '{' '}' ::= '(' ')' | 'void' '(' ')' ::= | | '' ::= Identifier ! ----------------------------------------------- Modifiers ----------------------------------------------- ::= 'public' | 'internal' | 'private' | '' ::= 'static' | 'abstract' | 'virtual' | ''