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