- dml →
-
device objident ";" maybe_bitorder device_statements
| maybe_bitorder device_statements
- maybe_bitorder →
-
<empty>
| bitorder ident ";"
- device_statements →
-
device_statements device_statement
| <empty>
- device_statement →
-
object_statement
| toplevel
- object →
-
bank object_spec
- array_list →
-
<empty>
| array_list "[" arraydef "]"
- object →
-
register objident array_list sizespec offsetspec maybe_istemplate object_spec
- bitrangespec →
-
"@" bitrange
| <empty>
- bitrange →
-
"[" expression "]"
| "[" expression ":" expression "]"
- object →
-
field objident bitrange maybe_istemplate object_spec
- fieldarraysize →
-
<empty>
| "[" ident in expression ".." expression "]" fieldarraysize
- object →
-
field objident fieldarraysize bitrangespec maybe_istemplate object_spec
- data →
-
data
- object →
-
session_decl
- session_decl →
-
data named_cdecl ";"
| data named_cdecl "=" initializer ";"
- object →
-
connect objident array_list maybe_istemplate object_spec
| interface objident array_list maybe_istemplate object_spec
| attribute objident array_list maybe_istemplate object_spec
| bank objident array_list maybe_istemplate object_spec
| event objident array_list maybe_istemplate object_spec
| group objident array_list maybe_istemplate object_spec
| port objident array_list maybe_istemplate object_spec
| implement objident array_list maybe_istemplate object_spec
- maybe_extern →
-
extern
| <empty>
- maybe_default →
-
default
| <empty>
- method →
-
method maybe_extern objident method_outparams maybe_default compound_statement
| method maybe_extern objident "(" cdecl_or_ident_list ")" method_outparams maybe_nothrow maybe_default compound_statement
- arraydef →
-
expression
| ident in expression ".." expression
- toplevel →
-
trait typeident maybe_istemplate "{" trait_stmts "}"
- trait_stmts →
-
<empty>
| trait_stmts trait_stmt
- trait_stmt →
-
trait_method
| trait_param
| istemplate ";"
| session named_cdecl ";"
| template "{" object_statements "}"
- trait_method →
-
method shared_method
- shared_method →
-
ident method_params_typed ";"
| ident method_params_typed default compound_statement
| ident method_params_typed compound_statement
- param_ →
-
parameter
- trait_param →
-
param_ named_cdecl ";"
- toplevel →
-
template objident maybe_istemplate object_spec
| header "%{ ... %}"
| footer "%{ ... %}"
| _header "%{ ... %}"
| loggroup ident ";"
| constant ident "=" expression ";"
| extern cdecl_or_ident ";"
| typedef named_cdecl ";"
| extern typedef named_cdecl ";"
| struct ident "{" struct_decls "}"
| import utf8_sconst ";"
- object_desc →
-
composed_string_literal
| <empty>
- object_spec →
-
object_desc ";"
| object_desc "{" object_statements "}"
- object_statements →
-
object_statements object_statement
| <empty>
- object_statement →
-
object_statement_or_typedparam
- object_statement_or_typedparam →
-
object
| parameter
| method
| istemplate ";"
| object_if
| error_stmt
- hashif →
-
if
- hashelse →
-
else
- object_if →
-
hashif "(" expression ")" "{" object_statements "}" object_else
- object_else →
-
<empty>
| hashelse "{" object_statements "}"
| hashelse object_if
- parameter →
-
param_ objident paramspec
- paramspec →
-
";"
| "=" expression ";"
| default expression ";"
| auto ";"
- method_outparams →
-
<empty>
| "->" "(" cdecl_or_ident_list ")"
- method_params_typed →
-
"(" cdecl_list ")" method_outparams throws
- maybe_nothrow →
-
<empty>
| nothrow
- throws →
-
throws
| <empty>
- returnargs →
-
<empty>
| "->" "(" expression_list ")"
- maybe_istemplate →
-
<empty>
| istemplate
- istemplate →
-
is istemplate_list
- istemplate_list →
-
objident
| "(" objident_list ")"
- sizespec →
-
size expression
| <empty>
- offsetspec →
-
"@" expression
| <empty>
- cdecl_or_ident →
-
cdecl
- named_cdecl →
-
cdecl
- cdecl →
-
basetype cdecl2
| const basetype cdecl2
- basetype →
-
typeident
| struct
| layout
| bitfields
| typeof
- cdecl2 →
-
cdecl3
| const cdecl2
| "*" cdecl2
| vect cdecl2
- cdecl3 →
-
typeident
| <empty>
| cdecl3 "[" expression "]"
| cdecl3 "(" cdecl_list_opt_ellipsis ")"
| "(" cdecl2 ")"
- cdecl_list →
-
<empty>
| cdecl_list_nonempty
- cdecl_list_nonempty →
-
cdecl
| cdecl_list_nonempty "," cdecl
- cdecl_list_opt_ellipsis →
-
cdecl_list
| cdecl_list_ellipsis
- cdecl_list_ellipsis →
-
"..."
| cdecl_list_nonempty "," "..."
- 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 named_cdecl ";"
| <empty>
- layout_decl →
-
layout utf8_sconst "{" layout_decls "}"
- layout →
-
layout_decl
- layout_decls →
-
layout_decls named_cdecl ";"
| <empty>
- bitfields →
-
bitfields integer-literal "{" bitfields_decls "}"
- bitfields_decls →
-
bitfields_decls named_cdecl "@" "[" bitfield_range "]" ";"
- bitfield_range →
-
expression
| expression ":" expression
- bitfields_decls →
-
<empty>
- ctypedecl →
-
const_opt basetype ctypedecl_ptr
- ctypedecl_ptr →
-
stars ctypedecl_array
- stars →
-
<empty>
| "*" const stars
| "*" stars
- ctypedecl_array →
-
ctypedecl_simple
- ctypedecl_simple →
-
"(" ctypedecl_ptr ")"
| <empty>
- const_opt →
-
const
| <empty>
- typeident →
-
ident
| char
| double
| float
| int
| long
| short
| signed
| unsigned
| void
| register
- expression →
-
expression "=" expression
- assignop →
-
expression "+=" expression
| expression "-=" expression
| expression "*=" expression
| expression "/=" expression
| expression "%=" expression
| expression "|=" expression
| expression "&=" expression
| expression "^=" expression
| expression "<<=" expression
| expression ">>=" expression
- expression →
-
assignop
| 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
| char-literal
| float-literal
| string-literal
- utf8_sconst →
-
string-literal
- expression →
-
undefined
| "$" objident
| objident
| default
| expression "." objident
| expression "->" objident
| sizeoftype typeoparg
- typeoparg →
-
ctypedecl
| "(" ctypedecl ")"
- expression →
-
new ctypedecl
| new ctypedecl "[" expression "]"
| "(" expression ")"
| "[" expression_list "]"
| expression "[" expression "]"
| expression "[" expression "," identifier "]"
| expression "[" expression ":" expression endianflag "]"
- endianflag →
-
"," identifier
| <empty>
- expression_opt →
-
expression
| <empty>
- expression_list →
-
<empty>
| expression
| expression "," expression_list
- expression_list_ntc →
-
<empty>
| expression_list_ntc_nonempty
- expression_list_ntc_nonempty →
-
expression
| expression "," expression_list_ntc_nonempty
- composed_string_literal →
-
utf8_sconst
| composed_string_literal "+" utf8_sconst
- bracketed_string_literal →
-
composed_string_literal
| "(" composed_string_literal ")"
- single_initializer →
-
expression
| "{" single_initializer_list "}"
| "{" single_initializer_list "," "}"
- initializer →
-
single_initializer
- single_initializer_list →
-
single_initializer
| single_initializer_list "," single_initializer
- statement →
-
statement_except_hashif
- statement_except_hashif →
-
compound_statement
| local ";"
| ";"
| expression ";"
| if "(" expression ")" statement
| if "(" expression ")" statement else statement
| while "(" expression ")" statement
| do statement while "(" expression ")" ";"
| for "(" expression_list_ntc ";" expression_opt ";" expression_list_ntc ")" statement
| switch "(" expression ")" statement
| delete expression ";"
| try statement catch statement
| after "(" expression ")" call expression ";"
| call expression returnargs ";"
| inline expression returnargs ";"
| assert expression ";"
- log_kind →
-
identifier
| error
- log_level →
-
expression
- log_kind →
-
utf8_sconst
- statement_except_hashif →
-
log log_kind "," log_level "," expression ":" bracketed_string_literal log_args ";"
| log log_kind "," log_level ":" bracketed_string_literal log_args ";"
| log log_kind ":" bracketed_string_literal log_args ";"
- hashselect →
-
select
- statement_except_hashif →
-
hashselect ident in "(" expression ")" where "(" expression ")" statement hashelse statement
| foreach ident in "(" expression ")" statement
| ident ":" statement
| case expression ":" statement
| default ":" statement
| goto ident ";"
| break ";"
| continue ";"
| throw ";"
| return ";"
| error_stmt
- error_stmt →
-
error ";"
| error bracketed_string_literal ";"
- statement_except_hashif →
-
warning_stmt
- warning_stmt →
-
_warning bracketed_string_literal ";"
- log_args →
-
<empty>
| log_args "," expression
- compound_statement →
-
"{" statement_list "}"
- statement_list →
-
<empty>
| statement_list statement
- local_keyword →
-
auto
| local
- static →
-
static
- local_decl_kind →
-
local_keyword
| static
- local →
-
local_decl_kind cdecl
| local_decl_kind cdecl "=" initializer
- objident_list →
-
objident
| objident_list "," objident
- objident →
-
ident
| this
| register
| signed
| unsigned
- ident →
-
attribute
| bank
| bitorder
| connect
| constant
| data
| device
| event
| field
| footer
| group
| header
| implement
| import
| interface
| loggroup
| method
| port
| size
| subdevice
| nothrow
| then
| throws
| _header
| trait
| identifier
| each
| session
| sequence
| class
| enum
| namespace
| private
| protected
| public
| restrict
| union
| using
| virtual
| volatile