dparse.parser
struct ParserConfig
class Parser
Types 4
aliasMessageFunction = void function(string fileName , size_t line, size_t column, string message, bool isError)
Prototype for a custom parser message function or delegate. Parameters passed are a file name, a line, a column, a message and a bool that indicates if the message is a warning (false) or a if it's an error (true).
aliasMessageDelegate = void delegate(string, size_t, size_t, string, bool)
ditto
structParserConfig
Parser configuration struct
Fields
const(Token)[] tokensThe tokens parsed by dparse.lexer.string fileNameThe name of the file being parsedRollbackAllocator * allocatorA pointer to a rollback allocator.MessageFunction messageFunctionAn optional function used to handle warnings and errors.MessageDelegate messageDelegateAn optional delegate used to handle warnings and errors. Set either this one or messageFunction, not both.uint * errorCountAn optional pointer to a variable receiving the error count.uint * warningCountAn optional pointer to a variable receiving the warning count.classParser
D Parser.
It is sometimes useful to sub-class Parser to skip over things that are not interesting. For example, DCD skips over function bodies when caching symbols from imported files.
Fields
private TemplateArgumentParseuint errorCountCurrent error countuint warningCountCurrent warning countstring fileNameName used when reporting warnings and errorsconst(Token)[] tokensTokens to parseRollbackAllocator * allocatorAllocator used for creating AST nodesMessageFunction messageFunctionFunction or delegate that is called when a warning or error is encountered. The parameters are the file name, line number, column number, and the error or warning message.MessageDelegate messageDelegateDitto MAX_ERRORSstring[] REGISTER_NAMESTypedStackBuffer!uint suppressMessagessize_t indexint _traceDepthstring commentbool[typeof(Token.index)] cachedAAChecksbool[typeof(Token.index)] cachedTypeChecksMethods
ExpressionNode parseAddExpression()Parses an AddExpression.AliasDeclaration parseAliasDeclaration()Parses an AliasDeclaration.AliasAssign parseAliasAssign()Parses an AliasAssign.AliasInitializer parseAliasInitializer()Parses an AliasInitializer.AliasThisDeclaration parseAliasThisDeclaration()Parses an AliasThisDeclaration.AlignAttribute parseAlignAttribute()Parses an AlignAttribute.ExpressionNode parseAndAndExpression()Parses an AndAndExpression.ExpressionNode parseAndExpression()Parses an AndExpression.NamedArgument parseNamedArgument()Parses a NamedArgument.NamedArgumentList parseNamedArgumentList()Parses a NamedArgumentList.ArgumentList parseArgumentList()Parses an ArgumentList.Arguments parseArguments()Parses Arguments.ArrayInitializer parseArrayInitializer()Parses an ArrayInitializer.ArrayLiteral parseArrayLiteral()Parses an ArrayLiteral.ArrayMemberInitialization parseArrayMemberInitialization()Parses an ArrayMemberInitialization.ExpressionNode parseAsmAddExp()Parses an AsmAddExpExpressionNode parseAsmAndExp()Parses an AsmAndExpAsmBrExp parseAsmBrExp()Parses an AsmBrExpExpressionNode parseAsmEqualExp()Parses an AsmEqualExpExpressionNode parseAsmExp()Parses an AsmExpAsmInstruction parseAsmInstruction(ref bool maybeGccASm)Parses an AsmInstructionExpressionNode parseAsmLogAndExp()Parses an AsmLogAndExpExpressionNode parseAsmLogOrExp()Parses an AsmLogOrExpExpressionNode parseAsmMulExp()Parses an AsmMulExpExpressionNode parseAsmOrExp()Parses an AsmOrExpAsmPrimaryExp parseAsmPrimaryExp()Parses an AsmPrimaryExpExpressionNode parseAsmRelExp()Parses an AsmRelExpExpressionNode parseAsmShiftExp()Parses an AsmShiftExpAsmStatement parseAsmStatement()Parses an AsmStatementAsmTypePrefix parseAsmTypePrefix()Parses an AsmTypePrefixAsmUnaExp parseAsmUnaExp()Parses an AsmUnaExpExpressionNode parseAsmXorExp()Parses an AsmXorExpAssertArguments parseAssertArguments()Parses an AssertArgumentsAssertExpression parseAssertExpression()Parses an AssertExpressionExpressionNode parseAssignExpression()Parses an AssignExpressionAssocArrayLiteral parseAssocArrayLiteral()Parses an AssocArrayLiteralAtAttribute parseAtAttribute()Parses an AtAttributeAttribute parseAttribute()Parses an AttributeAttributeDeclaration parseAttributeDeclaration(Attribute attribute = null)Parses an AttributeDeclarationAutoDeclaration parseAutoDeclaration()Parses an AutoDeclarationAutoDeclarationPart parseAutoDeclarationPart()Parses an AutoDeclarationPartBlockStatement parseBlockStatement()Parses a BlockStatementBreakStatement parseBreakStatement()Parses a BreakStatementBaseClass parseBaseClass()Parses a BaseClassBaseClassList parseBaseClassList()Parses a BaseClassListIdType parseBuiltinType()Parses an BuiltinTypeCaseRangeStatement parseCaseRangeStatement(ExpressionNode low, size_t startIndex = - 1)Parses a CaseRangeStatementCaseStatement parseCaseStatement(ArgumentList argumentList = null, size_t startIndex = - 1)Parses an CaseStatementCastExpression parseCastExpression()Parses a CastExpressionCastQualifier parseCastQualifier()Parses a CastQualifierCatch parseCatch()Parses a CatchCatches parseCatches()Parses a CatchesClassDeclaration parseClassDeclaration()Parses a ClassDeclarationExpressionNode parseCmpExpression()Parses a CmpExpressionCompileCondition parseCompileCondition()Parses a CompileConditionConditionalDeclaration parseConditionalDeclaration(bool strict, bool inTemplateDeclaration = false)Parses a ConditionalDeclarationConditionalStatement parseConditionalStatement()Parses a ConditionalStatementConstraint parseConstraint()Parses a ConstraintConstructor parseConstructor()Parses a ConstructorContinueStatement parseContinueStatement()Parses an ContinueStatementDebugCondition parseDebugCondition()Parses a DebugConditionDebugSpecification parseDebugSpecification()Parses a DebugSpecificationDeclaration parseDeclaration(bool strict = false, bool mustBeDeclaration = false, bool inTemplateDeclaration = false)Parses a DeclarationDeclarationsAndStatements parseDeclarationsAndStatements(bool includeCases = true)Parses DeclarationsAndStatementsDeclarationOrStatement parseDeclarationOrStatement()Parses a DeclarationOrStatementDeclarator parseDeclarator()Parses a DeclaratorDeclaratorIdentifierList parseDeclaratorIdentifierList()Parses a DeclaratorIdentifierListBitfieldWidth parseBitfieldWidth()Parses a BitfieldWidthDefaultStatement parseDefaultStatement()Parses a DefaultStatementDeleteExpression parseDeleteExpression()Parses a DeleteExpressionDeprecated parseDeprecated()Parses a Deprecated attributeDestructor parseDestructor()Parses a DestructorDoStatement parseDoStatement()Parses a DoStatementEnumBody parseEnumBody()Parses an EnumBodyAnonymousEnumMember parseAnonymousEnumMember(bool typeAllowed)anonymousEnumMember: type identifier '=' assignExpression | identifier '=' assignExpression | identifier ;AnonymousEnumDeclaration parseAnonymousEnumDeclaration()anonymousEnumDeclaration: 'enum' (':' type? '{' anonymousEnumMember+ '}' ;)EnumDeclaration parseEnumDeclaration()Parses an EnumDeclarationEnumMemberAttribute parseEnumMemberAttribute()Parses an EnumMemberAttributeEnumMember parseEnumMember()Parses an EnumMemberEponymousTemplateDeclaration parseEponymousTemplateDeclaration()Parses an EponymousTemplateDeclarationEqualExpression parseEqualExpression(ExpressionNode shift = null)Parses an EqualExpressionExpression parseExpression()Parses an ExpressionExpressionStatement parseExpressionStatement(Expression expression = null)Parses an ExpressionStatementFinalSwitchStatement parseFinalSwitchStatement()Parses a FinalSwitchStatementFinally parseFinally()Parses a FinallyForStatement parseForStatement()Parses a ForStatementStaticForeachDeclaration parseStaticForeachDeclaration(bool inTemplateDeclaration = false)Parses a StaticForeachDeclarationStaticForeachStatement parseStaticForeachStatement()Parses a StaticForeachStatementForeachStatement parseForeachStatement()Parses a ForeachStatementForeach!declOnly parseForeach(bool declOnly = false)(bool inTemplateDeclaration = false)ForeachType parseForeachType()Parses a ForeachTypeForeachTypeList parseForeachTypeList()Parses a ForeachTypeListFunctionAttribute parseFunctionAttribute(bool validate = true)Parses a FunctionAttributeFunctionBody parseFunctionBody()Parses a FunctionBody. Note that any change of this function must also be applied in dsymbol SimpleParser, which can be found https://github.com/dlang-community/dsymbol/blob/master/src/dsymbol/conv...FunctionCallExpression parseFunctionCallExpression(UnaryExpression unary = null)Parses a FunctionCallExpressionFunctionContract parseFunctionContract(bool allowStatement = true)Parses a FunctionContractFunctionDeclaration parseFunctionDeclaration(Type type = null, bool isAuto = false,
Attribute[] attributes = null)Parses a FunctionDeclarationFunctionLiteralExpression parseFunctionLiteralExpression()Parses a FunctionLiteralExpressionGccAsmInstruction parseGccAsmInstruction()Parses an AsmInstruction using GCC AssemblerGccAsmOperandList parseGccAsmOperandList()Parses a GccAsmOperandListGccAsmOperand parseGccAsmOperand()Parses a GccAsmOperandGotoStatement parseGotoStatement()Parses a GotoStatementIdentifierChain parseIdentifierChain()Parses an IdentifierChainTypeIdentifierPart parseTypeIdentifierPart()Parses a TypeIdentifierPart.IdentifierOrTemplateChain parseIdentifierOrTemplateChain()Parses an IdentifierOrTemplateChainIdentifierOrTemplateInstance parseIdentifierOrTemplateInstance()Parses an IdentifierOrTemplateInstanceExpressionNode parseIdentityExpression(ExpressionNode shift = null)Parses an IdentityExpressionIfStatement parseIfStatement()Parses an IfStatementIfCondition parseIfCondition()Parses an IfConditionImportBind parseImportBind()Parses an ImportBindImportBindings parseImportBindings(SingleImport singleImport)Parses ImportBindingsImportDeclaration parseImportDeclaration()Parses an ImportDeclarationImportExpression parseImportExpression()Parses an ImportExpressionIndex parseIndex()Parses an IndexIndexExpression parseIndexExpression(UnaryExpression unaryExpression = null)Parses an IndexExpressionInContractExpression parseInContractExpression()Parses an InContractExpressionExpressionNode parseInExpression(ExpressionNode shift = null)Parses an InExpressionInOutContractExpression parseInOutContractExpression()Parses an InOutContractExpressionInOutStatement parseInOutStatement()Parses an InOutStatementInStatement parseInStatement()Parses an InStatementInitializer parseInitializer()Parses an InitializerInterfaceDeclaration parseInterfaceDeclaration()Parses an InterfaceDeclarationInterpolatedString parseInterpolatedString()Parses an InterpolatedStringInterpolatedStringPart parseInterpolatedStringPart()Parses an InterpolatedStringPartInvariant parseInvariant()Parses an InvariantIsExpression parseIsExpression()Parses an IsExpressionKeyValuePair parseKeyValuePair()Parses a KeyValuePairKeyValuePairs parseKeyValuePairs()Parses KeyValuePairsLabeledStatement parseLabeledStatement()Parses a LabeledStatementLastCatch parseLastCatch()Parses a LastCatchLinkageAttribute parseLinkageAttribute()Parses a LinkageAttributeMemberFunctionAttribute parseMemberFunctionAttribute()Parses a MemberFunctionAttributeMissingFunctionBody parseMissingFunctionBody()Parses a MissingFunctionBodyMixinDeclaration parseMixinDeclaration()Parses a MixinDeclarationMixinExpression parseMixinExpression()Parses a MixinExpressionMixinTemplateDeclaration parseMixinTemplateDeclaration()Parses a MixinTemplateDeclarationMixinTemplateName parseMixinTemplateName()Parses a MixinTemplateNameModule parseModule()Parses a ModuleModuleDeclaration parseModuleDeclaration()Parses a ModuleDeclarationExpressionNode parseMulExpression()Parses a MulExpression.NamespaceList parseNamespaceList()Parses a NamespaceList.NewAnonClassExpression parseNewAnonClassExpression()Parses a NewAnonClassExpressionNewExpression parseNewExpression()Parses a NewExpressionNonVoidInitializer parseNonVoidInitializer()Parses a NonVoidInitializerOperands parseOperands()Parses OperandsExpressionNode parseOrExpression()Parses an OrExpressionExpressionNode parseOrOrExpression()Parses an OrOrExpressionOutContractExpression parseOutContractExpression()Parses an OutContractExpressionOutStatement parseOutStatement()Parses an OutStatementParameter parseParameter()Parses a ParameterParameterAttribute parseParameterAttribute(bool validate = false)Parses a ParameterAttributeParameters parseParameters()Parses ParametersParameterAttribute[] parseVariadicArgumentsAttributes()Parses attributes of C-style variadic parameters.ParameterAttribute parseVariadicArgumentsAttribute()Parses an attribute of C-style variadic parameters.Postblit parsePostblit()Parses a PostblitExpressionNode parsePowExpression()Parses a PowExpressionPragmaDeclaration parsePragmaDeclaration()Parses a PragmaDeclarationPragmaExpression parsePragmaExpression()Parses a PragmaExpressionPragmaStatement parsePragmaStatement()Parses a PragmaStatementPrimaryExpression parsePrimaryExpression()Parses a PrimaryExpressionRegister parseRegister()Parses a RegisterExpressionNode parseRelExpression(ExpressionNode shift)Parses a RelExpressionReturnStatement parseReturnStatement()Parses a ReturnStatementScopeGuardStatement parseScopeGuardStatement()Parses a ScopeGuardStatementSharedStaticConstructor parseSharedStaticConstructor()Parses a SharedStaticConstructorSharedStaticDestructor parseSharedStaticDestructor()Parses a SharedStaticDestructorExpressionNode parseShiftExpression()Parses a ShiftExpressionSingleImport parseSingleImport()Parses a SingleImportShortenedFunctionBody parseShortenedFunctionBody()Parses a ShortenedFunctionBodySpecifiedFunctionBody parseSpecifiedFunctionBody()Parses a SpecifiedFunctionBodyStatement parseStatement()Parses a StatementStatementNoCaseNoDefault parseStatementNoCaseNoDefault()Parses a StatementNoCaseNoDefaultStaticAssertDeclaration parseStaticAssertDeclaration()Parses a StaticAssertDeclarationStaticAssertStatement parseStaticAssertStatement()Parses a StaticAssertStatementStaticConstructor parseStaticConstructor()Parses a StaticConstructorStaticDestructor parseStaticDestructor()Parses a StaticDestructorStaticIfCondition parseStaticIfCondition()Parses an StaticIfConditionStorageClass parseStorageClass()Parses a StorageClassStructBody parseStructBody()Parses a StructBodyStructDeclaration parseStructDeclaration()Parses a StructDeclarationStructInitializer parseStructInitializer()Parses an StructInitializerStructMemberInitializer parseStructMemberInitializer()Parses a StructMemberInitializerStructMemberInitializers parseStructMemberInitializers()Parses StructMemberInitializersSwitchStatement parseSwitchStatement()Parses a SwitchStatementSymbol parseSymbol()Parses a SymbolSynchronizedStatement parseSynchronizedStatement()Parses a SynchronizedStatementTemplateAliasParameter parseTemplateAliasParameter()Parses a TemplateAliasParameterNamedTemplateArgument parseNamedTemplateArgument()Parses a NamedTemplateArgumentTemplateArgument parseTemplateArgument()Parses a TemplateArgumentTemplateArgumentList parseTemplateArgumentList()Parses a TemplateArgumentListNamedTemplateArgumentList parseNamedTemplateArgumentList()Parses a NamedTemplateArgumentListTemplateArguments parseTemplateArguments()Parses TemplateArgumentsTemplateDeclaration parseTemplateDeclaration()Parses a TemplateDeclarationTemplateInstance parseTemplateInstance()Parses a TemplateInstanceTemplateMixinExpression parseTemplateMixinExpression()Parses a TemplateMixinExpressionTemplateParameter parseTemplateParameter()Parses a TemplateParameterTemplateParameterList parseTemplateParameterList()Parses a TemplateParameterListTemplateParameters parseTemplateParameters()Parses TemplateParametersTemplateSingleArgument parseTemplateSingleArgument()Parses a TemplateSingleArgumentTemplateThisParameter parseTemplateThisParameter()Parses a TemplateThisParameterTemplateTupleParameter parseTemplateTupleParameter()Parses an TemplateTupleParameterTemplateTypeParameter parseTemplateTypeParameter()Parses a TemplateTypeParameterTemplateValueParameter parseTemplateValueParameter()Parses a TemplateValueParameterTemplateValueParameterDefault parseTemplateValueParameterDefault()Parses a TemplateValueParameterDefaultExpressionNode parseTernaryExpression()Parses a TernaryExpressionThrowExpression parseThrowExpression()Parses a ThrowExpressionTraitsExpression parseTraitsExpression()Parses an TraitsExpressionTryStatement parseTryStatement()Parses a TryStatementType2 parseType2()Parses a Type2IdType parseTypeConstructor(bool validate = true)Parses a TypeConstructorIdType[] parseTypeConstructors()Parses TypeConstructorsTypeSpecialization parseTypeSpecialization()Parses a TypeSpecializationTypeSuffix parseTypeSuffix()Parses a TypeSuffixTypeidExpression parseTypeidExpression()Parses a TypeidExpressionTypeofExpression parseTypeofExpression()Parses a TypeofExpressionUnaryExpression parseUnaryExpression()Parses a UnaryExpressionUnionDeclaration parseUnionDeclaration()Parses an UnionDeclarationUnittest parseUnittest()Parses a UnittestVariableDeclaration parseVariableDeclaration(Type type = null, bool isAuto = false)Parses a VariableDeclarationVector parseVector()Parses a VectorVersionCondition parseVersionCondition()Parses a VersionConditionVersionSpecification parseVersionSpecification()Parses a VersionSpecificationWhileStatement parseWhileStatement()Parses a WhileStatementWithStatement parseWithStatement()Parses a WithStatementExpressionNode parseXorExpression()Parses an XorExpressionvoid ownArray(T)(ref T[] arr, ref StackBuffer sb)bool isCastQualifier() constbool isAssociativeArrayLiteral()bool hasMagicDelimiter(alias L, alias T)()bool isDeclaration()bool isType()Only use this in template parameter parsingbool isStorageClass()bool isAttribute()void moveStartIndexBefore(ref size_t startIndex, const BaseNode child, string func = __FUNCTION__)bool currentIsMemberFunctionAttribute() constExpressionNode parseLeftAssocBinaryExpression(alias ExpressionType,
alias ExpressionPartType, Operators ...)(ExpressionNode part = null)ListType parseCommaSeparatedRule(alias ListType, alias ItemType,
bool setLineAndColumn = false)(bool allowTrailingComma = false)void warn(lazy string message)void error(string message, bool shouldAdvance = true, bool includeCurrentToken = false)void skip(alias O, alias C)()const(Token) * peek() const pure nothrow @safe @nogcReturns: a pointer to the token after the current one, or `null` if there is none.const(Token) * peekPastParens() const pure nothrow @safe @nogcReturns: a pointer to the token after a set of balanced parenthesis, or `null` in the case that the current token is not an opening parenthesis or an end of file is reached before a closing parenth...bool peekIs(IdType t) const pure nothrow @safe @nogcReturns: `true` if there is a next token and that token has the type `t`.bool peekNIs(IdType t, size_t offset) const pure nothrow @safe @nogcReturns: `true` if the token `offset` tokens ahead exists and is of type `t`.bool peekAre(IdType[] types...) const pure nothrow @safe @nogcReturns: `true` if there are at least `types.length` tokens following the current one and they have types matching the corresponding elements of `types`.bool peekIsOneOf(IdType[] types...) const pure nothrow @safe @nogcReturns: `true` if there is a next token and its type is one of the given `types`.bool peekNIsOneOf(size_t offset, IdType[] types...) const pure nothrow @safe @nogcReturns: `true` if there is a token `offset` tokens after the current one and its type is one of the given `types`.const(Token) * expect(IdType type)Returns: a pointer to a token of the specified type if it was the next token, otherwise calls the error function and returns null.bool currentIs(IdType type) const pure nothrow @safe @nogcReturns: true if the current token has the given typebool currentIsOneOf(IdType[] types...) const pure nothrow @safe @nogcReturns: true if the current token is one of the given typesbool startsWith(IdType[] types...) const pure nothrow @safe @nogcReturns: `true` if there are at least `types.length` tokens starting at the current token, and the tokens have types corresponding to the elements of `types`.void goToBookmark(Bookmark bookmark, bool popStack = true) pure nothrow @safe @nogcGoes back to a parser bookmark and optionally invalidates it. Params: bookmark = bookmark to revert to popStack = if set to true, the bookmark is cleared, otherwise it must be manually cleared usin...void attachComment(T)(T node, string comment)T attachCommentFromSemicolon(T)(T node, size_t startIndex)N parseStaticCtorDtorCommon(N)(N node, size_t startIndex)N parseInterfaceOrClass(N)(N node, size_t startIndex)Nested Templates
DecTypesimpleParse(NodeType, parts ...)simpleParseItems(items ...)simpleParseItem(alias item)traceEnterAndExit(string fun)parseNodeQ(string VarName, string NodeName)nullCheck(string exp)tokenCheck(string Tok)tokenCheck(string Exp, string Tok)Functions 3
fn
Module parseModule()(auto ref ParserConfig parserConfig)Params: parserConfig = a parser configuration. Returns: The parsed module.fn
Module parseModule(F)(const(Token)[] tokens, string fileName, RollbackAllocator * allocator,
F messageFuncOrDg = null, uint * errorCount = null, uint * warningCount = null)Params: tokens = The tokens parsed by dparse.lexer. fileName = The name of the file being parsed. allocator = A pointer to a rollback allocator. messageFuncOrDg = Either a function or a delegate th...