Finished grammar DDoc

This commit is contained in:
Hackerpilot 2013-06-05 00:46:51 +00:00
parent 90b6d37c5d
commit 6aa3fcfd02
2 changed files with 327 additions and 102 deletions

View File

@ -162,6 +162,7 @@ class ASTVisitor
/** */void visit(Parameter parameter) {} /** */void visit(Parameter parameter) {}
/** */void visit(ParameterAttribute parameterAttribute) {} /** */void visit(ParameterAttribute parameterAttribute) {}
/** */void visit(Parameters parameters) {} /** */void visit(Parameters parameters) {}
/** */void visit(Postblit postblit) {}
/** */void visit(PostIncDecExpression postIncDecExpression) {} /** */void visit(PostIncDecExpression postIncDecExpression) {}
/** */void visit(PowExpression powExpression) {} /** */void visit(PowExpression powExpression) {}
/** */void visit(PragmaDeclaration pragmaDeclaration) {} /** */void visit(PragmaDeclaration pragmaDeclaration) {}
@ -186,6 +187,7 @@ class ASTVisitor
/** */void visit(StaticIfCondition staticIfCondition) {} /** */void visit(StaticIfCondition staticIfCondition) {}
/** */void visit(StorageClass storageClass) {} /** */void visit(StorageClass storageClass) {}
/** */void visit(StructBody structBody) {} /** */void visit(StructBody structBody) {}
/** */void visit(StructBodyItem structBodyItem) {}
/** */void visit(StructDeclaration structDeclaration) {} /** */void visit(StructDeclaration structDeclaration) {}
/** */void visit(StructInitializer structInitializer) {} /** */void visit(StructInitializer structInitializer) {}
/** */void visit(StructMemberInitializer structMemberInitializer) {} /** */void visit(StructMemberInitializer structMemberInitializer) {}
@ -1560,6 +1562,14 @@ public:
/** */ bool hasVarargs; /** */ bool hasVarargs;
} }
///
class Postblit : ASTNode
{
public:
mixin(DEFAULT_ACCEPT);
/** */ FunctionBody functionBody;
}
/// ///
class PostIncDecExpression : ASTNode class PostIncDecExpression : ASTNode
{ {
@ -1776,7 +1786,16 @@ class StructBody : ASTNode
{ {
public: public:
mixin(DEFAULT_ACCEPT); mixin(DEFAULT_ACCEPT);
/** */ Declaration[] declarations; /** */ StructBodyItem[] structBodyItems;
}
class StructBodyItem : ASTNode
{
public:
mixin(DEFAULT_ACCEPT);
/** */ Declaration declaration;
/** */ Invariant invariant_;
/** */ Postblit postblit;
} }
/// ///

View File

@ -272,7 +272,9 @@ struct Parser
/** /**
* Parses an AsmAddExp * Parses an AsmAddExp
* *
* $(GRAMMAR ) * $(GRAMMAR $(RULEDEF asmAddExp):
* $(RULE asmMulExp) (($(LITERAL '+') | $(LITERAL '-')) $(RULE asmMulExp))?
* ;)
*/ */
AsmAddExp parseAsmAddExp() AsmAddExp parseAsmAddExp()
{ {
@ -284,7 +286,9 @@ struct Parser
/** /**
* Parses an AsmAndExp * Parses an AsmAndExp
* *
* $(GRAMMAR ) * $(GRAMMAR $(RULEDEF asmAndExp):
* $(RULE asmEqualExp) ($(LITERAL '&') $(RULE asmEqualExp))?
* ;)
*/ */
AsmAndExp parseAsmAndExp() AsmAndExp parseAsmAndExp()
{ {
@ -296,7 +300,10 @@ struct Parser
/** /**
* Parses an AsmBrExp * Parses an AsmBrExp
* *
* $(GRAMMAR ) * $(GRAMMAR $(RULEDEF asmBrExp):
* $(RULE asmUnaExp)
* | $(RULE asmBrExp) $(LITERAL '[') $(RULE asmExp) $(LITERAL ']')
* ;)
*/ */
AsmBrExp parseAsmBrExp() AsmBrExp parseAsmBrExp()
{ {
@ -308,7 +315,9 @@ struct Parser
/** /**
* Parses an AsmEqualExp * Parses an AsmEqualExp
* *
* $(GRAMMAR ) * $(GRAMMAR $(RULEDEF asmEqualExp):
* $(RULE asmRelExp) (('==' | '!=') $(RULE asmRelExp))?
* ;)
*/ */
AsmEqualExp parseAsmEqualExp() AsmEqualExp parseAsmEqualExp()
{ {
@ -320,7 +329,9 @@ struct Parser
/** /**
* Parses an AsmExp * Parses an AsmExp
* *
* $(GRAMMAR ) * $(GRAMMAR $(RULEDEF asmExp):
* $(RULE asmLogOrExp) ($(LITERAL '?') $(RULE asmExp) $(LITERAL ':') $(RULE asmExp))?
* ;)
*/ */
AsmExp parseAsmExp() AsmExp parseAsmExp()
{ {
@ -332,7 +343,14 @@ struct Parser
/** /**
* Parses an AsmInstruction * Parses an AsmInstruction
* *
* $(GRAMMAR ) * $(GRAMMAR $(RULEDEF asmInstruction):
* $(LITERAL Identifier)
* | $(LITERAL 'align') I$(RULE ntegerLiteral)
* | $(LITERAL 'align') $(LITERAL Identifier)
* | $(LITERAL Identifier) $(LITERAL ':') $(RULE asmInstruction)
* | $(LITERAL Identifier) $(RULE asmExp)
* | $(RULE opcode) $(RULE operands)
* ;)
*/ */
AsmInstruction parseAsmInstruction() AsmInstruction parseAsmInstruction()
{ {
@ -344,7 +362,9 @@ struct Parser
/** /**
* Parses an AsmLogAndExp * Parses an AsmLogAndExp
* *
* $(GRAMMAR ) * $(GRAMMAR $(RULEDEF asmLogAndExp):
* $(RULE asmOrExp) ('&&' $(RULE asmOrExp))?
* ;)
*/ */
AsmLogAndExp parseAsmLogAndExp() AsmLogAndExp parseAsmLogAndExp()
{ {
@ -356,7 +376,9 @@ struct Parser
/** /**
* Parses an AsmLogOrExp * Parses an AsmLogOrExp
* *
* $(GRAMMAR ) * $(GRAMMAR $(RULEDEF asmLogOrExp):
* $(RULE asmLogAndExp) ('||' $(RULE asmLogAndExp))?
* ;)
*/ */
AsmLogOrExp parseAsmLogOrExp() AsmLogOrExp parseAsmLogOrExp()
{ {
@ -368,7 +390,9 @@ struct Parser
/** /**
* Parses an AsmMulExp * Parses an AsmMulExp
* *
* $(GRAMMAR ) * $(GRAMMAR $(RULEDEF asmMulExp):
* $(RULE asmBrExp) (($(LITERAL '*') | $(LITERAL '/') | $(LITERAL '%')) $(RULE asmBrExp))?
* ;)
*/ */
AsmMulExp parseAsmMulExp() AsmMulExp parseAsmMulExp()
{ {
@ -380,7 +404,9 @@ struct Parser
/** /**
* Parses an AsmOrExp * Parses an AsmOrExp
* *
* $(GRAMMAR ) * $(GRAMMAR $(RULEDEF asmOrExp):
* $(RULE asmXorExp) ($(LITERAL '|') $(RULE asmXorExp))?
* ;)
*/ */
AsmOrExp parseAsmOrExp() AsmOrExp parseAsmOrExp()
{ {
@ -392,7 +418,13 @@ struct Parser
/** /**
* Parses an AsmPrimaryExp * Parses an AsmPrimaryExp
* *
* $(GRAMMAR ) * $(GRAMMAR $(RULEDEF asmPrimaryExp):
* $(RULE IntegerLiteral)
* | $(RULE FloatLiteral)
* | $(RULE register)
* | $(RULE identifierChain)
* | $(LITERAL '$')
* ;)
*/ */
AsmPrimaryExp parseAsmPrimaryExp() AsmPrimaryExp parseAsmPrimaryExp()
{ {
@ -404,7 +436,9 @@ struct Parser
/** /**
* Parses an AsmRelExp * Parses an AsmRelExp
* *
* $(GRAMMAR ) * $(GRAMMAR $(RULEDEF asmRelExp):
* $(RULE asmShiftExp) (($(LITERAL '<') | $(LITERAL '<=') | $(LITERAL '>') | $(LITERAL '>=')) $(RULE asmShiftExp))?
* ;)
*/ */
AsmRelExp parseAsmRelExp() AsmRelExp parseAsmRelExp()
{ {
@ -416,7 +450,9 @@ struct Parser
/** /**
* Parses an AsmShiftExp * Parses an AsmShiftExp
* *
* $(GRAMMAR ) * $(GRAMMAR $(RULEDEF asmShiftExp):
* $(RULE asmAddExp) (($(LITERAL '<<') | $(LITERAL '>>') | $(LITERAL '>>>')) $(RULE asmAddExp))?
* ;)
*/ */
AsmShiftExp parseAsmShiftExp() AsmShiftExp parseAsmShiftExp()
{ {
@ -428,7 +464,9 @@ struct Parser
/** /**
* Parses an AsmStatement * Parses an AsmStatement
* *
* $(GRAMMAR ) * $(GRAMMAR $(RULEDEF asmStatement):
* $(RULE 'asm') $(LITERAL '{') $(RULE asmInstruction)+ $(LITERAL '}')
* ;)
*/ */
AsmStatement parseAsmStatement() AsmStatement parseAsmStatement()
{ {
@ -440,7 +478,15 @@ struct Parser
/** /**
* Parses an AsmTypePrefix * Parses an AsmTypePrefix
* *
* $(GRAMMAR ) * $(GRAMMAR $(RULEDEF asmTypePrefix):
* $(LITERAL Identifier) $(LITERAL Identifier)
* | $(LITERAL 'byte') $(LITERAL Identifier)
* | $(LITERAL 'short') $(LITERAL Identifier)
* | $(LITERAL 'int') $(LITERAL Identifier)
* | $(LITERAL 'float') $(LITERAL Identifier)
* | $(LITERAL 'double') $(LITERAL Identifier)
* | $(LITERAL 'real') $(LITERAL Identifier)
* ;)
*/ */
AsmTypePrefix parseAsmTypePrefix() AsmTypePrefix parseAsmTypePrefix()
{ {
@ -452,7 +498,15 @@ struct Parser
/** /**
* Parses an AsmUnaExp * Parses an AsmUnaExp
* *
* $(GRAMMAR ) * $(GRAMMAR $(RULEDEF asmUnaExp):
* $(RULE asmTypePrefix) $(RULE asmExp)
* | $(LITERAL Identifier) $(RULE asmExp)
* | $(LITERAL '+') $(RULE asmUnaExp)
* | $(LITERAL '-') $(RULE asmUnaExp)
* | $(LITERAL '!') $(RULE asmUnaExp)
* | $(LITERAL '~') $(RULE asmUnaExp)
* | $(RULE asmPrimaryExp)
* ;)
*/ */
AsmUnaExp parseAsmUnaExp() AsmUnaExp parseAsmUnaExp()
{ {
@ -464,7 +518,9 @@ struct Parser
/** /**
* Parses an AsmXorExp * Parses an AsmXorExp
* *
* $(GRAMMAR ) * $(GRAMMAR $(RULEDEF asmXorExp):
* $(RULE asmAndExp) ($(LITERAL '^') $(RULE asmAndExp))?
* ;)
*/ */
AsmXorExp parseAsmXorExp() AsmXorExp parseAsmXorExp()
{ {
@ -1639,7 +1695,7 @@ struct Parser
/** /**
* Parses a Finally * Parses a Finally
* *
* $(GRAMMAR $(RULEDEF finally_): * $(GRAMMAR $(RULEDEF finally):
* $(LITERAL 'finally') $(RULE nonEmptyStatementNoCaseNoDefault) * $(LITERAL 'finally') $(RULE nonEmptyStatementNoCaseNoDefault)
* ;) * ;)
*/ */
@ -2518,14 +2574,14 @@ struct Parser
* Parses a ParameterAttribute * Parses a ParameterAttribute
* *
* $(GRAMMAR $(RULEDEF parameterAttribute): * $(GRAMMAR $(RULEDEF parameterAttribute):
* $(LITERAL 'auto') * $(RULE typeConstructor)
* | $(LITERAL 'final') * | $(LITERAL 'final')
* | $(LITERAL 'in') * | $(LITERAL 'in')
* | $(LITERAL 'lazy') * | $(LITERAL 'lazy')
* | $(LITERAL 'out') * | $(LITERAL 'out')
* | $(LITERAL 'ref') * | $(LITERAL 'ref')
* | $(LITERAL 'scope') * | $(LITERAL 'scope')
* | $(RULE typeConstructor) * | $(LITERAL 'auto')
* ;) * ;)
*/ */
ParameterAttribute parseParameterAttribute() ParameterAttribute parseParameterAttribute()
@ -2539,7 +2595,7 @@ struct Parser
* Parses Parameters * Parses Parameters
* *
* $(GRAMMAR $(RULEDEF parameters): * $(GRAMMAR $(RULEDEF parameters):
* $(LITERAL '(') (($(RULE parameter) ($(LITERAL ',') $(RULE parameter))*)? ($(LITERAL ',') '...')? | '...') $(LITERAL ')') * $(LITERAL '$(LPAREN)') (($(RULE parameter) ($(LITERAL ',') $(RULE parameter))*)? ($(LITERAL ',') $(LITERAL '...'))? | $(LITERAL '...')) $(LITERAL '$(RPAREN)')
* ;) * ;)
*/ */
Parameters parseParameters() Parameters parseParameters()
@ -2549,6 +2605,20 @@ struct Parser
return node; return node;
} }
/**
* Parses a Postblit
*
* $(GRAMMAR $(RULEDEF parameters):
* $(LITERAL 'this') $(LITERAL '$(LPAREN)') $(LITERAL 'this') $(LITERAL '$(RPAREN)') $(RULE functionBody)
* ;)
*/
Postblit parsePostblit()
{
auto node = new Postblit;
// TODO
return node;
}
/** /**
* Parses a PostIncDecExpression * Parses a PostIncDecExpression
* *
@ -2624,17 +2694,16 @@ struct Parser
* Parses a PrimaryExpression * Parses a PrimaryExpression
* *
* $(GRAMMAR $(RULEDEF primaryExpression): * $(GRAMMAR $(RULEDEF primaryExpression):
* $(RULE identifierOrTemplateInstance) * $(RULE symbol)
* | $(LITERAL '.') $(RULE identifierOrTemplateInstance)
* | $(RULE type) $(LITERAL '.') $(LITERAL Identifier) * | $(RULE type) $(LITERAL '.') $(LITERAL Identifier)
* | $(RULE typeofExpression) * | $(RULE typeofExpression)
* | $(RULE typeidExpression) * | $(RULE typeidExpression)
* | $(LITERAL '$') * | $(LITERAL '$')
* | $(LITERAL 'this') * | $(LITERAL 'this')
* | $(LITERAL 'super') * | $(LITERAL 'super')
* | $(LITERAL 'null') * | $(LITERAL '_null')
* | $(LITERAL 'true') * | $(LITERAL '_true')
* | $(LITERAL 'false') * | $(LITERAL '_false')
* | $(LITERAL '___DATE__') * | $(LITERAL '___DATE__')
* | $(LITERAL '___TIME__') * | $(LITERAL '___TIME__')
* | $(LITERAL '___TIMESTAMP__') * | $(LITERAL '___TIMESTAMP__')
@ -2951,7 +3020,7 @@ struct Parser
* Parses a StructBody * Parses a StructBody
* *
* $(GRAMMAR $(RULEDEF structBody): * $(GRAMMAR $(RULEDEF structBody):
* $(LITERAL '{') $(RULE declaration)* $(LITERAL '}') * $(LITERAL '{') $(RULE structBodyItem)* $(LITERAL '}')
* ;) * ;)
*/ */
StructBody parseStructBody() StructBody parseStructBody()
@ -2959,11 +3028,27 @@ struct Parser
auto node = new StructBody; auto node = new StructBody;
expect(TokenType.lBrace); expect(TokenType.lBrace);
while (tokens[index] != TokenType.rBrace && moreTokens()) while (tokens[index] != TokenType.rBrace && moreTokens())
node.declarations ~= parseDeclaration(); node.structBodyItems ~= parseStructBodyItem();
expect(TokenType.rBrace); expect(TokenType.rBrace);
return node; return node;
} }
/**
* Parses a StructBodyItem
*
* $(GRAMMAR $(RULEDEF structBodyItem):
* $(RULE declaration)
* | $(RULE postBlit)
* | $(RULE invariant)
* ;)
*/
StructBodyItem parseStructBodyItem()
{
auto node = new StructBodyItem;
return node;
}
/** /**
* Parses a StructDeclaration * Parses a StructDeclaration
* *
@ -3082,9 +3167,11 @@ struct Parser
} }
/** /**
* Parses an Symbol * Parses a Symbol
* *
* $(GRAMMAR ) * $(GRAMMAR $(RULEDEF symbol):
* $(LITERAL '.')? $(RULE identifierOrTemplateChain)
* ;)
*/ */
Symbol parseSymbol() Symbol parseSymbol()
{ {
@ -3101,7 +3188,9 @@ struct Parser
/** /**
* Parses an SynchronizedStatement * Parses an SynchronizedStatement
* *
* $(GRAMMAR ) * $(GRAMMAR $(RULEDEF synchronizedStatement):
* $(LITERAL 'synchronized') ($(LITERAL '$(LPAREN)') $(RULE expression) $(LITERAL '$(RPAREN)'))? $(RULE nonEmptyStatementNoCaseNoDefault)
* ;)
*/ */
SynchronizedStatement parseSynchronizedStatement() SynchronizedStatement parseSynchronizedStatement()
{ {
@ -3120,7 +3209,9 @@ struct Parser
/** /**
* Parses an TemplateAliasParameter * Parses an TemplateAliasParameter
* *
* $(GRAMMAR ) * $(GRAMMAR $(RULEDEF templateAliasParameter):
* $(LITERAL 'alias') $(RULE type)? $(LITERAL Identifier) ($(LITERAL ':') ($(RULE type) | $(RULE expression)))? ($(LITERAL '=') ($(RULE type) | $(RULE expression)))?
* ;)
*/ */
TemplateAliasParameter parseTemplateAliasParameter() TemplateAliasParameter parseTemplateAliasParameter()
{ {
@ -3130,9 +3221,13 @@ struct Parser
} }
/** /**
* Parses an TemplateArgument * Parses a TemplateArgument
* *
* $(GRAMMAR ) * $(GRAMMAR $(RULEDEF templateArgument):
* $(RULE type)
* | $(RULE assignExpression)
* | $(RULE symbol)
* ;)
*/ */
TemplateArgument parseTemplateArgument() TemplateArgument parseTemplateArgument()
{ {
@ -3142,9 +3237,11 @@ struct Parser
} }
/** /**
* Parses an TemplateArgumentList * Parses a TemplateArgumentList
* *
* $(GRAMMAR ) * $(GRAMMAR $(RULEDEF templateArgumentList):
* $(RULE templateArgument) ($(LITERAL ',') $(RULE templateArgument)?)*
* ;)
*/ */
TemplateArgumentList parseTemplateArgumentList() TemplateArgumentList parseTemplateArgumentList()
{ {
@ -3154,9 +3251,11 @@ struct Parser
} }
/** /**
* Parses an TemplateArguments * Parses TemplateArguments
* *
* $(GRAMMAR ) * $(GRAMMAR $(RULEDEF templateArguments):
* $(LITERAL '!') ($(LITERAL '$(LPAREN)') $(RULE templateArgumentList)? $(LITERAL '$(RPAREN)') | $(RULE templateSingleArgument))
* ;)
*/ */
TemplateArguments parseTemplateArguments() TemplateArguments parseTemplateArguments()
{ {
@ -3168,7 +3267,9 @@ struct Parser
/** /**
* Parses an TemplateDeclaration * Parses an TemplateDeclaration
* *
* $(GRAMMAR ) * $(GRAMMAR $(RULEDEF templateDeclaration):
* $(LITERAL 'template') $(LITERAL Identifier) $(RULE templateParameters) $(RULE constraint)? $(LITERAL '{') $(RULE declaration)+ $(LITERAL '}')
* ;)
*/ */
TemplateDeclaration parseTemplateDeclaration() TemplateDeclaration parseTemplateDeclaration()
{ {
@ -3178,9 +3279,11 @@ struct Parser
} }
/** /**
* Parses an TemplateInstance * Parses a TemplateInstance
* *
* $(GRAMMAR ) * $(GRAMMAR $(RULEDEF templateInstance):
* $(LITERAL Identifier) $(RULE templateArguments)
* ;)
*/ */
TemplateInstance parseTemplateInstance() TemplateInstance parseTemplateInstance()
{ {
@ -3190,9 +3293,11 @@ struct Parser
} }
/** /**
* Parses an TemplateMixinStatement * Parses a TemplateMixinStatement
* *
* $(GRAMMAR ) * $(GRAMMAR $(RULEDEF templateMixinStatement):
* $(LITERAL 'mixin') $(RULE mixinTemplateName) $(RULE templateArguments)? $(LITERAL Identifier)? $(LITERAL ';')
* ;)
*/ */
TemplateMixinStatement parseTemplateMixinStatement() TemplateMixinStatement parseTemplateMixinStatement()
{ {
@ -3202,9 +3307,15 @@ struct Parser
} }
/** /**
* Parses an TemplateParameter * Parses a TemplateParameter
* *
* $(GRAMMAR ) * $(GRAMMAR $(RULEDEF templateParameter):
* $(RULE templateTypeParameter)
* | $(RULE templateValueParameter)
* | $(RULE templateAliasParameter)
* | $(RULE templateTupleParameter)
* | $(RULE templateThisParameter)
* ;)
*/ */
TemplateParameter parseTemplateParameter() TemplateParameter parseTemplateParameter()
{ {
@ -3216,7 +3327,9 @@ struct Parser
/** /**
* Parses an TemplateParameterList * Parses an TemplateParameterList
* *
* $(GRAMMAR ) * $(GRAMMAR $(RULEDEF templateParameterList):
* $(RULE templateParameter) ($(LITERAL ',') $(RULE templateParameter)?)*
* ;)
*/ */
TemplateParameterList parseTemplateParameterList() TemplateParameterList parseTemplateParameterList()
{ {
@ -3226,9 +3339,11 @@ struct Parser
} }
/** /**
* Parses an TemplateParameters * Parses TemplateParameters
* *
* $(GRAMMAR ) * $(GRAMMAR $(RULEDEF templateParameters):
* $(LITERAL '$(LPAREN)') $(RULE templateParameterList)? $(LITERAL '$(RPAREN)')
* ;)
*/ */
TemplateParameters parseTemplateParameters() TemplateParameters parseTemplateParameters()
{ {
@ -3240,7 +3355,28 @@ struct Parser
/** /**
* Parses an TemplateSingleArgument * Parses an TemplateSingleArgument
* *
* $(GRAMMAR ) * $(GRAMMAR $(RULEDEF templateSingleArgument):
* $(RULE basicType)
* | $(LITERAL Identifier)
* | $(LITERAL CharacterLiteral)
* | $(LITERAL StringLiteral)
* | $(LITERAL IntegerLiteral)
* | $(LITERAL FloatLiteral)
* | $(LITERAL '_true')
* | $(LITERAL '_false')
* | $(LITERAL '_null')
* | $(LITERAL 'this')
* | $(LITERAL '__DATE__')
* | $(LITERAL '__TIME__')
* | $(LITERAL '__TIMESTAMP__')
* | $(LITERAL '__VENDOR__')
* | $(LITERAL '__VERSION__')
* | $(LITERAL '__FILE__')
* | $(LITERAL '__LINE__')
* | $(LITERAL '__MODULE__')
* | $(LITERAL '__FUNCTION__')
* | $(LITERAL '__PRETTY_FUNCTION__')
* ;)
*/ */
TemplateSingleArgument parseTemplateSingleArgument() TemplateSingleArgument parseTemplateSingleArgument()
{ {
@ -3252,7 +3388,9 @@ struct Parser
/** /**
* Parses an TemplateThisParameter * Parses an TemplateThisParameter
* *
* $(GRAMMAR ) * $(GRAMMAR $(RULEDEF templateThisParameter):
* $(LITERAL 'this') $(RULE templateTypeParameter)
* ;)
*/ */
TemplateThisParameter parseTemplateThisParameter() TemplateThisParameter parseTemplateThisParameter()
{ {
@ -3264,7 +3402,9 @@ struct Parser
/** /**
* Parses an TemplateTupleParameter * Parses an TemplateTupleParameter
* *
* $(GRAMMAR ) * $(GRAMMAR $(RULEDEF templateTupleParameter):
* $(LITERAL Identifier) '...'
* ;)
*/ */
TemplateTupleParameter parseTemplateTupleParameter() TemplateTupleParameter parseTemplateTupleParameter()
{ {
@ -3274,9 +3414,11 @@ struct Parser
} }
/** /**
* Parses an TemplateTypeParameter * Parses a TemplateTypeParameter
* *
* $(GRAMMAR ) * $(GRAMMAR $(RULEDEF templateTypeParameter):
* $(LITERAL Identifier) ($(LITERAL ':') $(RULE type))? ($(LITERAL '=') $(RULE type))?
* ;)
*/ */
TemplateTypeParameter parseTemplateTypeParameter() TemplateTypeParameter parseTemplateTypeParameter()
{ {
@ -3286,9 +3428,11 @@ struct Parser
} }
/** /**
* Parses an TemplateValueParameter * Parses a TemplateValueParameter
* *
* $(GRAMMAR ) * $(GRAMMAR $(RULEDEF templateValueParameter):
* $(RULE type) $(LITERAL Identifier) ($(LITERAL ':') $(RULE expression))? $(RULE templateValueParameterDefault)?
* ;)
*/ */
TemplateValueParameter parseTemplateValueParameter() TemplateValueParameter parseTemplateValueParameter()
{ {
@ -3298,9 +3442,11 @@ struct Parser
} }
/** /**
* Parses an TemplateValueParameterDefault * Parses a TemplateValueParameterDefault
* *
* $(GRAMMAR ) * $(GRAMMAR $(RULEDEF templateValueParameterDefault):
* $(LITERAL '=') ('__FILE__' | '__MODULE__' | '__LINE__' | '__FUNCTION__' | '__PRETTY_FUNCTION__' | $(RULE assignExpression))
* ;)
*/ */
TemplateValueParameterDefault parseTemplateValueParameterDefault() TemplateValueParameterDefault parseTemplateValueParameterDefault()
{ {
@ -3310,9 +3456,11 @@ struct Parser
} }
/** /**
* Parses an TernaryExpression * Parses a TernaryExpression
* *
* $(GRAMMAR ) * $(GRAMMAR $(RULEDEF ternaryExpression):
* $(RULE orOrExpression) ($(LITERAL '?') $(RULE expression) $(LITERAL ':') $(RULE ternaryExpression))?
* ;)
*/ */
TernaryExpression parseTernaryExpression() TernaryExpression parseTernaryExpression()
{ {
@ -3329,9 +3477,11 @@ struct Parser
} }
/** /**
* Parses an ThrowStatement * Parses a ThrowStatement
* *
* $(GRAMMAR ) * $(GRAMMAR $(RULEDEF throwStatement):
* $(LITERAL 'throw') $(RULE expression) $(LITERAL ';')
* ;)
*/ */
ThrowStatement parseThrowStatement() ThrowStatement parseThrowStatement()
{ {
@ -3345,7 +3495,10 @@ struct Parser
/** /**
* Parses an TraitsArgument * Parses an TraitsArgument
* *
* $(GRAMMAR ) * $(GRAMMAR $(RULEDEF traitsArgument):
* $(RULE assignExpression)
* | $(RULE type)
* ;)
*/ */
TraitsArgument parseTraitsArgument() TraitsArgument parseTraitsArgument()
{ {
@ -3357,7 +3510,9 @@ struct Parser
/** /**
* Parses an TraitsExpression * Parses an TraitsExpression
* *
* $(GRAMMAR ) * $(GRAMMAR $(RULEDEF traitsExpression):
* $(LITERAL '__traits') $(LITERAL '$(LPAREN)') $(LITERAL Identifier) $(LITERAL ',') $(RULE traitsArgument) ($(LITERAL ',') $(RULE traitsArgument))* $(LITERAL '$(RPAREN)')
* ;)
*/ */
TraitsExpression parseTraitsExpression() TraitsExpression parseTraitsExpression()
{ {
@ -3367,9 +3522,11 @@ struct Parser
} }
/** /**
* Parses an TryStatement * Parses a TryStatement
* *
* $(GRAMMAR ) * $(GRAMMAR $(RULEDEF tryStatement):
* $(LITERAL 'try') $(RULE nonEmptyStatementNoCaseNoDefault) ($(RULE catches) | $(RULE catches) $(RULE finally) | $(RULE finally))
* ;)
*/ */
TryStatement parseTryStatement() TryStatement parseTryStatement()
{ {
@ -3379,9 +3536,11 @@ struct Parser
} }
/** /**
* Parses an Type * Parses a Type
* *
* $(GRAMMAR ) * $(GRAMMAR $(RULEDEF type):
* $(RULE typeConstructors)? $(RULE type2)
* ;)
*/ */
Type parseType() Type parseType()
{ {
@ -3391,9 +3550,12 @@ struct Parser
} }
/** /**
* Parses an Type2 * Parses a Type2
* *
* $(GRAMMAR ) * $(GRAMMAR $(RULEDEF type2):
* $(RULE type3) $(RULE typeSuffix)?
* | $(RULE type2) $(RULE typeSuffix)
* ;)
*/ */
Type2 parseType2() Type2 parseType2()
{ {
@ -3403,9 +3565,14 @@ struct Parser
} }
/** /**
* Parses an Type3 * Parses a Type3
* *
* $(GRAMMAR ) * $(GRAMMAR $(RULEDEF type3):
* $(RULE basicType)
* | $(RULE symbol)
* | $(RULE typeofExpression) ($(LITERAL '.') $(RULE identifierOrTemplateChain))?
* | $(RULE typeConstructor) $(LITERAL '$(LPAREN)') $(RULE type) $(LITERAL '$(RPAREN)')
* ;)
*/ */
Type3 parseType3() Type3 parseType3()
{ {
@ -3415,9 +3582,14 @@ struct Parser
} }
/** /**
* Parses an TypeConstructor * Parses a TypeConstructor
* *
* $(GRAMMAR ) * $(GRAMMAR $(RULEDEF typeConstructor):
* $(LITERAL 'const')
* | $(LITERAL 'immutable')
* | $(LITERAL 'inout')
* | $(LITERAL 'shared')
* ;)
*/ */
TypeConstructor parseTypeConstructor() TypeConstructor parseTypeConstructor()
{ {
@ -3427,9 +3599,11 @@ struct Parser
} }
/** /**
* Parses an TypeConstructors * Parses TypeConstructors
* *
* $(GRAMMAR ) * $(GRAMMAR $(RULEDEF typeConstructors):
* $(RULE typeConstructor)+
* ;)
*/ */
TypeConstructors parseTypeConstructors() TypeConstructors parseTypeConstructors()
{ {
@ -3439,9 +3613,25 @@ struct Parser
} }
/** /**
* Parses an TypeSpecialization * Parses a TypeSpecialization
* *
* $(GRAMMAR ) * $(GRAMMAR $(RULEDEF typeSpecialization):
* $(RULE type)
* | $(LITERAL 'struct')
* | $(LITERAL 'union')
* | $(LITERAL 'class')
* | $(LITERAL 'interface')
* | $(LITERAL 'enum')
* | $(LITERAL 'function')
* | $(LITERAL 'delegate')
* | $(LITERAL 'super')
* | $(LITERAL 'const')
* | $(LITERAL 'immutable')
* | $(LITERAL 'inout')
* | $(LITERAL 'shared')
* | $(LITERAL 'return')
* | $(RULE '___parameters')
* ;)
*/ */
TypeSpecialization parseTypeSpecialization() TypeSpecialization parseTypeSpecialization()
{ {
@ -3451,9 +3641,13 @@ struct Parser
} }
/** /**
* Parses an TypeSuffix * Parses a TypeSuffix
* *
* $(GRAMMAR ) * $(GRAMMAR $(RULEDEF typeSuffix):
* $(LITERAL '*')
* | $(LITERAL '[') ($(RULE type) | $(RULE assignExpression))? $(LITERAL ']')
* | ($(LITERAL 'delegate') | $(LITERAL 'function')) $(RULE parameters) $(RULE memberFunctionAttribute)*
* ;)
*/ */
TypeSuffix parseTypeSuffix() TypeSuffix parseTypeSuffix()
{ {
@ -3463,9 +3657,12 @@ struct Parser
} }
/** /**
* Parses an TypeidExpression * Parses a TypeidExpression
* *
* $(GRAMMAR ) * $(GRAMMAR $(RULEDEF typeidExpression):
* $(LITERAL 'typeid') $(LITERAL '$(LPAREN)')($(RULE type) | $(RULE expression)) $(LITERAL '$(RPAREN)')
* ;)
*/ */
TypeidExpression parseTypeidExpression() TypeidExpression parseTypeidExpression()
{ {
@ -3475,9 +3672,11 @@ struct Parser
} }
/** /**
* Parses an TypeofExpression * Parses a TypeofExpression
* *
* $(GRAMMAR ) * $(GRAMMAR $(RULEDEF typeofExpression):
* $(LITERAL 'typeof') $(LITERAL '$(LPAREN)')($(RULE expression) | $(LITERAL 'return')) $(LITERAL '$(RPAREN)')
* ;)
*/ */
TypeofExpression parseTypeofExpression() TypeofExpression parseTypeofExpression()
{ {
@ -3525,7 +3724,9 @@ struct Parser
/** /**
* Parses an UnionDeclaration * Parses an UnionDeclaration
* *
* $(GRAMMAR ) * $(GRAMMAR $(RULEDEF unionDeclaration):
* '$(RULE union)' $(LITERAL Identifier) (($(RULE templateParameters) $(RULE constraint)? $(RULE structBody))? | ($(RULE structBody) | $(LITERAL ';')))
* ;)
*/ */
UnionDeclaration parseUnionDeclaration() UnionDeclaration parseUnionDeclaration()
{ {
@ -3552,7 +3753,10 @@ struct Parser
/** /**
* Parses a VariableDeclaration * Parses a VariableDeclaration
* *
* $(GRAMMAR ) * $(GRAMMAR $(RULEDEF variableDeclaration):
* $(RULE storageClass)? $(RULE type) $(RULE declarator) ($(LITERAL ',') $(RULE declarator))* $(LITERAL ';')
* | $(RULE autoDeclaration)
* ;)
*/ */
VariableDeclaration parseVariableDeclaration() VariableDeclaration parseVariableDeclaration()
{ {
@ -3648,7 +3852,9 @@ struct Parser
/** /**
* Parses an XorExpression * Parses an XorExpression
* *
* $(GRAMMAR ) * $(GRAMMAR $(RULEDEF xorExpression):
* $(RULE andExpression) ($(LITERAL '^') $(RULE andExpression))?
* ;)
*/ */
XorExpression parseXorExpression() XorExpression parseXorExpression()
{ {