EBNF Syntax: MSIL

Syntax Productions
Variants
Terminals
Literals
Production Cross Reference
Lookahead-1 Parser First Token
Lookahead-1 Parser Ambiguities

Syntax Productions

A B C D E F G H I J K L M N O P Q R S T U V W X Y Z

Start Symbol (syntax)

Name Production
arrayvalue '(' bytes ')'
asm_or_ref_decl
assembly_attr
  • 'noappdomain'
  • 'noprocess'
  • 'nomachine'
assembly_decl
assembly_decls { assembly_decl }
assembly_head '.assembly' { assembly_attr } comp_name
assemblyref_decl
assemblyref_decls { assemblyref_decl }
assemblyref_head '.assembly' 'extern' comp_name [ 'as' comp_name ]
at_opt 'at' id
base_id C_STYLE_IDENTIFIER
bound [ int32 ] [ '...' [ int32 ] ]
bounds bound { ',' bound }
bytes { hexbyte }
call_conv { 'instance' | 'explicit' } [ call_kind ]
call_kind
cavalue
class_attr
  • 'public'
  • 'private'
  • 'nested' nested_access
  • 'value'
  • 'enum'
  • 'interface'
  • 'sealed'
  • 'abstract'
  • 'auto'
  • 'sequential'
  • 'explicit'
  • 'ansi'
  • 'unicode'
  • 'autochar'
  • 'import'
  • 'serializable'
  • 'beforefieldinit'
  • 'specialname'
  • 'rtspecialname'
class_decl
class_decls { class_decl }
class_head '.class' { class_attr } id [ extends_clause ] [ impl_clause ]
class_ref
class_ref_prefix [ '.module' ] comp_name
comp_name id { '.' id }
comp_qstring qstring { '+' qstring }
custom_type call_conv type [ type_spec '::' ] '.ctor' '(' sig_args ')'
customattr_decl '.custom' [ '(' owner_type ')' ] custom_type [ '=' string_or_bytes ]
data_body
data_decl data_head data_body
data_head '.data' [ 'tls' ] [ id '=' ]
data_item
data_items data_item { ',' data_item }
decl
decls { decl }
event_attr
  • 'rtspecialname'
  • 'specialname'
event_decl
event_decls { event_decl }
event_head '.event' { event_attr } [ type_spec ] id
expt_attr
exptype_decl
exptype_decls { exptype_decl }
exptype_head '.class' 'extern' { expt_attr } comp_name
exptype_spec
extends_clause 'extends' class_ref
extsource_spec '.line' int32 [ ':' int32 ] [ sqstring ]
field_attr
  • 'public'
  • 'private'
  • 'family'
  • 'assembly'
  • 'famandassem'
  • 'famorassem'
  • 'privatescope'
  • 'static'
  • 'initonly'
  • 'rtspecialname'
  • 'specialname'
  • marshal_spec
  • 'literal'
  • 'notserialized'
field_decl '.field' [ repeat_opt ] { field_attr } type id [ at_opt ] [ init_opt ]
field_init
file_attr 'nometadata'
file_decl '.file' { file_attr } comp_name [ file_entry ] [ '.hash' '=' arrayvalue [ file_entry ] ]
file_entry '.entrypoint'
filter_clause 'filter' filter_spec
filter_spec
fixed_spec
  • 'sysstring'
  • 'array'
float64
float64bit C_STYLE_FLOATING_POINT_LITERAL
handler_block
handler_spec
hexbyte hexdigit hexdigit
hexdigit
  • '0'
  • '1'
  • '2'
  • '3'
  • '4'
  • '5'
  • '6'
  • '7'
  • '8'
  • '9'
  • 'a'
  • 'b'
  • 'c'
  • 'd'
  • 'e'
  • 'f'
  • 'A'
  • 'B'
  • 'C'
  • 'D'
  • 'E'
  • 'F'
id
impl_attr
  • 'native'
  • 'cil'
  • 'optil'
  • 'managed'
  • 'unmanaged'
  • 'forwardref'
  • 'preservesig'
  • 'runtime'
  • 'internalcall'
  • 'synchronized'
  • 'noinlining'
impl_clause 'implements' class_ref { ',' class_ref }
init_opt '=' field_init
instr INSTR
int
int32 int64bit
int64 int64bit
int64bit C_STYLE_64_BIT_INTEGER_LITERAL
label
labels (not used) label { ',' label } [ ',' ]
language_decl '.language' sqstring [ ',' sqstring [ ',' sqstring ] ]
local_spec
manifestres_attr
  • 'public'
  • 'private'
manifestres_decl
manifestres_decls { manifestres_decl }
manifestres_head '.mresource' { manifestres_attr } comp_name
marshal_spec 'marshal' '(' native_type ')'
member_ref
method_attr
  • 'static'
  • 'public'
  • 'private'
  • 'family'
  • 'assembly'
  • 'famandassem'
  • 'famorassem'
  • 'privatescope'
  • 'final'
  • 'virtual'
  • 'abstract'
  • 'hidebysig'
  • 'newslot'
  • 'reqsecobj'
  • 'specialname'
  • 'rtspecialname'
  • 'unmanagedexp'
  • 'pinvokeimpl' '(' [ comp_qstring [ 'as' comp_qstring ] ] { pinv_attr } ')'
