Previous - Up - Next

1   Formal Grammar

dml →
device objident ";" syntax_modifiers device_statements
| syntax_modifiers device_statements
syntax_modifiers →
<empty>
| syntax_modifiers syntax_modifier
syntax_modifier →
bitorder ident ";"
device_statements →
device_statements device_statement
| <empty>
device_statement →
object_statement
| toplevel
| import
object →
bank maybe_objident object_spec
| register objident sizespec offsetspec istemplate object_spec
| register objident "[" arraydef "]" sizespec offsetspec istemplate object_spec
| field objident bitrange istemplate object_spec
| field objident istemplate object_spec
| data cdecl ";"
| connect objident object_spec
| interface objident object_spec
| attribute objident object_spec
| event objident object_spec
| group objident object_spec
| implement objident object_spec
| attribute objident "[" arraydef "]" object_spec
| group objident "[" arraydef "]" object_spec
| connect objident "[" arraydef "]" object_spec
method →
method objident method_params method_def
| method extern objident method_params method_def
arraydef →
expression
| ident in expression ".." expression
toplevel →
template objident object_spec
| header "%{ ... %}"
| footer "%{ ... %}"
| loggroup ident ";"
| constant ident "=" expression ";"
| extern cdecl_or_ident ";"
| typedef cdecl ";"
| struct ident "{" struct_decls "}"
istemplate_stmt →
is objident ";"
import →
import string-literal ";"
object_desc →
string-literal
| <empty>
object_spec →
object_desc ";"
| object_desc "{" object_statements "}"
object_statements →
object_statements object_statement
| <empty>
object_statement →
object
| parameter
| method
| istemplate_stmt
parameter →
parameter objident paramspec
paramspec →
";"
| "=" expression ";"
| default expression ";"
| auto ";"
method_params →
<empty>
| "(" cdecl_or_ident_list ")"
| "->" "(" cdecl_or_ident_list ")"
| "(" cdecl_or_ident_list ")" "->" "(" cdecl_or_ident_list ")"
returnargs →
<empty>
| "->" "(" expression_list ")"
method_def →
compound_statement
| default compound_statement
istemplate →
<empty>
| is "(" objident_list ")"
sizespec →
size expression
| <empty>
offsetspec →
"@" expression
| <empty>
bitrange →
"[" expression "]"
| "[" expression ":" expression "]"
cdecl_or_ident →
cdecl
cdecl →
typeident cdecl2
| struct cdecl2
| typeof cdecl2
| const typeident cdecl2
cdecl2 →
cdecl3
| const cdecl2
| "*" cdecl2
| vect cdecl2
cdecl3 →
typeident
| <empty>
| cdecl3 "[" expression "]"
| cdecl3 "(" cdecl_list ")"
| "(" cdecl2 ")"
cdecl_list →
<empty>
| cdecl_list2
cdecl_list2 →
cdecl
| ELLIPSIS
| cdecl_list2 "," cdecl
| cdecl_list2 "," ELLIPSIS
cdecl_or_ident_list →
<empty>
| cdecl_or_ident_list2
cdecl_or_ident_list2 →
cdecl_or_ident
| cdecl_or_ident_list2 "," cdecl_or_ident
typeof →
typeof expression
struct →
struct "{" struct_decls "}"
struct_decls →
struct_decls cdecl ";"
| <empty>
ctypedecl →
"(" ctypedecl ")"
| typeof expression
| typeident ctypedecl_pointer
ctypedecl_pointer →
<empty>
| "*" ctypedecl_pointer
typeident →
ident
| char
| double
| float
| int
| long
| short
| signed
| unsigned
| void
comma_expression →
expression
| comma_expression "," expression
expression →
expression "=" expression
| expression "+=" expression
| expression "-=" expression
| expression "*=" expression
| expression "/=" expression
| expression "%=" expression
| expression "|=" expression
| expression "&=" expression
| expression "^=" expression
| expression "<<=" expression
| expression ">>=" expression
| expression "?" expression ":" expression
| expression "+" expression
| expression "-" expression
| expression "*" expression
| expression "/" expression
| expression "%" expression
| expression "<<" expression
| expression ">>" expression
| expression "==" expression
| expression "!=" expression
| expression "<" expression
| expression ">" expression
| expression "<=" expression
| expression ">=" expression
| expression "||" expression
| expression "&&" expression
| expression "|" expression
| expression "^" expression
| expression "&" expression
| cast "(" expression "," ctypedecl ")"
| sizeof expression
| "-" expression
| "+" expression
| "!" expression
| "~" expression
| "&" expression
| "*" expression
| defined expression
| "#" expression
| "++" expression
| "--" expression
| expression "++"
| expression "--"
| expression "(" expression_list ")"
| integer-literal
| hex-literal
| binary-literal
| float-literal
| string-literal
| undefined
| "$" objident
| ident
| expression "." objident
| expression "->" objident
| sizeoftype ctypedecl
| new ctypedecl
| "(" expression ")"
| "[" expression_list "]"
| expression "[" expression endianflag "]"
| expression "[" expression ":" expression endianflag "]"
endianflag →
"," identifier
| <empty>
expression_opt →
expression
| <empty>
comma_expression_opt →
comma_expression
| <empty>
expression_list →
<empty>
| expression
| expression "," expression_list
statement →
compound_statement
| ";"
| expression ";"
| if "(" expression ")" statement
| if "(" expression ")" statement else statement
| while "(" expression ")" statement
| do statement while "(" expression ")"
| for "(" comma_expression_opt ";" expression_opt ";" comma_expression_opt ")" statement
| switch "(" expression ")" statement
| delete expression ";"
| try statement catch statement
| after "(" expression ")" call expression ";"
| call expression returnargs ";"
| inline expression returnargs ";"
| assert expression ";"
| log string-literal "," expression "," expression ":" string-literal log_args ";"
| log string-literal "," expression ":" string-literal log_args ";"
| log string-literal ":" string-literal log_args ";"
| select ident in "(" expression ")" where "(" expression ")" statement else statement
| foreach ident in "(" expression ")" statement
| ident ":" statement
| case expression ":" statement
| default ":" statement
| goto ident ";"
| break ";"
| continue ";"
| throw ";"
| return ";"
| error ";"
| error string-literal ";"
log_args →
<empty>
| log_args "," expression
compound_statement →
"{" locals statement_list "}"
| "{" statement_list "}"
| "{" locals "}"
| "{" "}"
statement_list →
statement
| statement_list statement
locals →
local
| locals local
local_keyword →
local
| auto
local →
local_keyword cdecl ";"
| static cdecl ";"
| local_keyword cdecl "=" expression ";"
| static cdecl "=" expression ";"
objident_list →
objident
| objident_list "," objident
maybe_objident →
objident
| <empty>
objident →
ident
| this
| register
| signed
| unsigned
ident →
identifier
| attribute
| bank
| bitorder
| connect
| constant
| data
| device
| event
| field
| footer
| group
| header
| implement
| import
| interface
| loggroup
| method
| size
| class
| enum
| namespace
| private
| protected
| public
| restrict
| union
| using
| virtual
| volatile

Previous - Up - Next