diff options
Diffstat (limited to 'tools/slang-cpp-extractor/parser.h')
| -rw-r--r-- | tools/slang-cpp-extractor/parser.h | 27 |
1 files changed, 15 insertions, 12 deletions
diff --git a/tools/slang-cpp-extractor/parser.h b/tools/slang-cpp-extractor/parser.h index 4815821c5..cf0147e8b 100644 --- a/tools/slang-cpp-extractor/parser.h +++ b/tools/slang-cpp-extractor/parser.h @@ -34,10 +34,6 @@ public: void setKindEnabled(Node::Kind kind, bool isEnabled = true); bool isTypeEnabled(Node::Kind kind) { return (m_nodeTypeEnabled & (NodeTypeBitType(1) << int(kind))) != 0; } - /// If set classes require a 'marker' to be reflected - void setRequireMarker(bool requireMarker) { m_requireMarker = requireMarker; } - bool getRequireMarker() const { return m_requireMarker; } - void setKindsEnabled(const Node::Kind* kinds, Index kindsCount, bool isEnabled = true); Parser(NodeTree* nodeTree, DiagnosticSink* sink); @@ -58,26 +54,33 @@ protected: SlangResult _parseTypeDef(); SlangResult _parseEnum(); SlangResult _parseMarker(); + SlangResult _parseSpecialMacro(); - SlangResult _maybeParseType(List<Token>& outToks); - SlangResult _maybeParseType(UnownedStringSlice& outType); + SlangResult _maybeParseType(List<Token>& outToks, Token& outName); + SlangResult _maybeParseType(UnownedStringSlice& outType, Token& outName); + SlangResult _maybeParseType(Index& ioTemplateDepth, TokenReader::ParsingCursor& outCursor); SlangResult _parseExpression(List<Token>& outExprTokens); - - SlangResult _maybeParseType(Index& ioTemplateDepth); + SlangResult _maybeParseTemplateArgs(Index& ioTemplateDepth); SlangResult _maybeParseTemplateArg(Index& ioTemplateDepth); /// Parse balanced - if a sink is set will report to that sink SlangResult _parseBalanced(DiagnosticSink* sink); + bool _isCtor(); + /// Concatenate all tokens from start to the current position UnownedStringSlice _concatTokens(TokenReader::ParsingCursor start); + UnownedStringSlice _concatTokens(const Token* toks, Index toksCount); + + UnownedStringSlice _concatType(TokenReader::ParsingCursor start, TokenReader::ParsingCursor nameCursor); + + void _getTypeTokens(TokenReader::ParsingCursor start, TokenReader::ParsingCursor nameCursor, List<Token>& outToks); /// Consume what looks like a template definition SlangResult _consumeTemplate(); - - void _consumeTypeModifiers(); + SlangResult _maybeConsume(IdentifierStyle style); SlangResult _consumeToSync(); /// Consumes balanced parens. Will return an error if not matched. Assumes starts on opening ( @@ -88,6 +91,8 @@ protected: TokenList m_tokenList; TokenReader m_reader; + List<ScopeNode*> m_scopeStack; + ScopeNode* m_currentScope; ///< The current scope being processed SourceOrigin* m_sourceOrigin; ///< The source origin that all tokens are in @@ -95,8 +100,6 @@ protected: NodeTree* m_nodeTree; ///< Shared state between parses. Nodes will be added to this - bool m_requireMarker = true; - const Options* m_options; }; |