method_decl
method_decls { method_decl }
method_head '.method' { method_attr } call_conv { param_attr } type [ marshal_spec ] method_name '(' sig_args ')' { impl_attr }
method_name
method_ref call_conv type [ type_spec '::' ] method_name '(' sig_args ')'
module_head '.module' [ [ 'extern' ] comp_name ]
name_value_pair comp_qstring '=' cavalue
name_value_pairs name_value_pair { name_value_pair }
namespace_head '.namespace' comp_name
native_bound [ int32 ] [ '+' [ int32 ] ]
native_prefix
  • 'custom' '(' comp_qstring ',' comp_qstring ')'
  • 'fixed' fixed_spec '[' int32 ']'
  • 'variant' [ 'bool' ]
  • 'error'
  • 'currency'
  • 'syschar'
  • 'void'
  • 'bool'
  • sized_float
  • int
  • 'unsigned' int
  • 'decimal'
  • 'date'
  • 'bstr'
  • 'lpstr'
  • 'lpwstr'
  • 'lptstr'
  • 'objectref'
  • 'iunknown'
  • 'idispatch'
  • 'struct'
  • 'interface'
  • 'safearray' variant_type [ ',' comp_qstring ]
  • 'nested' 'struct'
  • 'byvalstr'
  • 'ansi' 'bstr'
  • 'tbstr'
  • 'method'
  • 'as' 'any'
  • 'lpstruct'
native_suffix
native_type [ native_prefix { native_suffix } ]
nested_access
  • 'public'
  • 'private'
  • 'family'
  • 'assembly'
  • 'famandassem'
  • 'famorassem'
num64
owner_type
param_attr '[' param_spec ']'
param_spec
  • 'in'
  • 'out'
  • 'opt'
pinv_attr
  • 'nomangle'
  • 'ansi'
  • 'unicode'
  • 'autochar'
  • 'lasterr'
  • 'winapi'
  • unmanaged_kind
program decls
property_attr
  • 'rtspecialname'
  • 'specialname'
property_decl
property_decls { property_decl }
property_head '.property' { property_attr } type id '(' sig_args ')' [ init_opt ]
qstring C_STYLE_QUOTED_STRING_LITERAL
repeat_opt '[' int32 ']'
scope_block '{' method_decls '}'
sec_action
  • 'request'
  • 'demand'
  • 'assert'
  • 'deny'
  • 'permitonly'
  • 'linkcheck'
  • 'inheritcheck'
  • 'reqmin'
  • 'reqopt'
  • 'reqrefuse'
  • 'prejitgrant'
  • 'prejitdeny'
  • 'noncasdemand'
  • 'noncaslinkdemand'
  • 'noncasinheritance'
sec_decl '.permission' sec_action sec_spec
sec_spec
seh_block try_block { seh_clause }
seh_clause
sig_arg
sig_args [ sig_arg { ',' sig_arg } ]
sized_float
  • 'float32'
  • 'float64'
sized_int
  • 'int8'
  • 'int16'
  • 'int32'
  • 'int64'
slashed_name comp_name { '/' comp_name }
sqstring C_STYLE_SINGLE_QUOTED_STRING_LITERAL
string_or_bytes
syntax program
truefalse
  • 'true'
  • 'false'
try_block '.try' try_spec
try_spec
type type_prefix { type_suffix }
type_prefix
type_spec
type_suffix
unmanaged_kind
  • 'cdecl'
  • 'stdcall'
  • 'thiscall'
  • 'fastcall'
va_spec
  • 'int8' ':'
  • 'int16' ':'
  • 'int32' ':'
variant_prefix
  • 'null'
  • 'variant'
  • 'currency'
  • 'void'
  • 'bool'
  • sized_float
  • sized_int
  • 'unsigned' int
  • 'decimal'
  • 'data'
  • 'bstr'
  • 'lpstr'
  • 'lpwstr'
  • 'iunknown'
  • 'idispatch'
  • 'safearray'
  • 'int'
  • 'error'
  • 'hresult'
  • 'carray'
  • 'userdefined'
  • 'record'
  • 'filetime'
  • 'blob'
  • 'stream'
  • 'storage'
  • 'streamed_object'
  • 'stored_object'
  • 'blob_object'
  • 'cf'
  • 'clsid'
variant_suffix
  • '*'
  • '[' ']'
  • 'vector'
  • '&'
variant_type [ variant_prefix { variant_suffix } ]
vtfixup_attr
  • 'int32'
  • 'int64'
  • 'fromunmanagd'
  • 'callmostderived'
vtfixup_decl '.vtfixup' '[' int32 ']' { vtfixup_attr } 'at' id


Variants

none

Terminals

Terminal Used in
C_STYLE_64_BIT_INTEGER_LITERAL int64bit
C_STYLE_FLOATING_POINT_LITERAL float64bit
C_STYLE_IDENTIFIER base_id
C_STYLE_QUOTED_STRING_LITERAL qstring
C_STYLE_SINGLE_QUOTED_STRING_LITERAL sqstring
INSTR instr

