BNF: D
From AdonaiMedrado.Pro.Br
EndOfFile:
physical end of the file
\u0000
\u001A
EndOfLine:
\u000D
\u000A
\u000D \u000A
EndOfFile
WhiteSpace:
Space
Space WhiteSpace
Space:
\u0020
\u0009
\u000B
\u000C
Comment:
/* Characters */
// Characters EndOfLine
NestingBlockComment
Characters:
Character
Character Characters
NestingBlockComment:
/+ NestingBlockCommentCharacters +/
NestingBlockCommentCharacters:
NestingBlockCommentCharacter
NestingBlockCommentCharacter NestingBlockCommentCharacters
NestingBlockCommentCharacter:
Character
NestingBlockComment
Token:
Identifier
StringLiteral
CharacterLiteral
IntegerLiteral
FloatLiteral
Keyword
/
/=
.
..
...
&
&=
&&
|
|=
||
-
-=
--
+
+=
++
<
<=
<<
<<=
<>
<>=
>
>=
>>=
>>>=
>>
>>>
!
!=
!==
!<>
!<>=
!<
!<=
!>
!>=
!~
(
)
[
]
{
}
?
,
;
:
$
=
==
===
*
*=
%
%=
^
^=
~
~=
~~
Identifier:
IdentiferStart
IdentiferStart IdentifierChars
IdentifierChars:
IdentiferChar
IdentiferChar IdentifierChars
IdentifierStart:
_
Letter
UniversalAlpha
IdentifierChar:
IdentiferStart
0
NonZeroDigit
StringLiteral:
WysiwygString
AlternateWysiwygString
DoubleQuotedString
EscapeSequence
HexString
WysiwygString:
r" WysiwygCharacters " Postfixopt
AlternateWysiwygString:
` WysiwygCharacters ` Postfixopt
WysiwygCharacters:
WysiwygCharacter
WysiwygCharacter WysiwygCharacters
WysiwygCharacter:
Character
EndOfLine
DoubleQuotedString:
" DoubleQuotedCharacters " Postfixopt
DoubleQuotedCharacters:
DoubleQuotedCharacter
DoubleQuotedCharacter DoubleQuotedCharacters
DoubleQuotedCharacter:
Character
EscapeSequence
EndOfLine
EscapeSequence:
\'
\"
\?
\\
\a
\b
\f
\n
\r
\t
\v
\ EndOfFile
\x HexDigit HexDigit
\ OctalDigit
\ OctalDigit OctalDigit
\ OctalDigit OctalDigit OctalDigit
\u HexDigit HexDigit HexDigit HexDigit
\U HexDigit HexDigit HexDigit HexDigit
HexDigit HexDigit HexDigit HexDigit
\& NamedCharacterEntity ;
HexString:
x" HexStringChars " Postfixopt
HexStringChars:
HexStringChar
HexStringChar HexStringChars
HexStringChar
HexDigit
WhiteSpace
EndOfLine
Postfix
c
w
d
CharacterLiteral:
' SingleQuotedCharacter '
SingleQuotedCharacter
D Specification 1 0
Character
EscapeSequence
IntegerLiteral:
Integer
Integer IntegerSuffix
Integer:
Decimal
Binary
Octal
Hexadecimal
Integer
IntegerSuffix:
L
u
U
Lu
LU
uL
UL
Decimal:
0
NonZeroDigit
NonZeroDigit DecimalDigits
Binary:
0b BinaryDigits
0B BinaryDigits
Octal:
0 OctalDigits
Hexadecimal:
0x HexDigits
0X HexDigits
NonZeroDigit:
1
2
3
4
5
6
7
8
9
DecimalDigits:
DecimalDigit
DecimalDigit DecimalDigits
DecimalDigit:
0
NonZeroDigit
_
BinaryDigits:
BinaryDigit
BinaryDigit BinaryDigits
BinaryDigit:
0
1
_
OctalDigits:
OctalDigit
OctalDigit OctalDigits
OctalDigit:
0
1
2
3
4
5
6
7
_
HexDigits:
HexDigit
HexDigit HexDigits
HexDigit:
DecimalDigit
a
b
c
d
e
f
A
B
C
D
E
F
FloatLiteral:
Float
Float FloatSuffix
Float ImaginarySuffix
Float FloatSuffix ImaginarySuffix
Float:
DecimalFloat
HexFloat
DecimalFloat:
DecimalDigits .
DecimalDigits . DecimalDigits
DecimalDigits . DecimalDigits DecimalExponent
. Decimal
. Decimal DecimalExponent
DecimalDigits DecimalExponent
DecimalExponent
e DecimalDigits
E DecimalDigits
e+ DecimalDigits
E+ DecimalDigits
e- DecimalDigits
E- DecimalDigits
HexFloat:
HexPrefix HexDigits .
HexPrefix HexDigits . HexDigits
HexPrefix HexDigits . HexDigits HexExponent
HexPrefix . HexDigits
HexPrefix . HexDigits HexExponent
HexPrefix HexDigits HexExponent
HexPrefix:
0x
0X
HexExponent
p DecimalDigits
P DecimalDigits
p+ DecimalDigits
P+ DecimalDigits
p- DecimalDigits
P- DecimalDigits
FloatSuffix:
f
F
L
ImaginarySuffix:
i
Keyword:
abstract
alias
align
asm
assert
auto
body
bool
break
byte
case
cast
catch
cdouble
cent
cfloat
char
class
const
continue
creal
dchar
debug
default
delegate
delete
deprecated
do
double
else
enum
export
extern
false
final
1 5 D Specification
finally
float
for
foreach
foreach_reverse
function
goto
idouble
if
ifloat
import
in
inout
int
interface
invariant
ireal
is
lazy
long
mixin
module
new
null
out
override
package
pragma
private
protected
public
real
return
scope
short
static
struct
super
switch
synchronized
template
this
throw
true
try
typedef
typeid
typeof
ubyte
ucent
D Specification 1 6
uint
ulong
union
unittest
ushort
version
void
volatile
wchar
while
with
SpecialTokenSequence
# line Integer EndOfLine
# line Integer Filespec EndOfLine
Filespec
" Characters "
Module:
ModuleDeclaration DeclDefs
DeclDefs
DeclDefs:
DeclDef
DeclDef DeclDefs
DeclDef:
AttributeSpecifier
ImportDeclaration
EnumDeclaration
ClassDeclaration
InterfaceDeclaration
AggregateDeclaration
Declaration
Constructor
Destructor
Invariant
UnitTest
StaticConstructor
StaticDestructor
DebugSpecification
VersionSpecification
;
ModuleDeclaration:
module ModuleName ;
ModuleName:
Identifier
ModuleName . Identifier
ImportDeclaration:
import ImportList ;
static import ImportList ;
ImportList:
Import
ImportBindings
Import , ImportList
Import:
ModuleName
ModuleAliasIdentifier = ModuleName
ImportBindings:
Import : ImportBindList
ImportBindList:
ImportBind
ImportBind , ImportBindList
ImportBind:
Identifier
Identifier =
Declaration:
typedef Decl
alias Decl
Decl
Decl:
StorageClasses Decl
BasicType Declarators ;
BasicType Declarator FunctionBody
AutoDeclaration
Declarators:
DeclaratorInitializer
DeclaratorInitializer , DeclaratorIdentifierList
DeclaratorInitializer:
Declarator
Declarator = Initializer
DeclaratorIdentifierList:
DeclaratorIdentifier
DeclaratorIdentifier , DeclaratorIdentifierList
DeclaratorIdentifier:
Identifier
Identifier = Initializer
BasicType:
bool
byte
ubyte
short
ushort
int
uint
long
ulong
char
wchar
dchar
float
double
real
ifloat
idouble
ireal
cfloat
cdouble
creal
void
.IdentifierList
IdentifierList
Typeof
Typeof . IdentifierList
BasicType2:
*
[ ]
[ Expression ]
[ Type ]
delegate Parameters
function Parameters
Declarator:
BasicType2 Declarator
Identifier
() Declarator
Identifier DeclaratorSuffixes
() Declarator DeclaratorSuffixes
DeclaratorSuffixes:
DeclaratorSuffix
DeclaratorSuffix DeclaratorSuffixes
DeclaratorSuffix:
[ ]
[ Expression ]
[ Type ]
Parameters
IdentifierList:
Identifier
Identifier . IdentifierList
TemplateInstance
TemplateInstance . IdentifierList
Typeof:
typeof ( Expression )
StorageClasses:
StorageClass
StorageClass StorageClasses
StorageClass:
abstract
auto
const
deprecated
extern
final
override
scope
static
synchronized
Type:
BasicType
BasicType Declarator2
Declarator2:
BasicType2 Declarator2
( Declarator2 )
( Declarator2 ) DeclaratorSuffixes
Parameters:
( ParameterList )
( )
ParameterList:
Parameter
Parameter , ParameterList
Parameter ...
...
Parameter:
Declarator
Declarator = AssignExpression
InOut Declarator
InOut Declarator = AssignExpression
InOut:
in
out
inout
lazy
Initializer:
void
NonVoidInitializer
NonVoidInitializer:
AssignExpression
ArrayInitializer
StructInitializer
ArrayInitializer:
[ ]
[ ArrayMemberInitializations ]
ArrayMemberInitializations:
ArrayMemberInitialization
ArrayMemberInitialization ,
ArrayMemberInitialization , ArrayMemberInitializations
ArrayMemberInitialization:
NonVoidInitializer
AssignExpression : NonVoidInitializer
StructInitializer:
{ }
{ StructMemberInitializers }
StructMemberInitializers:
StructMemberInitializer
StructMemberInitializer ,
StructMemberInitializer , StructMemberInitializers
StructMemberInitializer:
NonVoidInitializer
Identifier : NonVoidInitializer
AutoDeclaration:
StorageClasses Identifier = AssignExpression ;
AttributeSpecifier:
Attribute :
Attribute DeclarationBlock
Attribute:
LinkageAttribute
AlignAttribute
Pragma
deprecated
private
package
protected
public
export
static
final
override
abstract
const
auto
scope
DeclarationBlock
DeclDef
{ }
{ DeclDefs }
LinkageAttribute:
extern
extern ( LinkageType )
LinkageType:
C
C++
D
Windows
Pascal
AlignAttribute:
align
align ( Integer )
Pragma:
pragma ( Identifier )
pragma ( Identifier , ExpressionList )
StringLiterals:
StringLiteral
StringLiterals StringLiteral
ArgumentList:
AssignExpression
AssignExpression , ArgumentList
Expression:
AssignExpression
AssignExpression , Expression
AssignExpression:
ConditionalExpression
ConditionalExpression = AssignExpression
ConditionalExpression += AssignExpression
ConditionalExpression -= AssignExpression
ConditionalExpression *= AssignExpression
ConditionalExpression /= AssignExpression
ConditionalExpression %= AssignExpression
ConditionalExpression &= AssignExpression
ConditionalExpression |= AssignExpression
ConditionalExpression ^= AssignExpression
ConditionalExpression ~= AssignExpression
ConditionalExpression <<= AssignExpression
ConditionalExpression >>= AssignExpression
ConditionalExpression >>>= AssignExpression
ConditionalExpression:
OrOrExpression
OrOrExpression ? Expression : ConditionalExpression
OrOrExpression:
AndAndExpression
OrOrExpression || AndAndExpression
AndAndExpression:
OrExpression
AndAndExpression && OrExpression
OrExpression:
XorExpression
OrExpression | XorExpression
XorExpression:
AndExpression
XorExpression ^ AndExpression
AndExpression:
EqualExpression
AndExpression & EqualExpression
EqualExpression:
RelExpression
EqualExpression == RelExpression
EqualExpression != RelExpression
EqualExpression is RelExpression
EqualExpression !is RelExpression
RelExpression:
ShiftExpression
InExpression
RelExpression < ShiftExpression
RelExpression <= ShiftExpression
RelExpression > ShiftExpression
RelExpression >= ShiftExpression
RelExpression !<>= ShiftExpression
RelExpression !<> ShiftExpression
RelExpression <> ShiftExpression
RelExpression <>= ShiftExpression
RelExpression !> ShiftExpression
RelExpression !>= ShiftExpression
RelExpression !< ShiftExpression
RelExpression !<= ShiftExpression
InExpression:
RelExpression in ShiftExpression
ShiftExpression:
AddExpression
ShiftExpression << AddExpression
ShiftExpression >> AddExpression
ShiftExpression >>> AddExpression
AddExpression:
MulExpression
AddExpression + MulExpression
AddExpression - MulExpression
CatExpression
CatExpression:
AddExpression ~ MulExpression
MulExpression:
UnaryExpression
MulExpression * UnaryExpression
MulExpression / UnaryExpression
MulExpression % UnaryExpression
UnaryExpression:
PostfixExpression
& UnaryExpression
++ UnaryExpression
-- UnaryExpression
* UnaryExpression
- UnaryExpression
+ UnaryExpression
! UnaryExpression
~ UnaryExpression
( Type ) . Identifier
NewExpression
DeleteExpression
CastExpression
NewAnonClassExpression
NewExpression:
NewArguments Type [ AssignExpression ]
NewArguments Type ( ArgumentList )
NewArguments Type
NewArguments ClassArguments BaseClasslistopt { DeclDefs }
NewArguments:
new ( ArgumentList )
new ( )
new
ClassArguments:
class ( ArgumentList )
class ( )
class
DeleteExpression:
delete UnaryExpression
CastExpression:
cast ( Type ) UnaryExpression
PostfixExpression:
PrimaryExpression
PostfixExpression . Identifier
PostfixExpression . NewExpression
PostfixExpression ++
PostfixExpression --
PostfixExpression ( )
PostfixExpression ( ArgumentList )
IndexExpression
SliceExpression
IndexExpression:
PostfixExpression [ ArgumentList ]
SliceExpression:
PostfixExpression [ ]
PostfixExpression [ AssignExpression .. AssignExpression ]
PrimaryExpression:
Identifier
.Identifier
this
super
null
true
false
NumericLiteral
CharacterLiteral
StringLiterals
ArrayLiteral
FunctionLiteral
AssertExpression
BasicType . Identifier
typeid ( Type )
IsExpression
( Expression )
ArrayLiteral:
[ ArgumentList ]
FunctionLiteral:
function Typeopt ( ArgumentList )opt FunctionBody
delegate Typeopt ( ArgumentList )opt FunctionBody
( ArgumentList ) FunctionBody
FunctionBody
AssertExpression:
assert ( Expression )
assert ( Expression , Expression )
TypeidExpression:
typeid ( Type )
IsExpression:
is ( Type )
is ( Type : TypeSpecialization )
is ( Type == TypeSpecialization )
is ( Type Identifier )
is ( Type Identifier : TypeSpecialization )
is ( Type Identifier == TypeSpecialization )
TypeSpecialization:
Type
typedef
struct
union
class
interface
enum
function
delegate
super
Statement:
;
NonEmptyStatement
ScopeBlockStatement
NoScopeNonEmptyStatement:
NonEmptyStatement
BlockStatement
NoScopeStatement:
;
NonEmptyStatement
BlockStatement
NonEmptyOrScopeBlockStatement:
NonEmptyStatement
ScopeBlockStatement
NonEmptyStatement:
LabeledStatement
ExpressionStatement
DeclarationStatement
IfStatement
ConditionalStatement
WhileStatement
DoStatement
ForStatement
ForeachStatement
SwitchStatement
CaseStatement
DefaultStatement
ContinueStatement
BreakStatement
ReturnStatement
GotoStatement
WithStatement
SynchronizedStatement
TryStatement
ScopeGuardStatement
ThrowStatement
VolatileStatement
AsmStatement
PragmaStatement
ScopeStatement:
NonEmptyStatement
BlockStatement
ScopeBlockStatement:
BlockStatement
LabelledStatement:
Identifier ':' NoScopeStatement
BlockStatement:
{ }
{ StatementList }
StatementList:
Statement
Statement StatementList
ExpressionStatement:
Expression ;
IfStatement:
if ( IfCondition ) ThenStatement
if ( IfCondition ) ThenStatement else ElseStatement
IfCondition:
Expression
auto Identifier = Expression
Declarator = Expression
ThenStatement:
ScopeStatement
ElseStatement:
ScopeStatement
WhileStatement:
while ( Expression ) ScopeStatement
DoStatement:
do ScopeStatement while ( Expression )
ForStatement:
for (Initialize Test; Increment) ScopeStatement
Initialize:
;
NoScopeNonEmptyStatement
Test:
empty
Expression
Increment:
empty
Expression
ForeachStatement:
Foreach (ForeachTypeList; Aggregate) ScopeStatement
Foreach:
foreach
foreach_reverse
ForeachTypeList:
ForeachType
ForeachType , ForeachTypeList
ForeachType:
inout Type Identifier
Type Identifier
inout Identifier
Identifier
Aggregate:
Expression
Tuple
SwitchStatement:
switch ( Expression ) ScopeStatement
CaseStatement:
case ExpressionList : Statement
DefaultStatement:
default: Statement
ContinueStatement:
continue;
continue Identifier ;
BreakStatement:
break;
break Identifier ;
ReturnStatement:
return;
return Expression ;
GotoStatement:
goto Identifier ;
goto default ;
goto case ;
goto case Expression ;
WithStatement:
with ( Expression ) ScopeStatement
with ( Symbol ) ScopeStatement
with ( TemplateInstance ) ScopeStatement
SynchronizedStatement:
synchronized ScopeStatement
synchronized ( Expression ) ScopeStatement
TryStatement:
try ScopeStatement Catches
try ScopeStatement Catches FinallyStatement
try ScopeStatement FinallyStatement
Catches:
LastCatch
Catch
Catch Catches
LastCatch:
catch NoScopeNonEmptyStatement
Catch:
catch ( CatchParameter ) NoScopeNonEmptyStatement
FinallyStatement:
finally NoScopeNonEmptyStatement
ThrowStatement:
throw Expression ;
ScopeGuardStatement:
scope(exit) #NonEmptyOrScopeBlockStatement
scope(success) #NonEmptyOrScopeBlockStatement
scope(failure) #NonEmptyOrScopeBlockStatement
VolatileStatement:
volatile Statement
volatile ;
AsmStatement:
asm { }
asm { AsmInstructionList }
AsmInstructionList:
AsmInstruction ;
AsmInstruction ; AsmInstructionList
PragmaStatement:
Pragma NoScopeStatement
AggregateDeclaration:
Tag { DeclDefs }
Tag Identifier StructBody
Tag Identifier ;
Tag:
struct
union
StructBody:
{ }
{ StructBodyDeclarations }
StructBodyDeclarations:
StructBodyDeclaration
StructBodyDeclaration StructBodyDeclarations
StructBodyDeclaration:
Declaration
StaticConstructor
StaticDestructor
Invariant
UnitTest
StructAllocator
StructDeallocator
StructAllocator:
ClassAllocator
StructDeallocator:
ClassDeallocator
ClassDeclaration:
class Identifier BaseClassListopt ClassBody
BaseClassList:
: SuperClass
: SuperClass InterfaceClasses
: InterfaceClass
SuperClass:
Identifier
Protection Identifier
InterfaceClasses:
InterfaceClass
InterfaceClass InterfaceClasses
InterfaceClass:
Identifier
Protection Identifier
Protection:
private
package
public
export
ClassBody:
{ }
{ ClassBodyDeclarations }
ClassBodyDeclarations:
ClassBodyDeclaration
ClassBodyDeclaration ClassBodyDeclarations
ClassBodyDeclaration:
Declaration
Constructor
Destructor
StaticConstructor
StaticDestructor
Invariant
UnitTest
ClassAllocator
ClassDeallocator
Constructor:
this Parameters FunctionBody
Destructor:
~this() FunctionBody
StaticConstructor:
static this() FunctionBody
StaticDestructor:
static ~this() FunctionBody
ClassInvariant:
invariant BlockStatement
UnitTest:
unittest FunctionBody
ClassAllocator:
new Parameters FunctionBody
ClassDeallocator:
delete Parameters FunctionBody
NewAnonClassExpression:
new (ArgumentList)opt class (ArgumentList)opt SuperClassopt InterfaceClassesopt ClassBody
InterfaceDeclaration:
interface Identifier InterfaceBody
interface Identifier : SuperInterfaces InterfaceBody
SuperInterfaces
Identifier
Identifier , SuperInterfaces
InterfaceBody:
{ DeclDefs }
EnumDeclaration:
enum Identifier EnumBody
enum EnumBody
enum Identifier : EnumBaseType EnumBody
enum : EnumBaseType EnumBody
EnumBaseType:
Type
EnumBody:
;
{ EnumMembers }
EnumMembers:
EnumMember
EnumMember ,
EnumMember , EnumMembers
EnumMember:
Identifier
Identifier = AssignExpression
FunctionBody:
BlockStatement
BodyStatement
InStatement BodyStatement
OutStatement BodyStatement
InStatement OutStatement BodyStatement
OutStatement InStatement BodyStatement
InStatement:
in BlockStatement
OutStatement:
out BlockStatement
out ( Identifier ) BlockStatement
BodyStatement:
body BlockStatement
TemplateDeclaration:
template TemplateIdentifier ( TemplateParameterList )
{ DeclDefs }
TemplateIdentifier:
Identifier
TemplateParameterList
TemplateParameter
TemplateParameter , TemplateParameterList
TemplateParameter:
TemplateTypeParameter
TemplateValueParameter
TemplateAliasParameter
TemplateTupleParameter
TemplateTypeParameter:
Identifier
Identifier TemplateTypeParameterSpecialization
Identifier TemplateTypeParameterDefault
Identifier TemplateTypeParameterSpecialization
TemplateTypeParameterDefault
TemplateTypeParameterSpecialization:
: Type
TemplateTypeParameterDefault:
= Type
TemplateValueParameter:
Declaration
Declaration TemplateValueParameterSpecialization
Declaration TemplateValueParameterDefault
Declaration TemplateValueParameterSpecialization
TemplateValueParameterDefault
TemplateValueParameterSpecialization:
: ConditionalExpression
TemplateValueParameterDefault:
= ConditionalExpression
TemplateAliasParameter:
alias Identifier
alias Identifier TemplateAliasParameterSpecialization
alias Identifier TemplateAliasParameterDefault
alias Identifier TemplateAliasParameterSpecialization
TemplateAliasParameterDefault
TemplateAliasParameterSpecialization:
: Type
TemplateAliasParameterDefault:
= Type
TemplateTupleParameter:
Identifier ...
TemplateInstance:
TemplateIdentifer !( TemplateArgumentList )
TemplateArgumentList:
TemplateArgument
TemplateArgument , TemplateArgumentList
TemplateArgument:
Type
AssignExpression
Symbol
ClassTemplateDeclaration:
class Identifier ( TemplateParameterList ) [SuperClass {, InterfaceClass }]
ClassBody
FunctionTemplateDeclaration:
Type Identifier ( TemplateParameterList ) ( FunctionParameterList )
FunctionBody
TemplateMixin:
mixin TemplateIdentifier ;
mixin TemplateIdentifier MixinIdentifier ;
mixin TemplateIdentifier !( TemplateArgumentList ) ;
mixin TemplateIdentifier !( TemplateArgumentList ) MixinIdentifier ;
MixinIdentifier:
Identifier
ConditionalDeclaration:
Condition DeclarationBlock
Condition DeclarationBlock else DeclarationBlock
Condition : Declarations
DeclarationBlock:
Declaration
{ Declarations }
{ }
Declarations:
Declaration
Declaration Declarations
ConditionalStatement:
Condition NoScopeNonEmptyStatement
Condition NoScopeNonEmptyStatement else NoScopeNonEmptyStatement
Condition:
VersionCondition
DebugCondition
StaticIfCondition
VersionCondition:
version ( Integer )
version ( Identifier )
VersionSpecification
version = Identifier ;
version = Integer ;
DebugCondition:
debug
debug ( Integer )
debug ( Identifier )
DebugSpecification
debug = Identifier ;
debug = Integer ;
StaticIfCondition:
static if ( AssignExpression )
StaticAssert:
static assert ( AssignExpression );
static assert ( AssignExpression , AssignExpression );
AsmInstruction:
Identifier : AsmInstruction
align IntegerExpression
even
naked
db Operands
ds Operands
di Operands
dl Operands
df Operands
dd Operands
de Operands
Opcode
Opcode Operands
Operands
Operand
Operand , Operands
Operand:
AsmExp
AsmExp:
AsmLogOrExp
AsmLogOrExp ? AsmExp : AsmExp
AsmLogOrExp:
AsmLogAndExp
AsmLogAndExp || AsmLogAndExp
AsmLogAndExp:
AsmOrExp
AsmOrExp && AsmOrExp
AsmOrExp:
AsmXorExp
AsmXorExp | AsmXorExp
AsmXorExp:
AsmAndExp
AsmAndExp ^ AsmAndExp
AsmAndExp:
AsmEqualExp
AsmEqualExp & AsmEqualExp
AsmEqualExp:
AsmRelExp
AsmRelExp == AsmRelExp
AsmRelExp != AsmRelExp
AsmRelExp:
AsmShiftExp
AsmShiftExp < AsmShiftExp
AsmShiftExp <= AsmShiftExp
AsmShiftExp > AsmShiftExp
AsmShiftExp >= AsmShiftExp
AsmShiftExp:
AsmAddExp
AsmAddExp << AsmAddExp
AsmAddExp >> AsmAddExp
AsmAddExp >>> AsmAddExp
AsmAddExp:
AsmMulExp
AsmMulExp + AsmMulExp
AsmMulExp - AsmMulExp
AsmMulExp:
AsmBrExp
AsmBrExp * AsmBrExp
AsmBrExp / AsmBrExp
AsmBrExp % AsmBrExp
AsmBrExp:
AsmUnaExp
AsmBrExp [ AsmExp ]
AsmUnaExp:
AsmTypePrefix AsmExp
offset AsmExp
seg AsmExp
+ AsmUnaExp
- AsmUnaExp
! AsmUnaExp
~ AsmUnaExp
AsmPrimaryExp
AsmPrimaryExp
IntegerConstant
FloatConstant
__LOCAL_SIZE
$
Register
DotIdentifier
DotIdentifier
Identifier
Identifier . DotIdentifier
AsmTypePrefix:
near ptr
far ptr
byte ptr
short ptr
int ptr
word ptr
dword ptr
float ptr
double ptr
real ptr
MangledName:
_D QualifiedName Type
_D QualifiedName M Type
QualifiedName:
SymbolName
SymbolName QualifiedName
SymbolName:
LName
TemplateInstanceName
TemplateInstanceName:
__T LName TemplateArgs Z
TemplateArgs:
TemplateArg
TemplateArg TemplateArgs
TemplateArg:
T Type
V Type Value
S LName
Value:
n
Number
N Number
e HexFloat
c HexFloat c HexFloat
A Number Value...
HexFloat:
NAN
INF
NINF
N HexDigits P Exponent
HexDigits P Exponent
Exponent:
N Number
Number
HexDigits:
HexDigit
HexDigit HexDigits
HexDigit:
Digit
A
B
C
D
E
F
Name:
Namestart
Namestart Namechars
Namestart:
_
Alpha
Namechar:
Namestart
Digit
Namechars:
Namechar
Namechar Namechars
LName:
Number Name
Number:
Digit
Digit Number
Digit:
0
1
2
3
4
5
6
7
8
9
Type:
TypeArray
TypeSarray
TypeAarray
TypePointer
TypeFunction
TypeIdent
TypeClass
TypeStruct
TypeEnum
TypeTypedef
TypeDelegate
TypeNone
TypeVoid
TypeByte
TypeUbyte
TypeShort
TypeUshort
TypeInt
TypeUint
TypeLong
TypeUlong
TypeFloat
TypeDouble
TypeReal
TypeIfloat
TypeIdouble
TypeIreal
TypeCfloat
TypeCdouble
TypeCreal
TypeBool
TypeChar
TypeWchar
TypeDchar
TypeTuple
TypeArray:
A Type
TypeSarray:
G Number Type
TypeAarray:
H Type Type
TypePointer:
P Type
TypeFunction:
CallConvention Arguments ArgClose Type
CallConvention:
F
U
W
V
R
Arguments:
Argument
Argument Arguments
Argument:
Type
J Type
K Type
L Type
ArgClose
X
Y
Z
TypeIdent:
I LName
TypeClass:
C LName
TypeStruct:
S LName
TypeEnum:
E LName
TypeTypedef:
T LName
TypeDelegate:
D TypeFunction
TypeNone:
n
TypeVoid:
v
TypeByte:
g
TypeUbyte:
h
TypeShort:
s
TypeUshort:
t
TypeInt:
i
TypeUint:
k
TypeLong:
l
TypeUlong:
m
TypeFloat:
f
TypeDouble:
d
TypeReal:
e
TypeIfloat:
o
TypeIdouble:
p
TypeIreal:
j
TypeCfloat:
q
TypeCdouble:
r
TypeCreal:
c
TypeBool:
b
TypeChar:
a
TypeWchar:
u
TypeDchar:
w
TypeTuple:
B Number Arguments