Strings in bold are regular expressions (lexemes).
Lexeme lists in [ brackets ], are lexeme classes (alternation).
seatdModule:
ModuleDeclarationOpt DeclDefsOpt
ModuleDeclarationOpt:
ModuleKeyword ModuleName ;
epsilon
ModuleKeyword:
module
ModuleName:
ModuleName \. Identifier
Identifier
DeclDefsOpt:
DeclDefsOpt DeclDef
epsilon
DeclDef:
ConditionalDeclaration
DeclDefNoConditional
DeclDefNoConditional:
AttributeSpecifier
StaticAssert
Declaration
ImportDeclaration
EnumDeclaration
TemplateMixin
TemplateDeclaration
FunctionTemplateDeclaration
ClassTemplateDeclaration
InterfaceTemplateDeclaration
StructTemplateDeclaration
ClassDeclaration
InterfaceDeclaration
AggregateDeclaration
Constructor
Destructor
Invariant
UnitTest
StaticConstructor
StaticDestructor
MixinDeclaration
;
DebugSpecification
VersionSpecification
ConditionalDeclaration:
Condition :
Condition DeclarationBlock
Condition DeclarationBlock else DeclarationBlock
Condition:
VersionCondition
DebugCondition
StaticIfCondition
VersionCondition:
version \( Integer \)
version \( Identifier \)
VersionSpecification:
version = Integer ;
version = Identifier ;
DebugCondition:
debug \( Integer \)
debug \( Identifier \)
debug
DebugSpecification:
debug = Identifier ;
debug = Integer ;
StaticIfCondition:
static if \( AssignExpression \)
StaticAssert:
static assert \( AssignExpression , AssignExpression \) ;
static assert \( AssignExpression \) ;
ImportDeclaration:
import ImportList ;
ImportList:
Import , ImportList
Import ImportBindListOpt
Import
Import:
Identifier = ModuleName
ModuleName
ImportBindListOpt:
: ImportBindList
epsilon
ImportBindList:
ImportBindList , ImportBind
ImportBind
ImportBind:
Identifier = Identifier
Identifier
AttributeSpecifier:
Attributes : DeclDefsOpt
Attributes DeclarationBlock
Attributes:
Attributes Attribute
Attribute
Attribute:
StorageClassAttribute
ProtectionAttribute
LinkageAttribute
AlignAttribute
Pragma
StorageClassAttribute:
synchronized
deprecated
static
final
override
abstract
const
auto
scope
ProtectionAttribute:
private
package
protected
public
export
LinkageAttribute:
extern \( Identifier \)
extern \( Identifier \+\+ \)
extern
AlignAttribute:
align \( Integer \)
align
Pragma:
pragma \( Identifier , Expression \)
pragma \( Identifier \)
FunctionBody:
InStatement OutStatement BodyStatement
OutStatement InStatement BodyStatement
InStatement BodyStatement
OutStatement BodyStatement
BodyStatement
FunctionBodyOpt:
FunctionBody
;
InStatement:
in BlockStatement
OutStatement:
out \( Identifier \) BlockStatement
out BlockStatement
BodyStatement:
body BlockStatement
BlockStatement
ClassDeclaration:
class Identifier BaseClassListOpt ClassBody
BaseClassListOpt:
: BaseClassList
epsilon
BaseClassList:
BaseClassList , SuperClass
SuperClass
SuperClass:
ProtectionNT IdentifierList
IdentifierList
ProtectionNT:
private
package
public
export
ClassBody:
\{ \}
\{ ClassBodyDeclarations \}
ClassBodyDeclarations:
ClassBodyDeclarations ClassBodyDeclaration
ClassBodyDeclaration
ClassBodyDeclaration:
DeclDef
ClassAllocator
ClassDeallocator
Constructor:
this Parameters FunctionBodyOpt
Destructor:
~ this \( \) FunctionBodyOpt
StaticConstructor:
static this \( \) FunctionBody
StaticDestructor:
static ~ this \( \) FunctionBody
Invariant:
invariant BlockStatement
invariant \( \) BlockStatement
UnitTest:
unittest FunctionBody
ClassAllocator:
new Parameters FunctionBody
ClassDeallocator:
delete Parameters FunctionBody
InterfaceDeclaration:
interface Identifier SuperInterfaceListOpt InterfaceBody
SuperInterfaceListOpt:
: SuperInterfaces
epsilon
SuperInterfaces:
SuperInterfaces , SuperInterface
SuperInterface
SuperInterface:
ProtectionNT IdentifierList
IdentifierList
InterfaceBody:
\{ DeclDefsOpt \}
AggregateDeclaration:
Tag IdentifierOpt StructBody
Tag IdentifierOpt ;
Tag:
struct
union
StructBody:
\{ \}
\{ \} ;
\{ StructBodyDeclarations \}
\{ StructBodyDeclarations \} ;
StructBodyDeclarations:
StructBodyDeclarations StructBodyDeclaration
StructBodyDeclaration
StructBodyDeclaration:
DeclDef
StructAllocator
StructDeallocator
StructAllocator:
ClassAllocator
StructDeallocator:
ClassDeallocator
ConditionalStatement:
Condition Statement else Statement
Condition Statement
Statement:
NonEmptyStatement
BlockStatement
StatementList:
StatementList Statement
Statement
NoScopeNonEmptyStatement:
NonEmptyStatement
BlockStatement
NoScopeStatement:
NonEmptyStatement
BlockStatement
NonEmptyStatement:
DeclDefNoConditional
NonEmptyNoDeclStatement
NonEmptyNoDeclStatement:
LabeledStatement
ExpressionStatement
IfStatement
ConditionalStatement
WhileStatement
DoStatement
ForStatement
ForeachStatement
ForeachRangeStatement
SwitchStatement
CaseStatement
DefaultStatement
ContinueStatement
BreakStatement
ReturnStatement
GotoStatement
WithStatement
SynchronizedStatement
TryStatement
ScopeGuardStatement
ThrowStatement
VolatileStatement
AsmStatement
PragmaStatement
ScopeStatement:
NonEmptyStatement
BlockStatement
NoDeclScopeStatement:
NonEmptyNoDeclStatement
BlockStatement
LabeledStatement:
Identifier : NoScopeStatement
BlockStatement:
\{ \}
\{ StatementList \}
ExpressionStatement:
Expression ;
IfStatement:
if \( IfCondition \) ScopeStatement
if \( IfCondition \) ScopeStatement else ScopeStatement
IfCondition:
Expression
auto Identifier = Expression
BasicType Declarator = Expression
WhileStatement:
while \( Expression \) ScopeStatement
DoStatement:
do ScopeStatement while \( Expression \)
ForStatement:
for \( NoScopeNonEmptyStatement ExpressionOpt ; ExpressionOpt \) ScopeStatement
ForeachStatement:
Foreach \( ForeachTypeList ; Expression \) ScopeStatement
Foreach:
foreach
foreach_reverse
ForeachTypeList:
ForeachTypeList , ForeachType
ForeachType
ForeachType:
inout TypeNT Identifier
ref TypeNT Identifier
TypeNT Identifier
inout Identifier
ref Identifier
Identifier
ForeachRangeStatement:
Foreach \( ForeachType ; AssignExpression \.\. AssignExpression \) ScopeStatement
SwitchStatement:
switch \( Expression \) BlockStatement
CaseStatement:
case Expression :
DefaultStatement:
default :
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 \( TemplateInstance \) ScopeStatement
SynchronizedStatement:
synchronized NoDeclScopeStatement
synchronized \( Expression \) ScopeStatement
TryStatement:
try ScopeStatement Catches
try ScopeStatement Catches FinallyStatement
try ScopeStatement FinallyStatement
Catches:
LastCatch
Catch Catches
Catch
LastCatch:
catch NoScopeNonEmptyStatement
Catch:
catch \( Parameter \) NoScopeNonEmptyStatement
FinallyStatement:
finally NoScopeNonEmptyStatement
ThrowStatement:
throw Expression ;
ScopeGuardStatement:
scope \( Identifier \) Statement
VolatileStatement:
volatile Statement
volatile ;
AsmStatement:
asm \{ \}
asm \{ AsmInstructionList \}
AsmInstructionList:
AsmInstructionList AsmInstruction
AsmInstruction
AsmInstruction:
[ for !\<= private lazy \<\>= r"[^"]*"[cdw]? in class typeof \^= \< override double __VENDOR__ [1-9][0-9_]*(L|[uU]|L[uU]|[uU]L)? [0-9][0-9_]*\.?([fFLi]|[fFL]i) \> with uint \? goto is cdouble alias function 0([xX][0-9a-fA-F_]*|[bB][01_]*|[0-7_]*)(L|[uU]|L[uU]|[uU]L)? \*= __FILE__ q" switch asm dchar foreach idouble \<= static struct !\< import true \.\.\. !\> !\>= auto creal \\(['"\?\\abfnrtv]|([0-7_]{1,3})|(x[0-9a-fA-F]{2})|(u[0-9a-fA-F]{4})|(U[0-9a-fA-F]{8})) foreach_reverse __TIMESTAMP__ export \+= !\<\> debug "(([^"\\]*(\\(['"\?\\abfnrtv]|([0-7_]{1,3})|(x[0-9a-fA-F]{2})|(u[0-9a-fA-F]{4})|(U[0-9a-fA-F]{8})))?)*)"[cdw]? float \<\< ~ break (([0-9_]*\.[0-9][0-9_]*([eE][\+\-]?[0-9][0-9_]*)?)|([0-9][0-9_]*[eE][\+\-]?[0-9][0-9_]*))([fFLi]|[fFL]i)? \<\> ! typeid char __TIME__ module real \[ != \>\>\> % 0[xX][0-9a-fA-F_]*\.?[0-9a-fA-F_]+[pP][\+\-]?[0-9_]+([fFLi]|[fFL]i)? \] & \^ unittest \>= \-\- const , \|= `[^`]*`[cdw]? \>\>= do / enum \-= false __LINE__ __VERSION__ case short scope this package finally == void interface !\<\>= pragma : (0([xX][0-9a-fA-F_]*|[bB][01_]*|[0-7_]*)|([1-9][0-9_]*))[fFL]?i ; '(([^'\\]|(\\(['"\?\\abfnrtv]|([0-7_]{1,3})|(x[0-9a-fA-F]{2})|(u[0-9a-fA-F]{4})|(U[0-9a-fA-F]{8})))))' x"[0-9a-fA-F_\n\r\t ]*"[cdw]? extern ubyte = protected int super q\{ typedef \.\. cast else null && ulong ref \| \>\>\>= align version [0-9][0-9_]*\.>[^\.] mixin body synchronized abstract \|\| __DATE__ volatile final [a-zA-Z_][_a-zA-Z0-9]* \<\<= \>\> \$ inout !is>[^_a-zA-Z0-9] %= delete continue template \( union ifloat \) byte \* delegate try \+ catch ireal deprecated bool invariant new \- throw \. \+\+ default return ushort ~= public out cfloat long &= if /= while __traits assert wchar]
PragmaStatement:
Pragma NoScopeStatement
DeclarationBlock:
\{ DeclDefsOpt \}
DeclDef
MixinDeclaration:
mixin \( Expression \) ;
Declaration:
TypedefAlias Declaration2
TypedefAlias Attributes Declaration2
TypedefAlias Attributes Identifier = AssignExpression ;
Attributes Declaration2
Attributes IdentifierSimpleInitializerList ;
Declaration2
TypedefAlias:
typedef
alias
Declaration2:
BasicType Declarator FunctionBody
BasicType Declarators ;
IdentifierSimpleInitializerList:
IdentifierSimpleInitializerList , Identifier = AssignExpression
Identifier = AssignExpression
Declarators:
DeclaratorInitializer
DeclaratorInitializer , IdentifierInitializerList
DeclaratorInitializer:
Declarator
Declarator = Initializer
IdentifierInitializerList:
IdentifierInitializerList , IdentifierInitializer
IdentifierInitializer
IdentifierInitializer:
Identifier
Identifier = Initializer
BasicType:
BasicTypeNoIdList
\. IdentifierList
IdentifierList
BasicTypeNoIdList:
bool
byte
ubyte
short
ushort
int
uint
long
ulong
char
wchar
dchar
float
double
real
ifloat
idouble
ireal
cfloat
cdouble
creal
void
Typeof
Typeof IdentifierList
TypeConstructor \( TypeNT \)
BasicType2:
\*
\[ \]
\[ Expression \]
\[ TypeNT \]
\[ AssignExpression \.\. AssignExpression \]
delegate Parameters
function Parameters
TypeConstructor:
const
invariant
Declarator:
BasicType2 DeclaratorOpt
Identifier DeclaratorSuffixesOpt
\( Declarator \) DeclaratorSuffixesOpt
DeclaratorOpt:
Declarator
epsilon
DeclaratorSuffixesOpt:
DeclaratorSuffixesOpt DeclaratorSuffix
epsilon
DeclaratorSuffix:
\[ \]
\[ Expression \]
\[ TypeNT \]
Parameters
IdentifierList:
Identifier
IdentifierList \. Identifier
TemplateInstance
IdentifierList \. TemplateInstance
Typeof:
typeof \( Expression \)
TypeNT:
BasicType
BasicType Declarator2
TypeOpt:
TypeNT
epsilon
Declarator2:
BasicType2
BasicType2 Declarator2
\( Declarator2 \) DeclaratorSuffixesOpt
Parameters:
\( \)
\( ParameterList \)
ParameterListOpt:
ParameterList
epsilon
ParameterList:
Parameter
Parameter , ParameterList
Parameter \.\.\.
\.\.\.
Parameter:
Parameter2
InOut Parameter2
ParameterStorageClasses Parameter2
InOut ParameterStorageClasses Parameter2
Parameter2:
BasicType DeclaratorOpt
BasicType DeclaratorOpt = AssignExpression
ParameterStorageClasses:
ParameterStorageClasses ParameterStorageClass
ParameterStorageClass
ParameterStorageClass:
const
invariant
final
scope
static
InOut:
inout
in
out
ref
lazy
Initializer:
void
NonVoidInitializer
NonVoidInitializer:
AssignExpression
ArrayInitializer
StructInitializer
ArrayInitializer:
\[ \]
\[ ArrayStructMemberInitializers \]
StructInitializer:
\{ \}
\{ ArrayStructMemberInitializers \}
ArrayStructMemberInitializers:
ArrayStructMemberInitializers , ArrayStructMemberInitializer
ArrayStructMemberInitializers ,
ArrayStructMemberInitializer
ArrayStructMemberInitializer:
NonVoidInitializer
Identifier : NonVoidInitializer
EnumDeclaration:
enum Identifier EnumBaseTypeOpt EnumBody
enum EnumBaseTypeOpt EnumBody
EnumBaseTypeOpt:
: TypeNT
epsilon
EnumBody:
;
\{ EnumMembers \}
EnumMembers:
EnumMembers , EnumMember
EnumMembers ,
EnumMember
EnumMember:
Identifier EnumInitializerOpt
EnumInitializerOpt:
= AssignExpression
epsilon
TemplateDeclaration:
template Identifier \( TemplateParameterListOpt \) \{ DeclDefsOpt \}
TemplateParameterListOpt:
TemplateParameterList
epsilon
TemplateParameterList:
TemplateParameterList , TemplateParameter
TemplateParameter
TemplateParameter:
TemplateAliasParameter
TemplateTupleParameter
TemplateValueParameter
TemplateTypeParameter
TemplateTypeParameter:
Identifier TemplateTypeParameterSpecializationOpt TemplateTypeParameterDefaultOpt
TemplateTypeParameterSpecializationOpt:
: TypeNT
epsilon
TemplateTypeParameterDefaultOpt:
= TypeNT
epsilon
TemplateValueParameter:
BasicType Declarator TemplateValueParameterSpecializationOpt TemplateValueParameterDefaultOpt
TemplateValueParameterSpecializationOpt:
: ConditionalExpression
epsilon
TemplateValueParameterDefaultOpt:
= ConditionalExpression
epsilon
TemplateAliasParameter:
alias Identifier TemplateAliasParameterSpecializationOpt TemplateAliasParameterDefaultOpt
TemplateAliasParameterSpecializationOpt:
: TypeNT
epsilon
TemplateAliasParameterDefaultOpt:
= TypeNT
epsilon
TemplateTupleParameter:
Identifier \.\.\.
ClassTemplateDeclaration:
class Identifier \( TemplateParameterListOpt \) BaseClassListOpt ClassBody
InterfaceTemplateDeclaration:
interface Identifier \( TemplateParameterListOpt \) SuperInterfaceListOpt InterfaceBody
StructTemplateDeclaration:
struct Identifier \( TemplateParameterListOpt \) StructBody
FunctionTemplateDeclaration:
TypeIdent \( TemplateParameterList \) \( ParameterListOpt \) FunctionBody
TypeIdent:
BasicType Identifier
TypeNT Identifier
TemplateInstance:
Identifier ! \( TemplateArgumentListOpt \)
TemplateArgumentListOpt:
TemplateArgumentList
epsilon
TemplateArgumentList:
TemplateArgumentList , TemplateArgument
TemplateArgument
TemplateArgument:
TypeNT
AssignExpression
Identifier
TemplateMixin:
mixin Identifier TemplateMixin2 IdentifierOpt ;
TemplateMixin2:
! \( TemplateArgumentListOpt \)
epsilon
Expression:
Expression , AssignExpression
AssignExpression
ExpressionOpt:
Expression
epsilon
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:
CmpExpression
AndExpression & CmpExpression
CmpExpression:
ShiftExpression
ShiftExpression == ShiftExpression
ShiftExpression != ShiftExpression
ShiftExpression is ShiftExpression
ShiftExpression NotIs ShiftExpression
ShiftExpression \< ShiftExpression
ShiftExpression \<= ShiftExpression
ShiftExpression \> ShiftExpression
ShiftExpression \>= ShiftExpression
ShiftExpression !\<\>= ShiftExpression
ShiftExpression !\<\> ShiftExpression
ShiftExpression \<\> ShiftExpression
ShiftExpression \<\>= ShiftExpression
ShiftExpression !\> ShiftExpression
ShiftExpression !\>= ShiftExpression
ShiftExpression !\< ShiftExpression
ShiftExpression !\<= ShiftExpression
ShiftExpression in ShiftExpression
NotIs:
!is>[^_a-zA-Z0-9]
IsNotIs:
is
!is>[^_a-zA-Z0-9]
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
\( TypeNT \) \. Identifier
NewExpression
delete UnaryExpression
cast \( TypeNT \) UnaryExpression
PostfixExpression:
Integer
Float
\$
null
true
false
AssertExpression
MixinExpression
IsExpression
PostfixExpression2
PostfixExpression2:
PrimaryExpression
PostfixExpression2 \. Identifier
PostfixExpression2 \. TemplateInstance
PostfixExpression2 \+\+
PostfixExpression2 \-\-
PostfixExpression2 \( ArgumentList \)
PostfixExpression2 \[ ArgumentList \]
PostfixExpression2 \[ AssignExpression \.\. AssignExpression \]
PrimaryExpression:
Identifier
\. Identifier
TemplateInstance
\. TemplateInstance
this
super
CharacterLiteral
StringLiterals
ArrayLiteral
AssocArrayLiteral
FunctionLiteral
ImportExpression
BasicTypeNoIdList \. Identifier
typeid \( TypeNT \)
\( Expression \)
TraitsExpression
AssertExpression:
assert \( AssignExpression \)
assert \( AssignExpression , AssignExpression \)
MixinExpression:
mixin \( AssignExpression \)
ImportExpression:
import \( AssignExpression \)
IsExpression:
IsNotIs \( TypeNT \)
IsNotIs \( TypeNT : TypeSpecialization \)
IsNotIs \( TypeNT == TypeSpecialization \)
IsNotIs \( TypeNT Identifier \)
IsNotIs \( TypeNT Identifier : TypeSpecialization \)
IsNotIs \( TypeNT Identifier == TypeSpecialization \)
IsNotIs \( TypeNT Identifier : TypeSpecialization , TemplateParameterList \)
IsNotIs \( TypeNT Identifier == TypeSpecialization , TemplateParameterList \)
TypeSpecialization:
TypeNT
typedef
struct
union
class
interface
enum
function
delegate
super
return
StringLiterals:
StringLiteral
StringLiterals StringLiteral
ArrayLiteral:
\[ ArgumentList \]
AssocArrayLiteral:
\[ KeyValuePairs \]
KeyValuePairs:
KeyValuePair
KeyValuePair , KeyValuePairs
KeyValuePair:
ConditionalExpression : ConditionalExpression
FunctionLiteral:
function TypeOpt \( ParameterListOpt \) FunctionBody
delegate TypeOpt \( ParameterListOpt \) FunctionBody
function TypeOpt FunctionBody
delegate TypeOpt FunctionBody
\( ParameterListOpt \) FunctionBody
FunctionBody
NewExpression:
NewArguments TypeNT \[ AssignExpression \]
NewArguments TypeNT \( ArgumentList \)
NewArguments TypeNT
NewArguments ClassArguments BaseClassListOpt \{ DeclDefsOpt \}
NewArguments:
new \( ArgumentList \)
new
ClassArguments:
class \( ArgumentList \)
class
ArgumentList:
Expression
epsilon
TraitsExpression:
__traits \( Identifier , TraitsArguments \)
TraitsArguments:
TraitsArguments , TraitsArgument
TraitsArgument
TraitsArgument:
AssignExpression
TypeNT
CharacterLiteral:
'(([^'\\]|(\\(['"\?\\abfnrtv]|([0-7_]{1,3})|(x[0-9a-fA-F]{2})|(u[0-9a-fA-F]{4})|(U[0-9a-fA-F]{8})))))'
StringLiteral:
"(([^"\\]*(\\(['"\?\\abfnrtv]|([0-7_]{1,3})|(x[0-9a-fA-F]{2})|(u[0-9a-fA-F]{4})|(U[0-9a-fA-F]{8})))?)*)"[cdw]?
r"[^"]*"[cdw]?
`[^`]*`[cdw]?
x"[0-9a-fA-F_\n\r\t ]*"[cdw]?
\\(['"\?\\abfnrtv]|([0-7_]{1,3})|(x[0-9a-fA-F]{2})|(u[0-9a-fA-F]{4})|(U[0-9a-fA-F]{8}))
q"
q\{ Tokens \}
__FILE__
__DATE__
__TIME__
__TIMESTAMP__
__VENDOR__
Tokens:
Tokens Token
Token
Token:
[ for !\<= private lazy \<\>= r"[^"]*"[cdw]? in class typeof \^= \< override double __VENDOR__ [1-9][0-9_]*(L|[uU]|L[uU]|[uU]L)? [0-9][0-9_]*\.?([fFLi]|[fFL]i) \> with uint \? goto is cdouble alias function 0([xX][0-9a-fA-F_]*|[bB][01_]*|[0-7_]*)(L|[uU]|L[uU]|[uU]L)? \*= __FILE__ q" switch asm dchar foreach idouble \<= static struct !\< import true \.\.\. !\> !\>= auto creal \\(['"\?\\abfnrtv]|([0-7_]{1,3})|(x[0-9a-fA-F]{2})|(u[0-9a-fA-F]{4})|(U[0-9a-fA-F]{8})) foreach_reverse __TIMESTAMP__ export \+= !\<\> debug "(([^"\\]*(\\(['"\?\\abfnrtv]|([0-7_]{1,3})|(x[0-9a-fA-F]{2})|(u[0-9a-fA-F]{4})|(U[0-9a-fA-F]{8})))?)*)"[cdw]? float \<\< ~ break (([0-9_]*\.[0-9][0-9_]*([eE][\+\-]?[0-9][0-9_]*)?)|([0-9][0-9_]*[eE][\+\-]?[0-9][0-9_]*))([fFLi]|[fFL]i)? \<\> ! typeid char __TIME__ module real \[ != \>\>\> % 0[xX][0-9a-fA-F_]*\.?[0-9a-fA-F_]+[pP][\+\-]?[0-9_]+([fFLi]|[fFL]i)? \] & \^ unittest \>= \-\- const , \|= `[^`]*`[cdw]? \>\>= do / enum \-= false __LINE__ __VERSION__ case short scope this package finally == void interface !\<\>= pragma : (0([xX][0-9a-fA-F_]*|[bB][01_]*|[0-7_]*)|([1-9][0-9_]*))[fFL]?i ; '(([^'\\]|(\\(['"\?\\abfnrtv]|([0-7_]{1,3})|(x[0-9a-fA-F]{2})|(u[0-9a-fA-F]{4})|(U[0-9a-fA-F]{8})))))' x"[0-9a-fA-F_\n\r\t ]*"[cdw]? extern ubyte = protected int super q\{ typedef \.\. cast else null && ulong ref \| \>\>\>= align version [0-9][0-9_]*\.>[^\.] mixin body synchronized abstract \|\| __DATE__ volatile final [a-zA-Z_][_a-zA-Z0-9]* \<\<= \>\> \$ inout !is>[^_a-zA-Z0-9] %= delete continue template \( union ifloat \) byte \* delegate try \+ catch ireal deprecated bool invariant new \- throw \. \+\+ default return ushort ~= public out cfloat long &= if /= while __traits assert wchar]
\{ Tokens \}
Integer:
0([xX][0-9a-fA-F_]*|[bB][01_]*|[0-7_]*)(L|[uU]|L[uU]|[uU]L)?
[1-9][0-9_]*(L|[uU]|L[uU]|[uU]L)?
__LINE__
__VERSION__
Float:
(([0-9_]*\.[0-9][0-9_]*([eE][\+\-]?[0-9][0-9_]*)?)|([0-9][0-9_]*[eE][\+\-]?[0-9][0-9_]*))([fFLi]|[fFL]i)?
[0-9][0-9_]*\.?([fFLi]|[fFL]i)
[0-9][0-9_]*\.>[^\.]
0[xX][0-9a-fA-F_]*\.?[0-9a-fA-F_]+[pP][\+\-]?[0-9_]+([fFLi]|[fFL]i)?
(0([xX][0-9a-fA-F_]*|[bB][01_]*|[0-7_]*)|([1-9][0-9_]*))[fFL]?i
Identifier:
[a-zA-Z_][_a-zA-Z0-9]*
IdentifierOpt:
Identifier
epsilon