Literals

Literal Used in
& data_item / type_suffix / variant_suffix
( arrayvalue / cavalue / class_decl / custom_type / customattr_decl / data_item / field_init / float64 / marshal_spec / method_attr / method_decl / method_head / method_ref / native_prefix / property_head / sec_spec / type_prefix / type_suffix
) arrayvalue / cavalue / class_decl / custom_type / customattr_decl / data_item / field_init / float64 / marshal_spec / method_attr / method_decl / method_head / method_ref / native_prefix / property_head / sec_spec / type_prefix / type_suffix
* data_item / native_suffix / type_prefix / type_suffix / variant_suffix
+ comp_qstring / native_bound
, bounds / data_items / impl_clause / labels / language_decl / native_prefix / sig_args
. comp_name
... bound / sig_arg
.addon event_decl
.assembly assembly_head / assemblyref_head / manifestres_decl
.cctor method_name
.class class_head / exptype_decl / exptype_head
.corflags decl
.ctor custom_type / method_name
.custom customattr_decl
.data data_head
.emitbyte method_decl
.entrypoint file_entry / method_decl
.event event_head
.export method_decl
.field field_decl
.file decl / exptype_decl / file_decl / manifestres_decl
.fire event_decl
.get property_decl
.hash assembly_decl / assemblyref_decl / file_decl
.imagebase decl
.language language_decl
.line extsource_spec
.locale asm_or_ref_decl
.locals method_decl
.maxstack method_decl
.method method_head
.module class_ref_prefix / module_head
.mresource manifestres_head
.namespace namespace_head
.other event_decl / property_decl
.override class_decl / method_decl
.pack class_decl
.param method_decl
.permission sec_decl
.property property_head
.publickey asm_or_ref_decl
.publickeytoken assemblyref_decl
.removeon event_decl
.set property_decl
.size class_decl
.subsystem decl
.try try_block
.ver asm_or_ref_decl
.vtentry method_decl
.vtfixup vtfixup_decl
.zeroinit method_decl
/ slashed_name
: asm_or_ref_decl / extsource_spec / method_decl / va_spec
:: class_decl / custom_type / member_ref / method_decl / method_ref
= asm_or_ref_decl / assemblyref_decl / customattr_decl / data_head / data_item / file_decl / init_opt / local_spec / name_value_pair / sec_spec
[ class_ref / method_decl / native_prefix / native_suffix / param_attr / repeat_opt / type_spec / type_suffix / variant_suffix / vtfixup_decl
] class_ref / method_decl / native_prefix / native_suffix / param_attr / repeat_opt / type_spec / type_suffix / variant_suffix / vtfixup_decl
{ class_decl / data_body / decl / scope_block
} class_decl / data_body / decl / scope_block
0 hexdigit
1 hexdigit
2 hexdigit
3 hexdigit
4 hexdigit
5 hexdigit
6 hexdigit
7 hexdigit
8 hexdigit
9 hexdigit
a hexdigit
A hexdigit
abstract class_attr / method_attr
algorithm assembly_decl
alignment decl
ansi class_attr / native_prefix / pinv_attr
any native_prefix
array fixed_spec
as assemblyref_head / method_attr / method_decl / native_prefix
assembly field_attr / method_attr / nested_access
assert sec_action
at at_opt / manifestres_decl / vtfixup_decl
auto class_attr
autochar class_attr / pinv_attr
B hexdigit
b hexdigit
beforefieldinit class_attr
blob variant_prefix
blob_object variant_prefix
bool field_init / native_prefix / type_prefix / variant_prefix
bstr native_prefix / variant_prefix
bytearray data_item / field_init
byvalstr native_prefix
C hexdigit
c hexdigit
callmostderived vtfixup_attr
carray variant_prefix
catch seh_clause
cdecl unmanaged_kind
cf variant_prefix
char data_item / field_init / type_prefix
cil impl_attr
class type_prefix
clsid variant_prefix
currency native_prefix / variant_prefix
custom native_prefix
D hexdigit
d hexdigit
data variant_prefix
date native_prefix
decimal native_prefix / variant_prefix
default call_kind
demand sec_action
deny sec_action
e hexdigit
E hexdigit
enum class_attr
error native_prefix / variant_prefix
explicit call_conv / class_attr
extends extends_clause
extern assemblyref_head / exptype_head / exptype_spec / manifestres_decl / module_head
F hexdigit
f hexdigit
false truefalse
famandassem field_attr / method_attr / nested_access
family field_attr / method_attr / nested_access
famorassem field_attr / method_attr / nested_access
fastcall unmanaged_kind
fault seh_clause
field member_ref
filetime variant_prefix
filter filter_clause
final method_attr
finally seh_clause
fixed native_prefix
float32 float64 / sized_float
float64 float64 / sized_float
forwardref impl_attr
fromunmanagd vtfixup_attr
handler handler_block
hidebysig method_attr
hresult variant_prefix
idispatch native_prefix / variant_prefix
implements impl_clause
import class_attr
in param_spec
inheritcheck sec_action
init method_decl
initonly field_attr
instance call_conv
int int / type_prefix / variant_prefix
int16 sized_int / va_spec
int32 sized_int / va_spec / vtfixup_attr
int64 sized_int / vtfixup_attr
int8 sized_int / va_spec
interface class_attr / native_prefix
internalcall impl_attr
iunknown native_prefix / variant_prefix
lasterr pinv_attr
linkcheck sec_action
literal field_attr
lpstr native_prefix / variant_prefix
lpstruct native_prefix
lptstr native_prefix
lpwstr native_prefix / variant_prefix
managed impl_attr
marshal marshal_spec
method member_ref / native_prefix / type_prefix
modopt type_suffix
modreq type_suffix
native impl_attr / type_prefix
nested class_attr / expt_attr / native_prefix
newslot method_attr
noappdomain assembly_attr
noinlining impl_attr
nomachine assembly_attr
nomangle pinv_attr
nometadata file_attr
noncasdemand sec_action
noncasinheritance sec_action
noncaslinkdemand sec_action
noprocess assembly_attr
notserialized field_attr
null variant_prefix
nullref field_init
object type_prefix
objectref native_prefix
opt param_spec
optil impl_attr
out param_spec
permitonly sec_action
pinned type_suffix
pinvokeimpl method_attr
prejitdeny sec_action
prejitgrant sec_action
preservesig impl_attr
private class_attr / expt_attr / field_attr / manifestres_attr / method_attr / nested_access
privatescope field_attr / method_attr
public class_attr / expt_attr / field_attr / manifestres_attr / method_attr / nested_access
record variant_prefix
reqmin sec_action
reqopt sec_action
reqrefuse sec_action
reqsecobj method_attr
request sec_action
rtspecialname class_attr / event_attr / field_attr / method_attr / property_attr
runtime impl_attr
safearray native_prefix / variant_prefix
sealed class_attr
sequential class_attr
serializable class_attr
specialname class_attr / event_attr / field_attr / method_attr / property_attr
static field_attr / method_attr
stdcall unmanaged_kind
storage variant_prefix
stored_object variant_prefix
stream variant_prefix
streamed_object variant_prefix
string type_prefix
struct native_prefix
synchronized impl_attr
syschar native_prefix
sysstring fixed_spec
tbstr native_prefix
thiscall unmanaged_kind
tls data_head
to handler_spec / try_spec
true truefalse
typedref type_prefix
unicode class_attr / pinv_attr
unmanaged call_kind / impl_attr
unmanagedexp method_attr
unsigned native_prefix / type_prefix / variant_prefix
userdefined variant_prefix
value class_attr / type_prefix
valuetype type_prefix
vararg call_kind
variant native_prefix / variant_prefix
vector variant_suffix
virtual method_attr
void native_prefix / type_prefix / variant_prefix
winapi pinv_attr
with class_decl

