summaryrefslogtreecommitdiff
path: root/deps/v8/src/torque/TorqueParser.h
diff options
context:
space:
mode:
Diffstat (limited to 'deps/v8/src/torque/TorqueParser.h')
-rw-r--r--deps/v8/src/torque/TorqueParser.h375
1 files changed, 254 insertions, 121 deletions
diff --git a/deps/v8/src/torque/TorqueParser.h b/deps/v8/src/torque/TorqueParser.h
index 1604b1b780..bca847835f 100644
--- a/deps/v8/src/torque/TorqueParser.h
+++ b/deps/v8/src/torque/TorqueParser.h
@@ -39,63 +39,61 @@ class TorqueParser : public antlr4::Parser {
RUNTIME = 24,
MODULE = 25,
JAVASCRIPT = 26,
- IMPLICIT = 27,
- DEFERRED = 28,
- IF = 29,
- CAST_KEYWORD = 30,
- CONVERT_KEYWORD = 31,
- FOR = 32,
- WHILE = 33,
- RETURN = 34,
- CONSTEXPR = 35,
- CONTINUE = 36,
- BREAK = 37,
- GOTO = 38,
- OTHERWISE = 39,
- TRY = 40,
- CATCH = 41,
- LABEL = 42,
- LABELS = 43,
- TAIL = 44,
- ISNT = 45,
- IS = 46,
- LET = 47,
- EXTERN = 48,
- ASSERT = 49,
- UNREACHABLE_TOKEN = 50,
- DEBUG_TOKEN = 51,
- ASSIGNMENT = 52,
- ASSIGNMENT_OPERATOR = 53,
- EQUAL = 54,
- PLUS = 55,
- MINUS = 56,
- MULTIPLY = 57,
- DIVIDE = 58,
- MODULO = 59,
- BIT_OR = 60,
- BIT_AND = 61,
- BIT_NOT = 62,
- MAX = 63,
- MIN = 64,
- NOT_EQUAL = 65,
- LESS_THAN = 66,
- LESS_THAN_EQUAL = 67,
- GREATER_THAN = 68,
- GREATER_THAN_EQUAL = 69,
- SHIFT_LEFT = 70,
- SHIFT_RIGHT = 71,
- SHIFT_RIGHT_ARITHMETIC = 72,
- VARARGS = 73,
- EQUALITY_OPERATOR = 74,
- INCREMENT = 75,
- DECREMENT = 76,
- NOT = 77,
- STRING_LITERAL = 78,
- IDENTIFIER = 79,
- WS = 80,
- BLOCK_COMMENT = 81,
- LINE_COMMENT = 82,
- DECIMAL_LITERAL = 83
+ DEFERRED = 27,
+ IF = 28,
+ FOR = 29,
+ WHILE = 30,
+ RETURN = 31,
+ CONSTEXPR = 32,
+ CONTINUE = 33,
+ BREAK = 34,
+ GOTO = 35,
+ OTHERWISE = 36,
+ TRY = 37,
+ LABEL = 38,
+ LABELS = 39,
+ TAIL = 40,
+ ISNT = 41,
+ IS = 42,
+ LET = 43,
+ CONST = 44,
+ EXTERN = 45,
+ ASSERT_TOKEN = 46,
+ CHECK_TOKEN = 47,
+ UNREACHABLE_TOKEN = 48,
+ DEBUG_TOKEN = 49,
+ ASSIGNMENT = 50,
+ ASSIGNMENT_OPERATOR = 51,
+ EQUAL = 52,
+ PLUS = 53,
+ MINUS = 54,
+ MULTIPLY = 55,
+ DIVIDE = 56,
+ MODULO = 57,
+ BIT_OR = 58,
+ BIT_AND = 59,
+ BIT_NOT = 60,
+ MAX = 61,
+ MIN = 62,
+ NOT_EQUAL = 63,
+ LESS_THAN = 64,
+ LESS_THAN_EQUAL = 65,
+ GREATER_THAN = 66,
+ GREATER_THAN_EQUAL = 67,
+ SHIFT_LEFT = 68,
+ SHIFT_RIGHT = 69,
+ SHIFT_RIGHT_ARITHMETIC = 70,
+ VARARGS = 71,
+ EQUALITY_OPERATOR = 72,
+ INCREMENT = 73,
+ DECREMENT = 74,
+ NOT = 75,
+ STRING_LITERAL = 76,
+ IDENTIFIER = 77,
+ WS = 78,
+ BLOCK_COMMENT = 79,
+ LINE_COMMENT = 80,
+ DECIMAL_LITERAL = 81
};
enum {
@@ -126,48 +124,55 @@ class TorqueParser : public antlr4::Parser {
RuleIncrementDecrement = 24,
RuleAssignment = 25,
RuleAssignmentExpression = 26,
- RulePrimaryExpression = 27,
- RuleForInitialization = 28,
- RuleForLoop = 29,
- RuleRangeSpecifier = 30,
- RuleForOfRange = 31,
- RuleForOfLoop = 32,
- RuleArgument = 33,
- RuleArgumentList = 34,
- RuleHelperCall = 35,
- RuleLabelReference = 36,
- RuleVariableDeclaration = 37,
- RuleVariableDeclarationWithInitialization = 38,
- RuleHelperCallStatement = 39,
- RuleExpressionStatement = 40,
- RuleIfStatement = 41,
- RuleWhileLoop = 42,
- RuleReturnStatement = 43,
- RuleBreakStatement = 44,
- RuleContinueStatement = 45,
- RuleGotoStatement = 46,
- RuleHandlerWithStatement = 47,
- RuleTryCatch = 48,
- RuleDiagnosticStatement = 49,
- RuleStatement = 50,
- RuleStatementList = 51,
- RuleStatementScope = 52,
- RuleStatementBlock = 53,
- RuleHelperBody = 54,
- RuleExtendsDeclaration = 55,
- RuleGeneratesDeclaration = 56,
- RuleConstexprDeclaration = 57,
- RuleTypeDeclaration = 58,
- RuleExternalBuiltin = 59,
- RuleExternalMacro = 60,
- RuleExternalRuntime = 61,
- RuleBuiltinDeclaration = 62,
- RuleGenericSpecialization = 63,
- RuleMacroDeclaration = 64,
- RuleConstDeclaration = 65,
- RuleDeclaration = 66,
- RuleModuleDeclaration = 67,
- RuleFile = 68
+ RuleStructExpression = 27,
+ RuleFunctionPointerExpression = 28,
+ RulePrimaryExpression = 29,
+ RuleForInitialization = 30,
+ RuleForLoop = 31,
+ RuleRangeSpecifier = 32,
+ RuleForOfRange = 33,
+ RuleForOfLoop = 34,
+ RuleArgument = 35,
+ RuleArgumentList = 36,
+ RuleHelperCall = 37,
+ RuleLabelReference = 38,
+ RuleVariableDeclaration = 39,
+ RuleVariableDeclarationWithInitialization = 40,
+ RuleHelperCallStatement = 41,
+ RuleExpressionStatement = 42,
+ RuleIfStatement = 43,
+ RuleWhileLoop = 44,
+ RuleReturnStatement = 45,
+ RuleBreakStatement = 46,
+ RuleContinueStatement = 47,
+ RuleGotoStatement = 48,
+ RuleHandlerWithStatement = 49,
+ RuleTryLabelStatement = 50,
+ RuleDiagnosticStatement = 51,
+ RuleStatement = 52,
+ RuleStatementList = 53,
+ RuleStatementScope = 54,
+ RuleStatementBlock = 55,
+ RuleHelperBody = 56,
+ RuleFieldDeclaration = 57,
+ RuleFieldListDeclaration = 58,
+ RuleExtendsDeclaration = 59,
+ RuleGeneratesDeclaration = 60,
+ RuleConstexprDeclaration = 61,
+ RuleTypeDeclaration = 62,
+ RuleTypeAliasDeclaration = 63,
+ RuleExternalBuiltin = 64,
+ RuleExternalMacro = 65,
+ RuleExternalRuntime = 66,
+ RuleBuiltinDeclaration = 67,
+ RuleGenericSpecialization = 68,
+ RuleMacroDeclaration = 69,
+ RuleExternConstDeclaration = 70,
+ RuleConstDeclaration = 71,
+ RuleStructDeclaration = 72,
+ RuleDeclaration = 73,
+ RuleModuleDeclaration = 74,
+ RuleFile = 75
};
explicit TorqueParser(antlr4::TokenStream* input);
@@ -208,6 +213,8 @@ class TorqueParser : public antlr4::Parser {
class IncrementDecrementContext;
class AssignmentContext;
class AssignmentExpressionContext;
+ class StructExpressionContext;
+ class FunctionPointerExpressionContext;
class PrimaryExpressionContext;
class ForInitializationContext;
class ForLoopContext;
@@ -229,24 +236,29 @@ class TorqueParser : public antlr4::Parser {
class ContinueStatementContext;
class GotoStatementContext;
class HandlerWithStatementContext;
- class TryCatchContext;
+ class TryLabelStatementContext;
class DiagnosticStatementContext;
class StatementContext;
class StatementListContext;
class StatementScopeContext;
class StatementBlockContext;
class HelperBodyContext;
+ class FieldDeclarationContext;
+ class FieldListDeclarationContext;
class ExtendsDeclarationContext;
class GeneratesDeclarationContext;
class ConstexprDeclarationContext;
class TypeDeclarationContext;
+ class TypeAliasDeclarationContext;
class ExternalBuiltinContext;
class ExternalMacroContext;
class ExternalRuntimeContext;
class BuiltinDeclarationContext;
class GenericSpecializationContext;
class MacroDeclarationContext;
+ class ExternConstDeclarationContext;
class ConstDeclarationContext;
+ class StructDeclarationContext;
class DeclarationContext;
class ModuleDeclarationContext;
class FileContext;
@@ -259,7 +271,9 @@ class TorqueParser : public antlr4::Parser {
antlr4::tree::TerminalNode* CONSTEXPR();
antlr4::tree::TerminalNode* BUILTIN();
TypeListContext* typeList();
- TypeContext* type();
+ std::vector<TypeContext*> type();
+ TypeContext* type(size_t i);
+ antlr4::tree::TerminalNode* BIT_OR();
void enterRule(antlr4::tree::ParseTreeListener* listener) override;
void exitRule(antlr4::tree::ParseTreeListener* listener) override;
@@ -268,7 +282,7 @@ class TorqueParser : public antlr4::Parser {
};
TypeContext* type();
-
+ TypeContext* type(int precedence);
class TypeListContext : public antlr4::ParserRuleContext {
public:
TypeListContext(antlr4::ParserRuleContext* parent, size_t invokingState);
@@ -655,9 +669,9 @@ class TorqueParser : public antlr4::Parser {
size_t invokingState);
size_t getRuleIndex() const override;
antlr4::tree::TerminalNode* IDENTIFIER();
- GenericSpecializationTypeListContext* genericSpecializationTypeList();
- LocationExpressionContext* locationExpression();
+ PrimaryExpressionContext* primaryExpression();
ExpressionContext* expression();
+ LocationExpressionContext* locationExpression();
void enterRule(antlr4::tree::ParseTreeListener* listener) override;
void exitRule(antlr4::tree::ParseTreeListener* listener) override;
@@ -708,7 +722,7 @@ class TorqueParser : public antlr4::Parser {
AssignmentExpressionContext(antlr4::ParserRuleContext* parent,
size_t invokingState);
size_t getRuleIndex() const override;
- PrimaryExpressionContext* primaryExpression();
+ FunctionPointerExpressionContext* functionPointerExpression();
AssignmentContext* assignment();
void enterRule(antlr4::tree::ParseTreeListener* listener) override;
@@ -719,20 +733,50 @@ class TorqueParser : public antlr4::Parser {
AssignmentExpressionContext* assignmentExpression();
+ class StructExpressionContext : public antlr4::ParserRuleContext {
+ public:
+ StructExpressionContext(antlr4::ParserRuleContext* parent,
+ size_t invokingState);
+ size_t getRuleIndex() const override;
+ antlr4::tree::TerminalNode* IDENTIFIER();
+ std::vector<ExpressionContext*> expression();
+ ExpressionContext* expression(size_t i);
+
+ void enterRule(antlr4::tree::ParseTreeListener* listener) override;
+ void exitRule(antlr4::tree::ParseTreeListener* listener) override;
+
+ antlrcpp::Any accept(antlr4::tree::ParseTreeVisitor* visitor) override;
+ };
+
+ StructExpressionContext* structExpression();
+
+ class FunctionPointerExpressionContext : public antlr4::ParserRuleContext {
+ public:
+ FunctionPointerExpressionContext(antlr4::ParserRuleContext* parent,
+ size_t invokingState);
+ size_t getRuleIndex() const override;
+ PrimaryExpressionContext* primaryExpression();
+ antlr4::tree::TerminalNode* IDENTIFIER();
+ GenericSpecializationTypeListContext* genericSpecializationTypeList();
+
+ void enterRule(antlr4::tree::ParseTreeListener* listener) override;
+ void exitRule(antlr4::tree::ParseTreeListener* listener) override;
+
+ antlrcpp::Any accept(antlr4::tree::ParseTreeVisitor* visitor) override;
+ };
+
+ FunctionPointerExpressionContext* functionPointerExpression();
+
class PrimaryExpressionContext : public antlr4::ParserRuleContext {
public:
PrimaryExpressionContext(antlr4::ParserRuleContext* parent,
size_t invokingState);
size_t getRuleIndex() const override;
HelperCallContext* helperCall();
+ StructExpressionContext* structExpression();
antlr4::tree::TerminalNode* DECIMAL_LITERAL();
antlr4::tree::TerminalNode* STRING_LITERAL();
- antlr4::tree::TerminalNode* CAST_KEYWORD();
- TypeContext* type();
ExpressionContext* expression();
- antlr4::tree::TerminalNode* OTHERWISE();
- antlr4::tree::TerminalNode* IDENTIFIER();
- antlr4::tree::TerminalNode* CONVERT_KEYWORD();
void enterRule(antlr4::tree::ParseTreeListener* listener) override;
void exitRule(antlr4::tree::ParseTreeListener* listener) override;
@@ -895,9 +939,10 @@ class TorqueParser : public antlr4::Parser {
VariableDeclarationContext(antlr4::ParserRuleContext* parent,
size_t invokingState);
size_t getRuleIndex() const override;
- antlr4::tree::TerminalNode* LET();
antlr4::tree::TerminalNode* IDENTIFIER();
TypeContext* type();
+ antlr4::tree::TerminalNode* LET();
+ antlr4::tree::TerminalNode* CONST();
void enterRule(antlr4::tree::ParseTreeListener* listener) override;
void exitRule(antlr4::tree::ParseTreeListener* listener) override;
@@ -1059,11 +1104,9 @@ class TorqueParser : public antlr4::Parser {
HandlerWithStatementContext(antlr4::ParserRuleContext* parent,
size_t invokingState);
size_t getRuleIndex() const override;
- StatementBlockContext* statementBlock();
- antlr4::tree::TerminalNode* CATCH();
- antlr4::tree::TerminalNode* IDENTIFIER();
antlr4::tree::TerminalNode* LABEL();
LabelDeclarationContext* labelDeclaration();
+ StatementBlockContext* statementBlock();
void enterRule(antlr4::tree::ParseTreeListener* listener) override;
void exitRule(antlr4::tree::ParseTreeListener* listener) override;
@@ -1073,9 +1116,10 @@ class TorqueParser : public antlr4::Parser {
HandlerWithStatementContext* handlerWithStatement();
- class TryCatchContext : public antlr4::ParserRuleContext {
+ class TryLabelStatementContext : public antlr4::ParserRuleContext {
public:
- TryCatchContext(antlr4::ParserRuleContext* parent, size_t invokingState);
+ TryLabelStatementContext(antlr4::ParserRuleContext* parent,
+ size_t invokingState);
size_t getRuleIndex() const override;
antlr4::tree::TerminalNode* TRY();
StatementBlockContext* statementBlock();
@@ -1088,15 +1132,16 @@ class TorqueParser : public antlr4::Parser {
antlrcpp::Any accept(antlr4::tree::ParseTreeVisitor* visitor) override;
};
- TryCatchContext* tryCatch();
+ TryLabelStatementContext* tryLabelStatement();
class DiagnosticStatementContext : public antlr4::ParserRuleContext {
public:
DiagnosticStatementContext(antlr4::ParserRuleContext* parent,
size_t invokingState);
size_t getRuleIndex() const override;
- antlr4::tree::TerminalNode* ASSERT();
ExpressionContext* expression();
+ antlr4::tree::TerminalNode* ASSERT_TOKEN();
+ antlr4::tree::TerminalNode* CHECK_TOKEN();
antlr4::tree::TerminalNode* UNREACHABLE_TOKEN();
antlr4::tree::TerminalNode* DEBUG_TOKEN();
@@ -1125,7 +1170,7 @@ class TorqueParser : public antlr4::Parser {
WhileLoopContext* whileLoop();
ForOfLoopContext* forOfLoop();
ForLoopContext* forLoop();
- TryCatchContext* tryCatch();
+ TryLabelStatementContext* tryLabelStatement();
void enterRule(antlr4::tree::ParseTreeListener* listener) override;
void exitRule(antlr4::tree::ParseTreeListener* listener) override;
@@ -1197,6 +1242,38 @@ class TorqueParser : public antlr4::Parser {
HelperBodyContext* helperBody();
+ class FieldDeclarationContext : public antlr4::ParserRuleContext {
+ public:
+ FieldDeclarationContext(antlr4::ParserRuleContext* parent,
+ size_t invokingState);
+ size_t getRuleIndex() const override;
+ antlr4::tree::TerminalNode* IDENTIFIER();
+ TypeContext* type();
+
+ void enterRule(antlr4::tree::ParseTreeListener* listener) override;
+ void exitRule(antlr4::tree::ParseTreeListener* listener) override;
+
+ antlrcpp::Any accept(antlr4::tree::ParseTreeVisitor* visitor) override;
+ };
+
+ FieldDeclarationContext* fieldDeclaration();
+
+ class FieldListDeclarationContext : public antlr4::ParserRuleContext {
+ public:
+ FieldListDeclarationContext(antlr4::ParserRuleContext* parent,
+ size_t invokingState);
+ size_t getRuleIndex() const override;
+ std::vector<FieldDeclarationContext*> fieldDeclaration();
+ FieldDeclarationContext* fieldDeclaration(size_t i);
+
+ void enterRule(antlr4::tree::ParseTreeListener* listener) override;
+ void exitRule(antlr4::tree::ParseTreeListener* listener) override;
+
+ antlrcpp::Any accept(antlr4::tree::ParseTreeVisitor* visitor) override;
+ };
+
+ FieldListDeclarationContext* fieldListDeclaration();
+
class ExtendsDeclarationContext : public antlr4::ParserRuleContext {
public:
ExtendsDeclarationContext(antlr4::ParserRuleContext* parent,
@@ -1260,6 +1337,22 @@ class TorqueParser : public antlr4::Parser {
TypeDeclarationContext* typeDeclaration();
+ class TypeAliasDeclarationContext : public antlr4::ParserRuleContext {
+ public:
+ TypeAliasDeclarationContext(antlr4::ParserRuleContext* parent,
+ size_t invokingState);
+ size_t getRuleIndex() const override;
+ antlr4::tree::TerminalNode* IDENTIFIER();
+ TypeContext* type();
+
+ void enterRule(antlr4::tree::ParseTreeListener* listener) override;
+ void exitRule(antlr4::tree::ParseTreeListener* listener) override;
+
+ antlrcpp::Any accept(antlr4::tree::ParseTreeVisitor* visitor) override;
+ };
+
+ TypeAliasDeclarationContext* typeAliasDeclaration();
+
class ExternalBuiltinContext : public antlr4::ParserRuleContext {
public:
ExternalBuiltinContext(antlr4::ParserRuleContext* parent,
@@ -1294,7 +1387,6 @@ class TorqueParser : public antlr4::Parser {
OptionalTypeContext* optionalType();
OptionalLabelListContext* optionalLabelList();
antlr4::tree::TerminalNode* STRING_LITERAL();
- antlr4::tree::TerminalNode* IMPLICIT();
void enterRule(antlr4::tree::ParseTreeListener* listener) override;
void exitRule(antlr4::tree::ParseTreeListener* listener) override;
@@ -1376,6 +1468,7 @@ class TorqueParser : public antlr4::Parser {
OptionalTypeContext* optionalType();
OptionalLabelListContext* optionalLabelList();
HelperBodyContext* helperBody();
+ antlr4::tree::TerminalNode* STRING_LITERAL();
void enterRule(antlr4::tree::ParseTreeListener* listener) override;
void exitRule(antlr4::tree::ParseTreeListener* listener) override;
@@ -1385,14 +1478,34 @@ class TorqueParser : public antlr4::Parser {
MacroDeclarationContext* macroDeclaration();
+ class ExternConstDeclarationContext : public antlr4::ParserRuleContext {
+ public:
+ ExternConstDeclarationContext(antlr4::ParserRuleContext* parent,
+ size_t invokingState);
+ size_t getRuleIndex() const override;
+ antlr4::tree::TerminalNode* CONST();
+ antlr4::tree::TerminalNode* IDENTIFIER();
+ TypeContext* type();
+ GeneratesDeclarationContext* generatesDeclaration();
+
+ void enterRule(antlr4::tree::ParseTreeListener* listener) override;
+ void exitRule(antlr4::tree::ParseTreeListener* listener) override;
+
+ antlrcpp::Any accept(antlr4::tree::ParseTreeVisitor* visitor) override;
+ };
+
+ ExternConstDeclarationContext* externConstDeclaration();
+
class ConstDeclarationContext : public antlr4::ParserRuleContext {
public:
ConstDeclarationContext(antlr4::ParserRuleContext* parent,
size_t invokingState);
size_t getRuleIndex() const override;
+ antlr4::tree::TerminalNode* CONST();
antlr4::tree::TerminalNode* IDENTIFIER();
TypeContext* type();
- antlr4::tree::TerminalNode* STRING_LITERAL();
+ antlr4::tree::TerminalNode* ASSIGNMENT();
+ ExpressionContext* expression();
void enterRule(antlr4::tree::ParseTreeListener* listener) override;
void exitRule(antlr4::tree::ParseTreeListener* listener) override;
@@ -1402,17 +1515,36 @@ class TorqueParser : public antlr4::Parser {
ConstDeclarationContext* constDeclaration();
+ class StructDeclarationContext : public antlr4::ParserRuleContext {
+ public:
+ StructDeclarationContext(antlr4::ParserRuleContext* parent,
+ size_t invokingState);
+ size_t getRuleIndex() const override;
+ antlr4::tree::TerminalNode* IDENTIFIER();
+ FieldListDeclarationContext* fieldListDeclaration();
+
+ void enterRule(antlr4::tree::ParseTreeListener* listener) override;
+ void exitRule(antlr4::tree::ParseTreeListener* listener) override;
+
+ antlrcpp::Any accept(antlr4::tree::ParseTreeVisitor* visitor) override;
+ };
+
+ StructDeclarationContext* structDeclaration();
+
class DeclarationContext : public antlr4::ParserRuleContext {
public:
DeclarationContext(antlr4::ParserRuleContext* parent, size_t invokingState);
size_t getRuleIndex() const override;
+ StructDeclarationContext* structDeclaration();
TypeDeclarationContext* typeDeclaration();
+ TypeAliasDeclarationContext* typeAliasDeclaration();
BuiltinDeclarationContext* builtinDeclaration();
GenericSpecializationContext* genericSpecialization();
MacroDeclarationContext* macroDeclaration();
ExternalMacroContext* externalMacro();
ExternalBuiltinContext* externalBuiltin();
ExternalRuntimeContext* externalRuntime();
+ ExternConstDeclarationContext* externConstDeclaration();
ConstDeclarationContext* constDeclaration();
void enterRule(antlr4::tree::ParseTreeListener* listener) override;
@@ -1460,6 +1592,7 @@ class TorqueParser : public antlr4::Parser {
bool sempred(antlr4::RuleContext* _localctx, size_t ruleIndex,
size_t predicateIndex) override;
+ bool typeSempred(TypeContext* _localctx, size_t predicateIndex);
bool conditionalExpressionSempred(ConditionalExpressionContext* _localctx,
size_t predicateIndex);
bool logicalORExpressionSempred(LogicalORExpressionContext* _localctx,