diff options
author | Lorry Tar Creator <lorry-tar-importer@lorry> | 2016-04-10 09:28:39 +0000 |
---|---|---|
committer | Lorry Tar Creator <lorry-tar-importer@lorry> | 2016-04-10 09:28:39 +0000 |
commit | 32761a6cee1d0dee366b885b7b9c777e67885688 (patch) | |
tree | d6bec92bebfb216f4126356e55518842c2f476a1 /Source/JavaScriptCore/parser/SyntaxChecker.h | |
parent | a4e969f4965059196ca948db781e52f7cfebf19e (diff) | |
download | WebKitGtk-tarball-32761a6cee1d0dee366b885b7b9c777e67885688.tar.gz |
webkitgtk-2.4.11webkitgtk-2.4.11
Diffstat (limited to 'Source/JavaScriptCore/parser/SyntaxChecker.h')
-rw-r--r-- | Source/JavaScriptCore/parser/SyntaxChecker.h | 262 |
1 files changed, 77 insertions, 185 deletions
diff --git a/Source/JavaScriptCore/parser/SyntaxChecker.h b/Source/JavaScriptCore/parser/SyntaxChecker.h index eed7b8ce3..0328b1273 100644 --- a/Source/JavaScriptCore/parser/SyntaxChecker.h +++ b/Source/JavaScriptCore/parser/SyntaxChecker.h @@ -27,7 +27,6 @@ #define SyntaxChecker_h #include "Lexer.h" -#include "ParserFunctionInfo.h" #include "YarrSyntaxChecker.h" namespace JSC { @@ -69,25 +68,14 @@ public: { } + typedef SyntaxChecker FunctionBodyBuilder; enum { NoneExpr = 0, - ResolveEvalExpr, ResolveExpr, IntegerExpr, DoubleExpr, StringExpr, + ResolveEvalExpr, ResolveExpr, NumberExpr, StringExpr, ThisExpr, NullExpr, BoolExpr, RegExpExpr, ObjectLiteralExpr, - FunctionExpr, ClassExpr, SuperExpr, BracketExpr, DotExpr, CallExpr, + FunctionExpr, BracketExpr, DotExpr, CallExpr, NewExpr, PreExpr, PostExpr, UnaryExpr, BinaryExpr, - ConditionalExpr, AssignmentExpr, TypeofExpr, NewTargetExpr, - DeleteExpr, ArrayLiteralExpr, BindingDestructuring, RestParameter, - ArrayDestructuring, ObjectDestructuring, SourceElementsResult, - FunctionBodyResult, SpreadExpr, ArgumentsResult, - PropertyListResult, ArgumentsListResult, ElementsListResult, - StatementResult, FormalParameterListResult, ClauseResult, - ClauseListResult, CommaExpr, DestructuringAssignment, - TemplateStringResult, TemplateStringListResult, - TemplateExpressionListResult, TemplateExpr, - TaggedTemplateExpr, YieldExpr, - ModuleNameResult, - ImportSpecifierResult, ImportSpecifierListResult, - ExportSpecifierResult, ExportSpecifierListResult - }; + ConditionalExpr, AssignmentExpr, TypeofExpr, + DeleteExpr, ArrayLiteralExpr }; typedef int ExpressionType; typedef ExpressionType Expression; @@ -116,26 +104,16 @@ public: typedef int PropertyList; typedef int ElementList; typedef int ArgumentsList; - typedef int TemplateExpressionList; - typedef int TemplateString; - typedef int TemplateStringList; - typedef int TemplateLiteral; typedef int FormalParameterList; typedef int FunctionBody; - typedef int ClassExpression; - typedef int ModuleName; - typedef int ImportSpecifier; - typedef int ImportSpecifierList; - typedef int ExportSpecifier; - typedef int ExportSpecifierList; typedef int Statement; typedef int ClauseList; typedef int Clause; + typedef int ConstDeclList; typedef int BinaryOperand; - typedef int DestructuringPattern; - typedef DestructuringPattern ArrayPattern; - typedef DestructuringPattern ObjectPattern; - typedef DestructuringPattern RestPattern; + typedef int DeconstructionPattern; + typedef int ArrayPattern; + typedef int ObjectPattern; static const bool CreatesAST = false; static const bool NeedsFreeVariableInfo = false; @@ -143,10 +121,10 @@ public: static const unsigned DontBuildKeywords = LexexFlagsDontBuildKeywords; static const unsigned DontBuildStrings = LexerFlagsDontBuildStrings; - int createSourceElements() { return SourceElementsResult; } + int createSourceElements() { return 1; } ExpressionType makeFunctionCallNode(const JSTokenLocation&, int, int, int, int, int) { return CallExpr; } - ExpressionType createCommaExpr(const JSTokenLocation&, ExpressionType expr) { return expr; } - ExpressionType appendToCommaExpr(const JSTokenLocation&, ExpressionType& head, ExpressionType, ExpressionType next) { head = next; return next; } + void appendToComma(ExpressionType& base, ExpressionType right) { base = right; } + ExpressionType createCommaExpr(const JSTokenLocation&, ExpressionType, ExpressionType right) { return right; } ExpressionType makeAssignNode(const JSTokenLocation&, ExpressionType, Operator, ExpressionType, bool, bool, int, int, int) { return AssignmentExpr; } ExpressionType makePrefixNode(const JSTokenLocation&, ExpressionType, Operator, int, int, int) { return PreExpr; } ExpressionType makePostfixNode(const JSTokenLocation&, ExpressionType, Operator, int, int, int) { return PostExpr; } @@ -157,16 +135,13 @@ public: ExpressionType createLogicalNot(const JSTokenLocation&, ExpressionType) { return UnaryExpr; } ExpressionType createUnaryPlus(const JSTokenLocation&, ExpressionType) { return UnaryExpr; } ExpressionType createVoid(const JSTokenLocation&, ExpressionType) { return UnaryExpr; } - ExpressionType createThisExpr(const JSTokenLocation&, ThisTDZMode) { return ThisExpr; } - ExpressionType createSuperExpr(const JSTokenLocation&) { return SuperExpr; } - ExpressionType createNewTargetExpr(const JSTokenLocation&) { return NewTargetExpr; } - ExpressionType createResolve(const JSTokenLocation&, const Identifier&, int, int) { return ResolveExpr; } + ExpressionType thisExpr(const JSTokenLocation&) { return ThisExpr; } + ExpressionType createResolve(const JSTokenLocation&, const Identifier*, int) { return ResolveExpr; } ExpressionType createObjectLiteral(const JSTokenLocation&) { return ObjectLiteralExpr; } ExpressionType createObjectLiteral(const JSTokenLocation&, int) { return ObjectLiteralExpr; } ExpressionType createArray(const JSTokenLocation&, int) { return ArrayLiteralExpr; } ExpressionType createArray(const JSTokenLocation&, int, int) { return ArrayLiteralExpr; } - ExpressionType createDoubleExpr(const JSTokenLocation&, double) { return DoubleExpr; } - ExpressionType createIntegerExpr(const JSTokenLocation&, double) { return IntegerExpr; } + ExpressionType createNumberExpr(const JSTokenLocation&, double) { return NumberExpr; } ExpressionType createString(const JSTokenLocation&, const Identifier*) { return StringExpr; } ExpressionType createBoolean(const JSTokenLocation&, bool) { return BoolExpr; } ExpressionType createNull(const JSTokenLocation&) { return NullExpr; } @@ -176,117 +151,84 @@ public: ExpressionType createNewExpr(const JSTokenLocation&, ExpressionType, int, int, int, int) { return NewExpr; } ExpressionType createNewExpr(const JSTokenLocation&, ExpressionType, int, int) { return NewExpr; } ExpressionType createConditionalExpr(const JSTokenLocation&, ExpressionType, ExpressionType, ExpressionType) { return ConditionalExpr; } - ExpressionType createAssignResolve(const JSTokenLocation&, const Identifier&, ExpressionType, int, int, int, AssignmentContext) { return AssignmentExpr; } - ExpressionType createEmptyVarExpression(const JSTokenLocation&, const Identifier&) { return AssignmentExpr; } - ExpressionType createEmptyLetExpression(const JSTokenLocation&, const Identifier&) { return AssignmentExpr; } - ExpressionType createYield(const JSTokenLocation&) { return YieldExpr; } - ExpressionType createYield(const JSTokenLocation&, ExpressionType, bool, int, int, int) { return YieldExpr; } - ClassExpression createClassExpr(const JSTokenLocation&, const Identifier&, VariableEnvironment&, ExpressionType, ExpressionType, PropertyList, PropertyList) { return ClassExpr; } - ExpressionType createFunctionExpr(const JSTokenLocation&, const ParserFunctionInfo<SyntaxChecker>&) { return FunctionExpr; } - int createFunctionMetadata(const JSTokenLocation&, const JSTokenLocation&, int, int, bool, int, int, int, ConstructorKind, SuperBinding, unsigned, SourceParseMode, bool) { return FunctionBodyResult; } - ExpressionType createArrowFunctionExpr(const JSTokenLocation&, const ParserFunctionInfo<SyntaxChecker>&) { return FunctionExpr; } + ExpressionType createAssignResolve(const JSTokenLocation&, const Identifier&, ExpressionType, int, int, int) { return AssignmentExpr; } + ExpressionType createFunctionExpr(const JSTokenLocation&, const Identifier*, int, int, int, int, int, int, int) { return FunctionExpr; } + int createFunctionBody(const JSTokenLocation&, const JSTokenLocation&, int, int, bool) { return 1; } void setFunctionNameStart(int, int) { } - int createArguments() { return ArgumentsResult; } - int createArguments(int) { return ArgumentsResult; } - ExpressionType createSpreadExpression(const JSTokenLocation&, ExpressionType, int, int, int) { return SpreadExpr; } - TemplateString createTemplateString(const JSTokenLocation&, const Identifier&, const Identifier&) { return TemplateStringResult; } - TemplateStringList createTemplateStringList(TemplateString) { return TemplateStringListResult; } - TemplateStringList createTemplateStringList(TemplateStringList, TemplateString) { return TemplateStringListResult; } - TemplateExpressionList createTemplateExpressionList(Expression) { return TemplateExpressionListResult; } - TemplateExpressionList createTemplateExpressionList(TemplateExpressionList, Expression) { return TemplateExpressionListResult; } - TemplateLiteral createTemplateLiteral(const JSTokenLocation&, TemplateStringList) { return TemplateExpr; } - TemplateLiteral createTemplateLiteral(const JSTokenLocation&, TemplateStringList, TemplateExpressionList) { return TemplateExpr; } - ExpressionType createTaggedTemplate(const JSTokenLocation&, ExpressionType, TemplateLiteral, int, int, int) { return TaggedTemplateExpr; } - - int createArgumentsList(const JSTokenLocation&, int) { return ArgumentsListResult; } - int createArgumentsList(const JSTokenLocation&, int, int) { return ArgumentsListResult; } - Property createProperty(const Identifier* name, int, PropertyNode::Type type, PropertyNode::PutType, bool complete, SuperBinding = SuperBinding::NotNeeded) + int createArguments() { return 1; } + int createArguments(int) { return 1; } + ExpressionType createSpreadExpression(const JSTokenLocation&, ExpressionType, int, int, int) { return 1; } + int createArgumentsList(const JSTokenLocation&, int) { return 1; } + int createArgumentsList(const JSTokenLocation&, int, int) { return 1; } + Property createProperty(const Identifier* name, int, PropertyNode::Type type, bool complete) { if (!complete) return Property(type); ASSERT(name); return Property(name, type); } - Property createProperty(VM* vm, ParserArena& parserArena, double name, int, PropertyNode::Type type, PropertyNode::PutType, bool complete) + Property createProperty(VM* vm, double name, int, PropertyNode::Type type, bool complete) { if (!complete) return Property(type); - return Property(&parserArena.identifierArena().makeNumericIdentifier(vm, name), type); + return Property(&vm->parserArena->identifierArena().makeNumericIdentifier(vm, name), type); } - Property createProperty(int, int, PropertyNode::Type type, PropertyNode::PutType, bool, SuperBinding = SuperBinding::NotNeeded) + Property createProperty(VM*, ExpressionNode*, int, PropertyNode::Type type, bool) { return Property(type); } - int createPropertyList(const JSTokenLocation&, Property) { return PropertyListResult; } - int createPropertyList(const JSTokenLocation&, Property, int) { return PropertyListResult; } - int createElementList(int, int) { return ElementsListResult; } - int createElementList(int, int, int) { return ElementsListResult; } - int createElementList(int) { return ElementsListResult; } - int createFormalParameterList() { return FormalParameterListResult; } - void appendParameter(int, DestructuringPattern, int) { } - int createClause(int, int) { return ClauseResult; } - int createClauseList(int) { return ClauseListResult; } - int createClauseList(int, int) { return ClauseListResult; } - int createFuncDeclStatement(const JSTokenLocation&, const ParserFunctionInfo<SyntaxChecker>&) { return StatementResult; } - int createClassDeclStatement(const JSTokenLocation&, ClassExpression, - const JSTextPosition&, const JSTextPosition&, int, int) { return StatementResult; } - int createBlockStatement(const JSTokenLocation&, int, int, int, VariableEnvironment&) { return StatementResult; } - int createExprStatement(const JSTokenLocation&, int, int, int) { return StatementResult; } - int createIfStatement(const JSTokenLocation&, int, int, int, int) { return StatementResult; } - int createIfStatement(const JSTokenLocation&, int, int, int, int, int) { return StatementResult; } - int createForLoop(const JSTokenLocation&, int, int, int, int, int, int, VariableEnvironment&) { return StatementResult; } - int createForInLoop(const JSTokenLocation&, int, int, int, int, int, int, int, int, VariableEnvironment&) { return StatementResult; } - int createForOfLoop(const JSTokenLocation&, int, int, int, int, int, int, int, int, VariableEnvironment&) { return StatementResult; } - int createEmptyStatement(const JSTokenLocation&) { return StatementResult; } - int createDeclarationStatement(const JSTokenLocation&, int, int, int) { return StatementResult; } - int createReturnStatement(const JSTokenLocation&, int, int, int) { return StatementResult; } - int createBreakStatement(const JSTokenLocation&, int, int) { return StatementResult; } - int createBreakStatement(const JSTokenLocation&, const Identifier*, int, int) { return StatementResult; } - int createContinueStatement(const JSTokenLocation&, int, int) { return StatementResult; } - int createContinueStatement(const JSTokenLocation&, const Identifier*, int, int) { return StatementResult; } - int createTryStatement(const JSTokenLocation&, int, int, int, int, int, int, VariableEnvironment&) { return StatementResult; } - int createSwitchStatement(const JSTokenLocation&, int, int, int, int, int, int, VariableEnvironment&) { return StatementResult; } - int createWhileStatement(const JSTokenLocation&, int, int, int, int) { return StatementResult; } - int createWithStatement(const JSTokenLocation&, int, int, int, int, int, int) { return StatementResult; } - int createDoWhileStatement(const JSTokenLocation&, int, int, int, int) { return StatementResult; } - int createLabelStatement(const JSTokenLocation&, const Identifier*, int, int, int) { return StatementResult; } - int createThrowStatement(const JSTokenLocation&, int, int, int) { return StatementResult; } - int createDebugger(const JSTokenLocation&, int, int) { return StatementResult; } - int createConstStatement(const JSTokenLocation&, int, int, int) { return StatementResult; } - int createModuleName(const JSTokenLocation&, const Identifier&) { return ModuleNameResult; } - ImportSpecifier createImportSpecifier(const JSTokenLocation&, const Identifier&, const Identifier&) { return ImportSpecifierResult; } - ImportSpecifierList createImportSpecifierList() { return ImportSpecifierListResult; } - void appendImportSpecifier(ImportSpecifierList, ImportSpecifier) { } - int createImportDeclaration(const JSTokenLocation&, ImportSpecifierList, ModuleName) { return StatementResult; } - int createExportAllDeclaration(const JSTokenLocation&, ModuleName) { return StatementResult; } - int createExportDefaultDeclaration(const JSTokenLocation&, int, const Identifier&) { return StatementResult; } - int createExportLocalDeclaration(const JSTokenLocation&, int) { return StatementResult; } - int createExportNamedDeclaration(const JSTokenLocation&, ExportSpecifierList, ModuleName) { return StatementResult; } - ExportSpecifier createExportSpecifier(const JSTokenLocation&, const Identifier&, const Identifier&) { return ExportSpecifierResult; } - ExportSpecifierList createExportSpecifierList() { return ExportSpecifierListResult; } - void appendExportSpecifier(ExportSpecifierList, ExportSpecifier) { } - - int appendConstDecl(const JSTokenLocation&, int, const Identifier*, int) { return StatementResult; } - Property createGetterOrSetterProperty(const JSTokenLocation&, PropertyNode::Type type, bool strict, const Identifier* name, const ParserFunctionInfo<SyntaxChecker>&, SuperBinding) + int createPropertyList(const JSTokenLocation&, Property) { return 1; } + int createPropertyList(const JSTokenLocation&, Property, int) { return 1; } + int createElementList(int, int) { return 1; } + int createElementList(int, int, int) { return 1; } + int createFormalParameterList(DeconstructionPattern) { return 1; } + int createFormalParameterList(int, DeconstructionPattern) { return 1; } + int createClause(int, int) { return 1; } + int createClauseList(int) { return 1; } + int createClauseList(int, int) { return 1; } + void setUsesArguments(int) { } + int createFuncDeclStatement(const JSTokenLocation&, const Identifier*, int, int, int, int, int, int, int) { return 1; } + int createBlockStatement(const JSTokenLocation&, int, int, int) { return 1; } + int createExprStatement(const JSTokenLocation&, int, int, int) { return 1; } + int createIfStatement(const JSTokenLocation&, int, int, int, int) { return 1; } + int createIfStatement(const JSTokenLocation&, int, int, int, int, int) { return 1; } + int createForLoop(const JSTokenLocation&, int, int, int, int, int, int) { return 1; } + int createForInLoop(const JSTokenLocation&, int, int, int, int, int, int, int, int) { return 1; } + int createForOfLoop(const JSTokenLocation&, int, int, int, int, int, int, int, int) { return 1; } + int createEmptyStatement(const JSTokenLocation&) { return 1; } + int createVarStatement(const JSTokenLocation&, int, int, int) { return 1; } + int createReturnStatement(const JSTokenLocation&, int, int, int) { return 1; } + int createBreakStatement(const JSTokenLocation&, int, int) { return 1; } + int createBreakStatement(const JSTokenLocation&, const Identifier*, int, int) { return 1; } + int createContinueStatement(const JSTokenLocation&, int, int) { return 1; } + int createContinueStatement(const JSTokenLocation&, const Identifier*, int, int) { return 1; } + int createTryStatement(const JSTokenLocation&, int, const Identifier*, int, int, int, int) { return 1; } + int createSwitchStatement(const JSTokenLocation&, int, int, int, int, int, int) { return 1; } + int createWhileStatement(const JSTokenLocation&, int, int, int, int) { return 1; } + int createWithStatement(const JSTokenLocation&, int, int, int, int, int, int) { return 1; } + int createDoWhileStatement(const JSTokenLocation&, int, int, int, int) { return 1; } + int createLabelStatement(const JSTokenLocation&, const Identifier*, int, int, int) { return 1; } + int createThrowStatement(const JSTokenLocation&, int, int, int) { return 1; } + int createDebugger(const JSTokenLocation&, int, int) { return 1; } + int createConstStatement(const JSTokenLocation&, int, int, int) { return 1; } + int appendConstDecl(const JSTokenLocation&, int, const Identifier*, int) { return 1; } + Property createGetterOrSetterProperty(const JSTokenLocation&, PropertyNode::Type type, bool strict, const Identifier* name, int, int, int, int, int, int, int) { ASSERT(name); if (!strict) return Property(type); return Property(name, type); } - Property createGetterOrSetterProperty(const JSTokenLocation&, PropertyNode::Type type, bool, int, const ParserFunctionInfo<SyntaxChecker>&, SuperBinding) - { - return Property(type); - } - Property createGetterOrSetterProperty(VM* vm, ParserArena& parserArena, const JSTokenLocation&, PropertyNode::Type type, bool strict, double name, const ParserFunctionInfo<SyntaxChecker>&, SuperBinding) + Property createGetterOrSetterProperty(VM* vm, const JSTokenLocation&, PropertyNode::Type type, bool strict, double name, int, int, int, int, int, int, int) { if (!strict) return Property(type); - return Property(&parserArena.identifierArena().makeNumericIdentifier(vm, name), type); + return Property(&vm->parserArena->identifierArena().makeNumericIdentifier(vm, name), type); } void appendStatement(int, int) { } - int combineCommaNodes(const JSTokenLocation&, int, int) { return CommaExpr; } + void addVar(const Identifier*, bool) { } + int combineCommaNodes(const JSTokenLocation&, int, int) { return 1; } int evalCount() const { return 0; } void appendBinaryExpressionInfo(int& operandStackDepth, int expr, int, int, int, bool) { @@ -312,86 +254,36 @@ public: void unaryTokenStackRemoveLast(int& stackDepth) { stackDepth = 0; } void assignmentStackAppend(int, int, int, int, int, Operator) { } - int createAssignment(const JSTokenLocation&, int, int, int, int, int) { RELEASE_ASSERT_NOT_REACHED(); return AssignmentExpr; } - const Identifier* getName(const Property& property) const { return property.name; } + int createAssignment(const JSTokenLocation&, int, int, int, int, int) { RELEASE_ASSERT_NOT_REACHED(); return 1; } + const Identifier* getName(const Property& property) const { ASSERT(property.name); return property.name; } PropertyNode::Type getType(const Property& property) const { return property.type; } bool isResolve(ExpressionType expr) const { return expr == ResolveExpr || expr == ResolveEvalExpr; } - ExpressionType createDestructuringAssignment(const JSTokenLocation&, int, ExpressionType) + ExpressionType createDeconstructingAssignment(const JSTokenLocation&, int, ExpressionType) { - return DestructuringAssignment; + return 1; } ArrayPattern createArrayPattern(const JSTokenLocation&) { - return ArrayDestructuring; + return 1; } void appendArrayPatternSkipEntry(ArrayPattern, const JSTokenLocation&) { } - void appendArrayPatternEntry(ArrayPattern, const JSTokenLocation&, DestructuringPattern, int) - { - } - void appendArrayPatternRestEntry(ArrayPattern, const JSTokenLocation&, DestructuringPattern) - { - } - void finishArrayPattern(ArrayPattern, const JSTextPosition&, const JSTextPosition&, const JSTextPosition&) + void appendArrayPatternEntry(ArrayPattern, const JSTokenLocation&, DeconstructionPattern) { } ObjectPattern createObjectPattern(const JSTokenLocation&) { - return ObjectDestructuring; - } - void appendObjectPatternEntry(ArrayPattern, const JSTokenLocation&, bool, const Identifier&, DestructuringPattern, int) - { - } - void appendObjectPatternEntry(ArrayPattern, const JSTokenLocation&, Expression, DestructuringPattern, Expression) - { - } - - DestructuringPattern createBindingLocation(const JSTokenLocation&, const Identifier&, const JSTextPosition&, const JSTextPosition&, AssignmentContext) - { - return BindingDestructuring; + return 1; } - RestPattern createRestParameter(const Identifier&, size_t, const JSTextPosition&, const JSTextPosition&) - { - return RestParameter; - } - DestructuringPattern createAssignmentElement(const Expression&, const JSTextPosition&, const JSTextPosition&) + void appendObjectPatternEntry(ArrayPattern, const JSTokenLocation&, bool, const Identifier&, DeconstructionPattern) { - return BindingDestructuring; } - - bool isBindingNode(DestructuringPattern pattern) - { - return pattern == BindingDestructuring; - } - - bool isAssignmentLocation(ExpressionType type) + DeconstructionPattern createBindingLocation(const JSTokenLocation&, const Identifier&, const JSTextPosition&, const JSTextPosition&) { - return type == ResolveExpr || type == DotExpr || type == BracketExpr; + return 1; } - - bool isObjectLiteral(ExpressionType type) - { - return type == ObjectLiteralExpr; - } - - bool isArrayLiteral(ExpressionType type) - { - return type == ArrayLiteralExpr; - } - - bool isObjectOrArrayLiteral(ExpressionType type) - { - return isObjectLiteral(type) || isArrayLiteral(type); - } - - void setEndOffset(int, int) { } - int endOffset(int) { return 0; } - void setStartOffset(int, int) { } - - void propagateArgumentsUse() { } - private: int m_topBinaryExpr; int m_topUnaryToken; |