Production Cross Reference

Production Used in
arrayvalueasm_or_ref_decl / assemblyref_decl / data_item / field_init / file_decl / local_spec / sec_spec / string_or_bytes
asm_or_ref_declassembly_decl / assemblyref_decl
assembly_attrassembly_head
assembly_declassembly_decls
assembly_declsdecl
assembly_headdecl
assemblyref_declassemblyref_decls
assemblyref_declsdecl
assemblyref_headdecl
at_optfield_decl
base_idid
boundbounds
boundstype_suffix
bytesarrayvalue
call_convclass_decl / custom_type / method_head / method_ref / type_prefix
call_kindcall_conv
cavaluename_value_pair
class_attrclass_head
class_declclass_decls
class_declsclass_decl / decl
class_headclass_decl / decl
class_refcavalue / extends_clause / impl_clause / seh_clause / type_prefix / type_spec / type_suffix
class_ref_prefixclass_ref / type_spec
comp_nameassembly_head / assemblyref_head / class_ref_prefix / exptype_decl / exptype_head / exptype_spec / file_decl / manifestres_decl / manifestres_head / method_name / module_head / namespace_head / slashed_name
comp_qstringcavalue / data_item / field_init / local_spec / method_attr / name_value_pair / native_prefix / string_or_bytes
custom_typecustomattr_decl
customattr_declasm_or_ref_decl / class_decl / decl / event_decl / exptype_decl / manifestres_decl / method_decl / property_decl
data_bodydata_decl
data_declclass_decl / decl / method_decl
data_headdata_decl
data_itemdata_body / data_items
data_itemsdata_body
decldecls
declsdecl / program
event_attrevent_head
event_declevent_decls
event_declsclass_decl
event_headclass_decl
expt_attrexptype_head
exptype_declexptype_decls
exptype_declsdecl
exptype_headdecl
exptype_specexptype_decl
extends_clauseclass_head
extsource_specclass_decl / decl / event_decl / method_decl / property_decl
field_attrfield_decl
field_declclass_decl / decl
field_initinit_opt
file_attrfile_decl
file_decldecl
file_entryfile_decl
filter_clauseseh_clause
filter_specfilter_clause
fixed_specnative_prefix
float64data_item / num64
float64bitfloat64
handler_blockseh_clause
handler_spechandler_block
hexbytebytes
hexdigithexbyte
idat_opt / class_head / comp_name / data_head / data_item / event_head / field_decl / filter_spec / handler_spec / label / member_ref / method_decl / property_head / sig_arg / try_spec / vtfixup_decl
impl_attrmethod_head
impl_clauseclass_head
init_optfield_decl / method_decl / property_head
instrmethod_decl
intnative_prefix / variant_prefix
int32asm_or_ref_decl / assembly_decl / bound / cavalue / class_decl / decl / exptype_spec / extsource_spec / filter_spec / float64 / handler_spec / label / manifestres_decl / method_decl / native_bound / native_prefix / repeat_opt / try_spec / vtfixup_decl
int64data_item / decl / field_init / float64 / num64
int64bitint32 / int64
labellabels
language_declclass_decl / decl / event_decl / method_decl / property_decl
local_specasm_or_ref_decl
manifestres_attrmanifestres_head
manifestres_declmanifestres_decls
manifestres_declsdecl
manifestres_headdecl
marshal_specfield_attr / method_head / sig_arg
member_refowner_type
method_attrmethod_head
method_declmethod_decls
method_declsclass_decl / decl / scope_block
method_headclass_decl / decl
method_nameclass_decl / method_decl / method_head / method_ref
method_refevent_decl / member_ref / property_decl
module_headdecl
name_value_pairname_value_pairs
name_value_pairssec_spec
namespace_headdecl
native_boundnative_suffix
native_prefixnative_type
native_suffixnative_type
native_typemarshal_spec
nested_accessclass_attr / expt_attr
num64field_init
owner_typecustomattr_decl
param_attrmethod_head / sig_arg
param_specparam_attr
pinv_attrmethod_attr
programsyntax
property_attrproperty_head
property_declproperty_decls
property_declsclass_decl
property_headclass_decl
qstringcomp_qstring
repeat_optdata_item / field_decl
scope_blockfilter_spec / handler_block / method_decl / try_spec
sec_actionsec_decl
sec_declassembly_decl / class_decl / decl / method_decl
sec_specsec_decl
seh_blockmethod_decl
seh_clauseseh_block
sig_argsig_args
sig_argsclass_decl / custom_type / method_decl / method_head / method_ref / property_head / type_prefix
sized_floatdata_item / field_init / native_prefix / type_prefix / variant_prefix
sized_intdata_item / field_init / int / type_prefix / variant_prefix
slashed_nameclass_ref
sqstringextsource_spec / id / language_decl
string_or_bytescustomattr_decl
syntax
truefalsecavalue / field_init
try_blockseh_block
try_spectry_block
typeclass_decl / custom_type / field_decl / member_ref / method_head / method_ref / property_head / sig_arg / type_prefix / type_spec
type_prefixtype
type_specclass_decl / custom_type / event_head / member_ref / method_decl / method_ref / owner_type / sec_spec
type_suffixtype
unmanaged_kindcall_kind / pinv_attr
va_speccavalue
variant_prefixvariant_type
variant_suffixvariant_type
variant_typenative_prefix
vtfixup_attrvtfixup_decl
vtfixup_decldecl
labelsNot used in any production

