(* <> must choose [] can choose {} can repeat 0 to infinite time(s) | or ::= is defined as *) = ; = ; = ; = ; = ; = ; = ; = ; = ; = '[' { ',' } ']' ; = '{' {( | ) ':' ','} '}' ; = | | | | | | | | '(' ')' | { ('[' { ','} ']') | ('[' ':' [] ']') | ('.' ) | ('(' { ','} ')') | ('(' { ':' ','} ')') } ; = ['(' ')'] | ['(' ')'] '{' { ';'} '}' | '(' { ','} { '=' ','} {} ')' | '(' { ','} { '=' ','} {} ')' '{' { ';'} '}' ; = | | | | [('-' | '!')] | '?' ':' ; = { } ; = { } ; = {('+' | '-' | '~') } ; = [('-' | '!')] {('*' | '/') [('-' | '!')] }; (* this definition is also used in for loop*) = '=' | '(' { ','} ')' '=' ( | '(' { ','} ')') | '(' { ','} ')' '=' ( | '(' { ','} ')') ; = ('=' | '+=' | '-=' | '*=' | '/=' | '~=') | '(' { ','} ')' ('=' | '+=' | '-=' | '*=' | '/=' | '~=') ( | '(' { ','} ')') ; = | | | ; = '(' [] ';' [] ';' [] ')' [';'] | '(' [] ';' [] ';' [] ')' '{' { ';'} '}' ; = '(' ')' [';'] | '(' ')' '{' { ';'} '}' ; (* in forindex and foreach the scalar and definition cannot be lacked*) = '(' ( )|() ';' ')' [';'] | '(' ( )|() ';' ')' '{' { ';'} '}' ; = '(' ( )|() ';' ')' [';'] | '(' ( )|() ';' ')' '{' { ';'} '}' ; = {} [] ; = '(' ')' [';'] | '(' ')' '{' { ';'} '}' ; = '(' ')' [';'] | '(' ')' '{' { ';'} '}' | '(' ')' [';'] | '(' ')' '{' { ';'} '}' ; = [';'] | '{' { ';'} '}' ; = ; = ; = [] ; = | | | | | | ;