summaryrefslogtreecommitdiffstats
path: root/tools/slang-cpp-extractor/parser.h
diff options
context:
space:
mode:
Diffstat (limited to 'tools/slang-cpp-extractor/parser.h')
-rw-r--r--tools/slang-cpp-extractor/parser.h17
1 files changed, 16 insertions, 1 deletions
diff --git a/tools/slang-cpp-extractor/parser.h b/tools/slang-cpp-extractor/parser.h
index 5ed862d65..4815821c5 100644
--- a/tools/slang-cpp-extractor/parser.h
+++ b/tools/slang-cpp-extractor/parser.h
@@ -33,6 +33,11 @@ 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);
@@ -48,14 +53,17 @@ protected:
SlangResult _parseTypeSet();
SlangResult _maybeParseNode(Node::Kind kind);
- SlangResult _maybeParseField();
+ SlangResult _maybeParseContained(Node** outNode);
SlangResult _parseTypeDef();
SlangResult _parseEnum();
+ SlangResult _parseMarker();
SlangResult _maybeParseType(List<Token>& outToks);
SlangResult _maybeParseType(UnownedStringSlice& outType);
+ SlangResult _parseExpression(List<Token>& outExprTokens);
+
SlangResult _maybeParseType(Index& ioTemplateDepth);
SlangResult _maybeParseTemplateArgs(Index& ioTemplateDepth);
SlangResult _maybeParseTemplateArg(Index& ioTemplateDepth);
@@ -66,9 +74,14 @@ protected:
/// Concatenate all tokens from start to the current position
UnownedStringSlice _concatTokens(TokenReader::ParsingCursor start);
+ /// Consume what looks like a template definition
+ SlangResult _consumeTemplate();
+
void _consumeTypeModifiers();
SlangResult _consumeToSync();
+ /// Consumes balanced parens. Will return an error if not matched. Assumes starts on opening (
+ SlangResult _consumeBalancedParens();
NodeTypeBitType m_nodeTypeEnabled;
@@ -82,6 +95,8 @@ protected:
NodeTree* m_nodeTree; ///< Shared state between parses. Nodes will be added to this
+ bool m_requireMarker = true;
+
const Options* m_options;
};