Lookahead-1 Parser First Token

A B C D E F G H I J K L M N O P Q R S T U V W X Y Z

Start symbol = syntax

Name First Tokens
arrayvalue '('
asm_or_ref_decl '.custom'
'.locale'
'.publickey'
'.ver'
assembly_attr 'noappdomain'
'nomachine'
'noprocess'
assembly_decl '.custom'
'.hash'
'.locale'
'.permission'
'.publickey'
'.ver'
assembly_decls ø
'.custom'
'.hash'
'.locale'
'.permission'
'.publickey'
'.ver'
assembly_head '.assembly'
assemblyref_decl '.custom'
'.hash'
'.locale'
'.publickey'
'.publickeytoken'
'.ver'
assemblyref_decls ø
'.custom'
'.hash'
'.locale'
'.publickey'
'.publickeytoken'
'.ver'
assemblyref_head '.assembly'
at_opt 'at'
base_id C_STYLE_IDENTIFIER
bound ø
'...'
C_STYLE_64_BIT_INTEGER_LITERAL
bounds ø
','
'...'
C_STYLE_64_BIT_INTEGER_LITERAL
bytes ø
'0'
'1'
'2'
'3'
'4'
'5'
'6'
'7'
'8'
'9'
'A'
'B'
'C'
'D'
'E'
'F'
'a'
'b'
'c'
'd'
'e'
'f'
call_conv ø
'default'
'explicit'
'instance'
'unmanaged'
'vararg'
call_kind 'default'
'unmanaged'
'vararg'
cavalue '['
'false'
'true'
C_STYLE_64_BIT_INTEGER_LITERAL
C_STYLE_IDENTIFIER
C_STYLE_QUOTED_STRING_LITERAL
C_STYLE_SINGLE_QUOTED_STRING_LITERAL
class_attr 'abstract'
'ansi'
'auto'
'autochar'
'beforefieldinit'
'enum'
'explicit'
'import'
'interface'
'nested'
'private'
'public'
'rtspecialname'
'sealed'
'sequential'
'serializable'
'specialname'
'unicode'
'value'
class_decl '.class'
'.custom'
'.data'
'.event'
'.field'
'.language'
'.line'
'.method'
'.override'
'.pack'
'.permission'
'.property'
'.size'
class_decls ø
'.class'
'.custom'
'.data'
'.event'
'.field'
'.language'
'.line'
'.method'
'.override'
'.pack'
'.permission'
'.property'
'.size'
class_head '.class'
class_ref '['
C_STYLE_IDENTIFIER
C_STYLE_SINGLE_QUOTED_STRING_LITERAL
class_ref_prefix '.module'
C_STYLE_IDENTIFIER
C_STYLE_SINGLE_QUOTED_STRING_LITERAL
comp_name C_STYLE_IDENTIFIER
C_STYLE_SINGLE_QUOTED_STRING_LITERAL
comp_qstring C_STYLE_QUOTED_STRING_LITERAL
custom_type 'bool'
'char'
'class'
'default'
'explicit'
'float32'
'float64'
'instance'
'int16'
'int32'
'int64'
'int8'
'method'
'native'
'object'
'string'
'typedref'
'unmanaged'
'unsigned'
'value'
'valuetype'
'vararg'
'void'
customattr_decl '.custom'
data_body '&'
'bytearray'
'char'
'float32'
'float64'
'int16'
'int32'
'int64'
'int8'
'{'
data_decl '.data'
data_head '.data'
data_item '&'
'bytearray'
'char'
'float32'
'float64'
'int16'
'int32'
'int64'
'int8'
data_items '&'
'bytearray'
'char'
'float32'
'float64'
'int16'
'int32'
'int64'
'int8'
decl '.assembly'
'.class'
'.corflags'
'.custom'
'.data'
'.field'
'.file'
'.imagebase'
'.language'
'.line'
'.method'
'.module'
'.mresource'
'.namespace'
'.permission'
'.subsystem'
'.vtfixup'
decls ø
'.assembly'
'.class'
'.corflags'
'.custom'
'.data'
'.field'
'.file'
'.imagebase'
'.language'
'.line'
'.method'
'.module'
'.mresource'
'.namespace'
'.permission'
'.subsystem'
'.vtfixup'
event_attr 'rtspecialname'
'specialname'
event_decl '.addon'
'.custom'
'.fire'
'.language'
'.line'
'.other'
'.removeon'
event_decls ø
'.addon'
'.custom'
'.fire'
'.language'
'.line'
'.other'
'.removeon'
event_head '.event'
expt_attr 'nested'
'private'
'public'
exptype_decl '.class'
'.custom'
'.file'
exptype_decls ø
'.class'
'.custom'
'.file'
exptype_head '.class'
exptype_spec 'extern'
C_STYLE_64_BIT_INTEGER_LITERAL
extends_clause 'extends'
extsource_spec '.line'
field_attr 'assembly'
'famandassem'
'family'
'famorassem'
'initonly'
'literal'
'marshal'
'notserialized'
'private'
'privatescope'
'public'
'rtspecialname'
'specialname'
'static'
field_decl '.field'
field_init 'bool'
'bytearray'
'char'
'float32'
'float64'
'int16'
'int32'
'int64'
'int8'
'nullref'
C_STYLE_QUOTED_STRING_LITERAL
file_attr 'nometadata'
file_decl '.file'
file_entry '.entrypoint'
filter_clause 'filter'
filter_spec '{'
C_STYLE_64_BIT_INTEGER_LITERAL
C_STYLE_IDENTIFIER
C_STYLE_SINGLE_QUOTED_STRING_LITERAL
fixed_spec 'array'
'sysstring'
float64 'float32'
'float64'
C_STYLE_FLOATING_POINT_LITERAL
float64bit C_STYLE_FLOATING_POINT_LITERAL
handler_block 'handler'
'{'
handler_spec C_STYLE_64_BIT_INTEGER_LITERAL
C_STYLE_IDENTIFIER
C_STYLE_SINGLE_QUOTED_STRING_LITERAL
hexbyte '0'
'1'
'2'
'3'
'4'
'5'
'6'
'7'
'8'
'9'
'A'
'B'
'C'
'D'
'E'
'F'
'a'
'b'
'c'
'd'
'e'
'f'
hexdigit '0'
'1'
'2'
'3'
'4'
'5'
'6'
'7'
'8'
'9'
'A'
'B'
'C'
'D'
'E'
'F'
'a'
'b'
'c'
'd'
'e'
'f'
id C_STYLE_IDENTIFIER
C_STYLE_SINGLE_QUOTED_STRING_LITERAL
impl_attr 'cil'
'forwardref'
'internalcall'
'managed'
'native'
'noinlining'
'optil'
'preservesig'
'runtime'
'synchronized'
'unmanaged'
impl_clause 'implements'
init_opt '='
instr INSTR
int 'int'
'int16'
'int32'
'int64'
'int8'
int32 C_STYLE_64_BIT_INTEGER_LITERAL
int64 C_STYLE_64_BIT_INTEGER_LITERAL
int64bit C_STYLE_64_BIT_INTEGER_LITERAL
label C_STYLE_64_BIT_INTEGER_LITERAL
C_STYLE_IDENTIFIER
C_STYLE_SINGLE_QUOTED_STRING_LITERAL
labels C_STYLE_64_BIT_INTEGER_LITERAL
C_STYLE_IDENTIFIER
C_STYLE_SINGLE_QUOTED_STRING_LITERAL
language_decl '.language'
local_spec '='
C_STYLE_QUOTED_STRING_LITERAL
manifestres_attr 'private'
'public'
manifestres_decl '.assembly'
'.custom'
'.file'
manifestres_decls ø
'.assembly'
'.custom'
'.file'
manifestres_head '.mresource'
marshal_spec 'marshal'
member_ref 'field'
'method'
method_attr 'abstract'
'assembly'
'famandassem'
'family'
'famorassem'
'final'
'hidebysig'
'newslot'
'pinvokeimpl'
'private'
'privatescope'
'public'
'reqsecobj'
'rtspecialname'
'specialname'
'static'
'unmanagedexp'
'virtual'
method_decl '.custom'
'.data'
'.emitbyte'
'.entrypoint'
'.export'
'.language'
'.line'
'.locals'
'.maxstack'
'.override'
'.param'
'.permission'
'.try'
'.vtentry'
'.zeroinit'
'{'
C_STYLE_IDENTIFIER
C_STYLE_SINGLE_QUOTED_STRING_LITERAL
INSTR
method_decls ø
'.custom'
'.data'
'.emitbyte'
'.entrypoint'
'.export'
'.language'
'.line'
'.locals'
'.maxstack'
'.override'
'.param'
'.permission'
'.try'
'.vtentry'
'.zeroinit'
'{'
C_STYLE_IDENTIFIER
C_STYLE_SINGLE_QUOTED_STRING_LITERAL
INSTR
method_head '.method'
method_name '.cctor'
'.ctor'
C_STYLE_IDENTIFIER
C_STYLE_SINGLE_QUOTED_STRING_LITERAL
method_ref 'bool'
'char'
'class'
'default'
'explicit'
'float32'
'float64'
'instance'
'int16'
'int32'
'int64'
'int8'
'method'
'native'
'object'
'string'
'typedref'
'unmanaged'
'unsigned'
'value'
'valuetype'
'vararg'
'void'
module_head '.module'
name_value_pair C_STYLE_QUOTED_STRING_LITERAL
name_value_pairs C_STYLE_QUOTED_STRING_LITERAL
namespace_head '.namespace'
native_bound ø
'+'
C_STYLE_64_BIT_INTEGER_LITERAL
native_prefix 'ansi'
'as'
'bool'
'bstr'
'byvalstr'
'currency'
'custom'
'date'
'decimal'
'error'
'fixed'
'float32'
'float64'
'idispatch'
'int'
'int16'
'int32'
'int64'
'int8'
'interface'
'iunknown'
'lpstr'
'lpstruct'
'lptstr'
'lpwstr'
'method'
'nested'
'objectref'
'safearray'
'struct'
'syschar'
'tbstr'
'unsigned'
'variant'
'void'
native_suffix '*'
'['
native_type ø
'ansi'
'as'
'bool'
'bstr'
'byvalstr'
'currency'
'custom'
'date'
'decimal'
'error'
'fixed'
'float32'
'float64'
'idispatch'
'int'
'int16'
'int32'
'int64'
'int8'
'interface'
'iunknown'
'lpstr'
'lpstruct'
'lptstr'
'lpwstr'
'method'
'nested'
'objectref'
'safearray'
'struct'
'syschar'
'tbstr'
'unsigned'
'variant'
'void'
nested_access 'assembly'
'famandassem'
'family'
'famorassem'
'private'
'public'
num64 'float32'
'float64'
C_STYLE_64_BIT_INTEGER_LITERAL
C_STYLE_FLOATING_POINT_LITERAL
owner_type '['
'bool'
'char'
'class'
'field'
'float32'
'float64'
'int16'
'int32'
'int64'
'int8'
'method'
'native'
'object'
'string'
'typedref'
'unsigned'
'value'
'valuetype'
'void'
C_STYLE_IDENTIFIER
C_STYLE_SINGLE_QUOTED_STRING_LITERAL
param_attr '['
param_spec 'in'
'opt'
'out'
pinv_attr 'ansi'
'autochar'
'cdecl'
'fastcall'
'lasterr'
'nomangle'
'stdcall'
'thiscall'
'unicode'
'winapi'
program ø
'.assembly'
'.class'
'.corflags'
'.custom'
'.data'
'.field'
'.file'
'.imagebase'
'.language'
'.line'
'.method'
'.module'
'.mresource'
'.namespace'
'.permission'
'.subsystem'
'.vtfixup'
property_attr 'rtspecialname'
'specialname'
property_decl '.custom'
'.get'
'.language'
'.line'
'.other'
'.set'
property_decls ø
'.custom'
'.get'
'.language'
'.line'
'.other'
'.set'
property_head '.property'
qstring C_STYLE_QUOTED_STRING_LITERAL
repeat_opt '['
scope_block '{'
sec_action 'assert'
'demand'
'deny'
'inheritcheck'
'linkcheck'
'noncasdemand'
'noncasinheritance'
'noncaslinkdemand'
'permitonly'
'prejitdeny'
'prejitgrant'
'reqmin'
'reqopt'
'reqrefuse'
'request'
sec_decl '.permission'
sec_spec '='
'['
'bool'
'char'
'class'
'float32'
'float64'
'int16'
'int32'
'int64'
'int8'
'method'
'native'
'object'
'string'
'typedref'
'unsigned'
'value'
'valuetype'
'void'
C_STYLE_IDENTIFIER
C_STYLE_SINGLE_QUOTED_STRING_LITERAL
seh_block '.try'
seh_clause 'catch'
'fault'
'filter'
'finally'
sig_arg '...'
'['
'bool'
'char'
'class'
'float32'
'float64'
'int16'
'int32'
'int64'
'int8'
'method'
'native'
'object'
'string'
'typedref'
'unsigned'
'value'
'valuetype'
'void'
sig_args ø
'...'
'['
'bool'
'char'
'class'
'float32'
'float64'
'int16'
'int32'
'int64'
'int8'
'method'
'native'
'object'
'string'
'typedref'
'unsigned'
'value'
'valuetype'
'void'
sized_float 'float32'
'float64'
sized_int 'int16'
'int32'
'int64'
'int8'
slashed_name C_STYLE_IDENTIFIER
C_STYLE_SINGLE_QUOTED_STRING_LITERAL
sqstring C_STYLE_SINGLE_QUOTED_STRING_LITERAL
string_or_bytes '('
C_STYLE_QUOTED_STRING_LITERAL
syntax ø
'.assembly'
'.class'
'.corflags'
'.custom'
'.data'
'.field'
'.file'
'.imagebase'
'.language'
'.line'
'.method'
'.module'
'.mresource'
'.namespace'
'.permission'
'.subsystem'
'.vtfixup'
truefalse 'false'
'true'
try_block '.try'
try_spec '{'
C_STYLE_64_BIT_INTEGER_LITERAL
C_STYLE_IDENTIFIER
C_STYLE_SINGLE_QUOTED_STRING_LITERAL
type 'bool'
'char'
'class'
'float32'
'float64'
'int16'
'int32'
'int64'
'int8'
'method'
'native'
'object'
'string'
'typedref'
'unsigned'
'value'
'valuetype'
'void'
type_prefix 'bool'
'char'
'class'
'float32'
'float64'
'int16'
'int32'
'int64'
'int8'
'method'
'native'
'object'
'string'
'typedref'
'unsigned'
'value'
'valuetype'
'void'
type_spec '['
'bool'
'char'
'class'
'float32'
'float64'
'int16'
'int32'
'int64'
'int8'
'method'
'native'
'object'
'string'
'typedref'
'unsigned'
'value'
'valuetype'
'void'
C_STYLE_IDENTIFIER
C_STYLE_SINGLE_QUOTED_STRING_LITERAL
type_suffix '&'
'*'
'['
'modopt'
'modreq'
'pinned'
unmanaged_kind 'cdecl'
'fastcall'
'stdcall'
'thiscall'
va_spec 'int16'
'int32'
'int8'
variant_prefix 'blob'
'blob_object'
'bool'
'bstr'
'carray'
'cf'
'clsid'
'currency'
'data'
'decimal'
'error'
'filetime'
'float32'
'float64'
'hresult'
'idispatch'
'int'
'int16'
'int32'
'int64'
'int8'
'iunknown'
'lpstr'
'lpwstr'
'null'
'record'
'safearray'
'storage'
'stored_object'
'stream'
'streamed_object'
'unsigned'
'userdefined'
'variant'
'void'
variant_suffix '&'
'*'
'['
'vector'
variant_type ø
'blob'
'blob_object'
'bool'
'bstr'
'carray'
'cf'
'clsid'
'currency'
'data'
'decimal'
'error'
'filetime'
'float32'
'float64'
'hresult'
'idispatch'
'int'
'int16'
'int32'
'int64'
'int8'
'iunknown'
'lpstr'
'lpwstr'
'null'
'record'
'safearray'
'storage'
'stored_object'
'stream'
'streamed_object'
'unsigned'
'userdefined'
'variant'
'void'
vtfixup_attr 'callmostderived'
'fromunmanagd'
'int32'
'int64'
vtfixup_decl '.vtfixup'


Lookahead-1 Parser Ambiguities

Ref Production Ambiguous
Literals/Terminals
Can't decide between the following
#1 decl '.file'
#2 decl '.assembly'
#3 decl '.class'
#4 owner_type 'method'
#5 type_spec '['

Created with ebnf2annot.pl (andreas.gieriet@externsoft.ch)