Home | History | Annotate | Download | only in parsing

Lines Matching refs:Traits

121 // Common base class shared between parser and pre-parser. Traits encapsulate
139 // The traits are expected to contain the following typedefs:
140 // struct Traits {
163 template <typename Traits>
164 class ParserBase : public Traits {
166 // Shorten type names defined by Traits.
167 typedef typename Traits::Type::Expression ExpressionT;
168 typedef typename Traits::Type::Identifier IdentifierT;
169 typedef typename Traits::Type::FormalParameter FormalParameterT;
170 typedef typename Traits::Type::FormalParameters FormalParametersT;
171 typedef typename Traits::Type::FunctionLiteral FunctionLiteralT;
172 typedef typename Traits::Type::Literal LiteralT;
173 typedef typename Traits::Type::ObjectLiteralProperty ObjectLiteralPropertyT;
174 typedef typename Traits::Type::StatementList StatementListT;
175 typedef typename Traits::Type::ExpressionClassifier ExpressionClassifier;
179 ParserRecorder* log, typename Traits::Type::Parser this_object)
180 : Traits(this_object),
338 typename Traits::Type::Factory* factory);
376 typename Traits::Type::GeneratorVariable* variable) {
381 typename Traits::Type::GeneratorVariable* generator_object_variable()
386 typename Traits::Type::Factory* factory() { return factory_; }
483 typename Traits::Type::Factory* factory_;
767 Traits::ReportMessageAt(function_name_loc,
773 Traits::ReportMessageAt(function_name_loc,
787 typename Traits::Type::Factory* factory() {
802 Traits::ReportMessageAt(source_location, message, arg, error_type);
808 Traits::ReportMessageAt(location, message, reinterpret_cast<const char*>(0),
824 Traits::ReportMessageAt(error.location, error.message, error.arg,
900 Traits::ReportMessageAt(scanner()->location(),
1013 typename Traits::Type::ExpressionList ParseArguments(
1016 typename Traits::Type::ExpressionList ParseArguments(
1081 if (!Traits::IsIdentifier(expression)) return false;
1083 Traits::IsEvalOrArguments(Traits::AsIdentifier(expression))) {
1097 if (Traits::IsIdentifier(expression) &&
1098 Traits::IsEval(Traits::AsIdentifier(expression))) {
1194 template <class Traits>
1195 ParserBase<Traits>::FunctionState::FunctionState(
1197 FunctionKind kind, typename Traits::Type::Factory* factory)
1227 template <class Traits>
1228 ParserBase<Traits>::FunctionState::~FunctionState() {
1233 template <class Traits>
1234 void ParserBase<Traits>::GetUnexpectedTokenMessage(
1290 template <class Traits>
1291 void ParserBase<Traits>::ReportUnexpectedToken(Token::Value token) {
1296 template <class Traits>
1297 void ParserBase<Traits>::ReportUnexpectedTokenAt(
1302 Traits::ReportMessageAt(source_location, message, arg);
1306 template <class Traits>
1307 typename ParserBase<Traits>::IdentifierT ParserBase<Traits>::ParseIdentifier(
1311 if (!*ok) return Traits::EmptyIdentifier();
1315 if (!*ok) return Traits::EmptyIdentifier();
1317 if (!*ok) return Traits::EmptyIdentifier();
1324 template <class Traits>
1325 typename ParserBase<Traits>::IdentifierT
1326 ParserBase<Traits>::ParseAndClassifyIdentifier(ExpressionClassifier* classifier,
1380 return Traits::EmptyIdentifier();
1392 return Traits::EmptyIdentifier();
1397 template <class Traits>
1398 typename ParserBase<Traits>::IdentifierT
1399 ParserBase<Traits>::ParseIdentifierOrStrictReservedWord(
1411 return Traits::EmptyIdentifier();
1419 template <class Traits>
1420 typename ParserBase<Traits>::IdentifierT
1421 ParserBase<Traits>::ParseIdentifierName(bool* ok) {
1431 return Traits::EmptyIdentifier();
1440 template <class Traits>
1441 typename ParserBase<Traits>::ExpressionT ParserBase<Traits>::ParseRegExpLiteral(
1448 return Traits::EmptyExpression();
1459 return Traits::EmptyExpression();
1480 template <class Traits>
1481 typename ParserBase<Traits>::ExpressionT
1482 ParserBase<Traits>::ParsePrimaryExpression(ExpressionClassifier* classifier,
1640 return this->ParseTemplateLiteral(Traits::NoTemplateTag(), beg_pos,
1653 return Traits::ParseDoExpression(ok);
1667 template <class Traits>
1668 typename ParserBase<Traits>::ExpressionT ParserBase<Traits>::ParseExpression(
1672 Traits::RewriteNonPattern(&classifier, CHECK_OK);
1676 template <class Traits>
1677 typename ParserBase<Traits>::ExpressionT ParserBase<Traits>::ParseExpression(
1738 template <class Traits>
1739 typename ParserBase<Traits>::ExpressionT ParserBase<Traits>::ParseArrayLiteral(
1745 typename Traits::Type::ExpressionList values =
1801 Traits::QueueNonPatternForRewriting(result, ok);
1814 template <class Traits>
1815 typename ParserBase<Traits>::ExpressionT ParserBase<Traits>::ParsePropertyName(
1852 Traits::RewriteNonPattern(&computed_name_classifier, CHECK_OK);
1874 template <class Traits>
1875 typename ParserBase<Traits>::ObjectLiteralPropertyT
1876 ParserBase<Traits>::ParsePropertyDefinition(
1969 Traits::RewriteNonPattern(&rhs_classifier,
1979 Traits::SetFunctionNameFromIdentifierRef(rhs, lhs);
2043 Traits::RewriteNonPattern(classifier, ok);
2064 typename Traits::Type::FunctionLiteral value = this->ParseFunctionLiteral(
2091 template <class Traits>
2092 typename ParserBase<Traits>::ExpressionT ParserBase<Traits>::ParseObjectLiteral(
2098 typename Traits::Type::PropertyList properties =
2134 Traits::SetFunctionNameFromPropertyName(property, name);
2147 template <class Traits>
2148 typename Traits::Type::ExpressionList ParserBase<Traits>::ParseArguments(
2155 typename Traits::Type::ExpressionList result =
2170 Traits::RewriteNonPattern(classifier,
2211 Traits::RewriteNonPattern(classifier,
2218 Traits::MaterializeUnspreadArgumentsLiterals(unspread_sequences_count);
2226 template <class Traits>
2227 typename ParserBase<Traits>::ExpressionT
2228 ParserBase<Traits>::ParseAssignmentExpression(bool accept_IN,
2244 ParserBase<Traits>::Checkpoint checkpoint(this);
2368 Traits::RewriteNonPattern(&rhs_classifier, CHECK_OK);
2399 Traits::SetFunctionNameFromIdentifierRef(right, expression);
2404 return Traits::RewriteAssignExponentiation(expression, right, pos);
2411 Traits::QueueDestructuringAssignmentForRewriting(result);
2417 template <class Traits>
2418 typename ParserBase<Traits>::ExpressionT
2419 ParserBase<Traits>::ParseYieldExpression(bool accept_IN,
2432 ExpressionT expression = Traits::EmptyExpression();
2452 Traits::RewriteNonPattern(classifier, CHECK_OK);
2458 return Traits::RewriteYieldStar(generator_object, expression, pos);
2461 expression = Traits::BuildIteratorResult(expression, false);
2464 typename Traits::Type::YieldExpression yield =
2469 template <class Traits>
2470 typename ParserBase<Traits>::ExpressionT
2471 ParserBase<Traits>::ParseTailCallExpression(ExpressionClassifier* classifier,
2490 return Traits::EmptyExpression();
2492 if (Traits::IsDirectEvalCall(expression)) {
2496 return Traits::EmptyExpression();
2501 return Traits::EmptyExpression();
2507 return Traits::EmptyExpression();
2516 return Traits::EmptyExpression();
2529 return Traits::EmptyExpression();
2538 template <class Traits>
2539 typename ParserBase<Traits>::ExpressionT
2540 ParserBase<Traits>::ParseConditionalExpression(bool accept_IN,
2553 Traits::RewriteNonPattern(classifier, CHECK_OK);
2561 Traits::RewriteNonPattern(classifier, CHECK_OK);
2565 Traits::RewriteNonPattern(classifier, CHECK_OK);
2571 template <class Traits>
2572 typename ParserBase<Traits>::ExpressionT
2573 ParserBase<Traits>::ParseBinaryExpression(int prec, bool accept_IN,
2582 Traits::RewriteNonPattern(classifier, CHECK_OK);
2595 Traits::RewriteNonPattern(classifier, CHECK_OK);
2619 x = Traits::RewriteExponentiation(x, y, pos);
2630 template <class Traits>
2631 typename ParserBase<Traits>::ExpressionT
2632 ParserBase<Traits>::ParseUnaryExpression(ExpressionClassifier* classifier,
2656 Traits::RewriteNonPattern(classifier, CHECK_OK);
2673 // Allow Traits do rewrite the expression.
2686 Traits::RewriteNonPattern(classifier, CHECK_OK);
2728 return Traits::RewriteAwaitExpression(value, await_pos);
2735 template <class Traits>
2736 typename ParserBase<Traits>::ExpressionT
2737 ParserBase<Traits>::ParsePostfixExpression(ExpressionClassifier* classifier,
2755 Traits::RewriteNonPattern(classifier, CHECK_OK);
2767 template <class Traits>
2768 typename ParserBase<Traits>::ExpressionT
2769 ParserBase<Traits>::ParseLeftHandSideExpression(
2786 Traits::RewriteNonPattern(classifier, CHECK_OK);
2792 Traits::RewriteNonPattern(classifier, CHECK_OK);
2801 Traits::RewriteNonPattern(classifier, CHECK_OK);
2824 typename Traits::Type::ExpressionList args =
2830 return Traits::ExpressionListToExpression(args);
2849 args = Traits::PrepareSpreadArguments(args);
2850 result = Traits::SpreadCall(result, args, pos);
2869 Traits::RewriteNonPattern(classifier, CHECK_OK);
2884 Traits::RewriteNonPattern(classifier, CHECK_OK);
2897 template <class Traits>
2898 typename ParserBase<Traits>::ExpressionT
2899 ParserBase<Traits>::ParseMemberWithNewPrefixesExpression(
2936 Traits::RewriteNonPattern(classifier, CHECK_OK);
2940 typename Traits::Type::ExpressionList args =
2944 args = Traits::PrepareSpreadArguments(args);
2945 result = Traits::SpreadCallNew(result, args, new_pos);
2962 template <class Traits>
2963 typename ParserBase<Traits>::ExpressionT
2964 ParserBase<Traits>::ParseMemberExpression(ExpressionClassifier* classifier,
3031 template <class Traits>
3032 typename ParserBase<Traits>::ExpressionT
3033 ParserBase<Traits>::ParseSuperExpression(bool is_new,
3062 template <class Traits>
3063 void ParserBase<Traits>::ExpectMetaProperty(Vector<const char> property_name,
3070 Traits::ReportMessageAt(
3077 template <class Traits>
3078 typename ParserBase<Traits>::ExpressionT
3079 ParserBase<Traits>::ParseNewTargetExpression(bool* ok) {
3093 template <class Traits>
3094 typename ParserBase<Traits>::ExpressionT
3095 ParserBase<Traits>::ParseMemberExpressionContinuation(
3104 Traits::RewriteNonPattern(classifier, CHECK_OK);
3111 Traits::RewriteNonPattern(classifier, CHECK_OK);
3121 Traits::RewriteNonPattern(classifier, CHECK_OK);
3138 Traits::RewriteNonPattern(classifier, CHECK_OK);
3170 template <class Traits>
3171 void ParserBase<Traits>::ParseFormalParameter(
3183 if (!Traits::IsIdentifier(pattern)) {
3190 ExpressionT initializer = Traits::EmptyExpression();
3195 Traits::RewriteNonPattern(&init_classifier, ok);
3202 Traits::SetFunctionNameFromIdentifierRef(initializer, pattern);
3205 Traits::AddFormalParameter(parameters, pattern, initializer,
3210 template <class Traits>
3211 void ParserBase<Traits>::ParseFormalParameterList(
3255 Traits::DeclareFormalParameter(parameters->scope, parameter, classifier);
3259 template <class Traits>
3260 void ParserBase<Traits>::CheckArityRestrictions(int param_count,
3286 template <class Traits>
3287 bool ParserBase<Traits>::IsNextLetKeyword() {
3311 template <class Traits>
3312 typename ParserBase<Traits>::ExpressionT
3313 ParserBase<Traits>::ParseArrowFunctionLiteral(
3325 typename Traits::Type::StatementList body;
3333 typename Traits::Type::Factory function_factory(ast_value_factory());
3380 Traits::RewriteNonPattern(&classifier, CHECK_OK);
3384 Traits::RewriteNonPattern(&classifier, CHECK_OK);
3414 Traits::RewriteDestructuringAssignments();
3435 template <typename Traits>
3436 typename ParserBase<Traits>::ExpressionT
3437 ParserBase<Traits>::ParseTemplateLiteral(ExpressionT tag, int start,
3459 typename Traits::TemplateLiteralState ts = Traits::OpenTemplateLiteral(pos);
3460 Traits::AddTemplateSpan(&ts, true);
3461 return Traits::CloseTemplateLiteral(&ts, start, tag);
3466 typename Traits::TemplateLiteralState ts = Traits::OpenTemplateLiteral(pos);
3467 Traits::AddTemplateSpan(&ts, false);
3481 return Traits::EmptyExpression();
3483 Traits::ReportMessageAt(
3487 return Traits::EmptyExpression();
3493 Traits::RewriteNonPattern(classifier, CHECK_OK);
3494 Traits::AddTemplateExpression(&ts, expression);
3500 return Traits::EmptyExpression();
3513 return Traits::EmptyExpression();
3515 Traits::ReportMessageAt(
3519 return Traits::EmptyExpression();
3522 Traits::AddTemplateSpan(&ts, next == Token::TEMPLATE_TAIL);
3528 return Traits::CloseTemplateLiteral(&ts, start, tag);
3532 template <typename Traits>
3533 typename ParserBase<Traits>::ExpressionT
3534 ParserBase<Traits>::CheckAndRewriteReferenceExpression(
3542 template <typename Traits>
3543 typename ParserBase<Traits>::ExpressionT
3544 ParserBase<Traits>::CheckAndRewriteReferenceExpression(
3569 template <typename Traits>
3570 bool ParserBase<Traits>::IsValidReferenceExpression(ExpressionT expression) {
3575 template <typename Traits>
3576 void ParserBase<Traits>::CheckDestructuringElement(
3591 template <typename Traits>
3592 void ParserBase<Traits>::ObjectLiteralChecker::CheckProperty(
3611 template <typename Traits>
3612 void ParserBase<Traits>::ClassLiteralChecker::CheckProperty(