|
| 1 |
|
// |
| 2 |
|
// Cpp-01. Main. Kirill Kobelev. |
| 3 |
|
// |
| 4 |
|
// Even C++ 2003 Grammar. The grammar is close to the Standard ISO/IEC 14882. |
| 5 |
|
// |
| 6 |
|
// This grammar is called even because some of the language restrictions were moved from the grammar itself |
| 7 |
|
// into the handlers of the grammar rules. Several similar rules of the original grammar were combined into |
| 8 |
|
// non-terminals. This approach dramatically reduced the number and complexity of grammar conflicts. |
| 9 |
|
// Plus this made the grammar compact and easy to understand. |
| 10 |
|
// |
| 11 |
|
// The rules of this grammar are divided into several sections. Each rule section starts with the <rules> |
| 12 |
|
// delimiter. Rules can use non-terminals from other sections only if these non-terminals are defined there |
| 13 |
|
// as public. |
| 14 |
|
// |
| 15 |
|
// The language of this grammar is slightly wider than the C++ 2003 standard. For example this grammar allows |
| 16 |
|
// specifying base types for enums and allows several other minor things. |
| 17 |
|
// |
| 18 |
|
|
| 19 |
|
#undef Grammars_CppAppIds_H |
| 20 |
|
#include "CppGrammarAppIds.H" |
| 21 |
|
#include "TerminalSymbols.GRA" |
| 22 |
|
|
| 23 |
|
TranslationUnit; |
| 24 |
|
|
| 25 |
|
|
| 26 |
|
|
| 27 |
4000 |
TranslationUnit |
| 28 |
R0 |
: DeclarationsSeq |
| 29 |
|
; |
| 30 |
|
|
| 31 |
|
#include "Cpp_02_Names.GRA" |
| 32 |
|
#include "Cpp_03_Declarations.GRA" |
| 33 |
|
#include "Cpp_04_Declarators.GRA" |
| 34 |
|
|
| 35 |
|
#include "Cpp_05_Namespaces.GRA" |
| 36 |
|
#include "Cpp_06_Enums.GRA" |
| 37 |
|
#include "Cpp_07_Classes.GRA" |
| 38 |
|
#include "Cpp_08_Templates.GRA" |
| 39 |
|
|
| 40 |
|
#include "Cpp_09_Functions.GRA" |
| 41 |
|
#include "Cpp_10_Statements.GRA" |
| 42 |
|
#include "Cpp_11_Expressions.GRA" |
| 43 |
|
|
| 44 |
|
#include "ExpectedConflicts.GRA" |
| 45 |
|
|
| 46 |
|
|
| 1 |
|
// |
| 2 |
|
// Application Ids for various Cpp grammar objects. |
| 3 |
|
// |
| 4 |
|
// The application identifiers are numbers. They are used in the callback handler of the grammar based |
| 5 |
|
// parser to identify terminal and non-terminal symbols, rules of the grammar, expected conflicts, etc. |
| 6 |
|
// |
| 7 |
|
|
| 8 |
|
#ifndef Grammars_CppAppIds_H |
| 9 |
|
#define Grammars_CppAppIds_H |
|
| 10 |
|
|
| 11 |
|
// ------------------------------------------------ |
| 12 |
|
// |
| 13 |
|
// Terminal symbol ids |
| 14 |
|
// |
| 15 |
|
// ------------------------------------------------ |
| 16 |
|
|
| 17 |
|
// Symbols for DeclTypeSpecifier enums. |
| 18 |
|
#define sym_typedef |
3601 |
| 19 |
|
#define sym_friend |
3602 |
| 20 |
|
#define sym_inline |
3603 |
| 21 |
|
#define sym_virtual |
3604 |
| 22 |
|
#define sym_explicit |
3605 |
| 23 |
|
#define sym_register |
3606 |
| 24 |
|
#define sym_auto |
3607 |
| 25 |
|
#define sym_static |
3608 |
| 26 |
|
#define sym_extern |
3609 |
| 27 |
|
#define sym_mutable |
3610 |
| 28 |
|
#define sym_const |
3611 |
| 29 |
|
#define sym_volatile |
3612 |
| 30 |
|
|
| 31 |
|
// Symbols for BuiltInTypeSpecifier. |
| 32 |
|
#define sym_void |
3619 |
| 33 |
|
#define sym_bool |
3620 |
| 34 |
|
#define sym_char |
3621 |
| 35 |
|
#define sym_wchar |
3622 |
| 36 |
|
#define sym_short |
3623 |
| 37 |
|
#define sym_int |
3624 |
| 38 |
|
#define sym_long |
3625 |
| 39 |
|
#define sym_signed |
3626 |
| 40 |
|
#define sym_unsigned |
3627 |
| 41 |
|
#define sym_float |
3628 |
| 42 |
|
#define sym_double |
3629 |
| 43 |
|
|
| 44 |
|
// Symbols for ClassKey. |
| 45 |
|
#define sym_struct |
3640 |
| 46 |
|
#define sym_union |
3641 |
| 47 |
|
#define sym_class |
3642 |
| 48 |
|
|
| 49 |
|
// Symbols for AccessSpecifier. |
| 50 |
|
#define sym_public |
3646 |
| 51 |
|
#define sym_protected |
3647 |
| 52 |
|
#define sym_private |
3648 |
| 53 |
|
|
| 54 |
|
// Symbols for Statements. |
| 55 |
|
#define sym_if |
3650 |
| 56 |
|
#define sym_else |
3651 |
| 57 |
|
#define sym_switch |
3652 |
| 58 |
|
#define sym_for |
3653 |
| 59 |
|
#define sym_while |
3654 |
| 60 |
|
#define sym_do |
3655 |
| 61 |
|
#define sym_goto |
3656 |
| 62 |
|
#define sym_break |
3657 |
| 63 |
|
#define sym_continue |
3658 |
| 64 |
|
#define sym_return |
3659 |
| 65 |
|
|
| 66 |
|
// Misc symbols. |
| 67 |
|
#define sym_lpar |
3660 |
| 68 |
|
#define sym_rpar |
3661 |
| 69 |
|
#define sym_ellipsis |
3662 |
| 70 |
|
#define sym_question |
3663 |
| 71 |
|
#define sym_colon |
3664 |
| 72 |
|
#define sym_semicol |
3665 |
| 73 |
|
#define sym_identifier |
3666 |
| 74 |
|
#define sym_try |
3667 |
| 75 |
|
#define sym_enum |
3668 |
| 76 |
|
#define sym_namespace |
3669 |
| 77 |
|
#define sym_operator |
3670 |
| 78 |
|
#define sym_template |
3671 |
| 79 |
|
#define sym_export |
3672 |
| 80 |
|
#define sym_using |
3673 |
| 81 |
|
#define sym_asm |
3674 |
| 82 |
|
#define sym_case |
3675 |
| 83 |
|
#define sym_default |
3676 |
| 84 |
|
#define sym_catch |
3677 |
| 85 |
|
#define sym_lcurvbr |
3678 |
| 86 |
|
#define sym_rcurvbr |
3679 |
| 87 |
|
|
| 88 |
|
// Symbols for Assignment operator. |
| 89 |
|
#define sym_assign |
3739 |
| 90 |
|
#define sym_plus_asgn |
3740 |
| 91 |
|
#define sym_minus_asgn |
3741 |
| 92 |
|
#define sym_mul_asgn |
3742 |
| 93 |
|
#define sym_div_asgn |
3743 |
| 94 |
|
#define sym_rmnd_asgn |
3744 |
| 95 |
|
#define sym_lsh_asgn |
3745 |
| 96 |
|
#define sym_rsh_asgn |
3746 |
| 97 |
|
#define sym_btand_asgn |
3747 |
| 98 |
|
#define sym_btor_asgn |
3748 |
| 99 |
|
#define sym_btxor_asgn |
3749 |
| 100 |
|
|
| 101 |
|
// Symbols for comparison operators. |
| 102 |
|
#define sym_eq |
3751 |
| 103 |
|
#define sym_ne |
3752 |
| 104 |
|
#define sym_lt |
3753 |
| 105 |
|
#define sym_gt |
3754 |
| 106 |
|
#define sym_le |
3755 |
| 107 |
|
#define sym_ge |
3756 |
| 108 |
|
|
| 109 |
|
// Symbols for multiop operators. |
| 110 |
|
#define sym_comma |
3760 |
| 111 |
|
#define sym_logand |
3761 |
| 112 |
|
#define sym_logor |
3762 |
| 113 |
|
#define sym_bitand |
3763 |
| 114 |
|
#define sym_bitor |
3764 |
| 115 |
|
#define sym_bitxor |
3765 |
| 116 |
|
|
| 117 |
|
// Symbols for binary operators. |
| 118 |
|
#define sym_bitlsh |
3768 |
| 119 |
|
#define sym_bitrsh |
3769 |
| 120 |
|
#define sym_plus |
3780 |
| 121 |
|
#define sym_minus |
3781 |
| 122 |
|
#define sym_mul |
3782 |
| 123 |
|
#define sym_div |
3783 |
| 124 |
|
#define sym_rmnd |
3784 |
| 125 |
|
#define sym_dot |
3785 |
| 126 |
|
#define sym_arrow |
3786 |
| 127 |
|
#define sym_dotstar |
3787 |
| 128 |
|
#define sym_arrowstar |
3788 |
| 129 |
|
|
| 130 |
|
// Symbols for unary operators. |
| 131 |
|
#define sym_throw |
3800 |
| 132 |
|
#define sym_plusplus |
3801 |
| 133 |
|
#define sym_minusminus |
3802 |
| 134 |
|
#define sym_sizeof |
3803 |
| 135 |
|
#define sym_bang |
3804 |
| 136 |
|
#define sym_tilda |
3805 |
| 137 |
|
#define sym_typename |
3806 |
| 138 |
|
#define sym_const_cast |
3807 |
| 139 |
|
#define sym_dyna_cast |
3808 |
| 140 |
|
#define sym_rein_cast |
3809 |
| 141 |
|
#define sym_static_cast |
3810 |
| 142 |
|
#define sym_typeid |
3811 |
| 143 |
|
|
| 144 |
|
// New and delete related symbols. |
| 145 |
|
#define sym_dblcolon |
3830 |
| 146 |
|
#define sym_new |
3831 |
| 147 |
|
#define sym_delete |
3832 |
| 148 |
|
#define sym_lbracket |
3833 |
| 149 |
|
#define sym_rbracket |
3834 |
| 150 |
|
|
| 151 |
|
// Symbols for PrimaryExpr and Literal. |
| 152 |
|
#define sym_this |
3843 |
| 153 |
|
#define sym_false |
3844 |
| 154 |
|
#define sym_true |
3845 |
| 155 |
|
#define sym_number |
3846 |
| 156 |
|
#define sym_charconst |
3847 |
| 157 |
|
#define sym_string |
3848 |
| 158 |
|
|
| 159 |
|
// --------------------------------------------------- |
| 160 |
|
// |
| 161 |
|
// Non terminal symbol ids |
| 162 |
|
// |
| 163 |
|
// --------------------------------------------------- |
| 164 |
|
|
| 165 |
|
// |
| 166 |
|
// Cpp_01_Main.GRA |
| 167 |
|
// |
| 168 |
|
|
| 169 |
|
#define sym_TranslationUnit |
101 |
| 170 |
|
|
| 171 |
|
// |
| 172 |
|
// Cpp_02_Names.GRA |
| 173 |
|
// |
| 174 |
|
|
| 175 |
|
#define sym_SimpleOrQualifiedId |
201 |
| 176 |
|
#define sym_ExtendedId |
202 |
| 177 |
|
#define sym_ExpressionId |
203 |
| 178 |
|
#define sym_SpecialUnqualifiedId |
204 |
| 179 |
|
|
| 180 |
|
// |
| 181 |
|
// Cpp_03_Declarations.GRA |
| 182 |
|
// |
| 183 |
|
|
| 184 |
|
#define sym_DeclarationsSeq |
301 |
| 185 |
|
#define sym_Declaration |
302 |
| 186 |
|
#define sym_BlockDeclaration |
303 |
| 187 |
|
#define sym_SimpleDeclaration |
304 |
| 188 |
|
#define sym_DeclTypeSpecifier |
305 |
| 189 |
|
#define sym_DeclPrefix |
306 |
| 190 |
|
#define sym_FunctionSpecifier |
307 |
| 191 |
|
#define sym_StorageClassSpecifier |
308 |
| 192 |
|
#define sym_TypeSpecifier |
309 |
| 193 |
|
#define sym_SimpleTypeSpecifier |
310 |
| 194 |
|
#define sym_BuiltInTypeSpecifier |
311 |
| 195 |
|
#define sym_NamedTypeSpecifier |
312 |
| 196 |
|
#define sym_ElaboratedTypeSpecifier |
313 |
| 197 |
|
#define sym_UsingDeclaration |
314 |
| 198 |
|
#define sym_UsingDirective |
315 |
| 199 |
|
#define sym_AsmDefinition |
316 |
| 200 |
|
#define sym_LinkageSpecification |
317 |
| 201 |
|
#define sym_LinkageSpecHeader |
318 |
| 202 |
|
|
| 203 |
|
// |
| 204 |
|
// Cpp_04_Declarators.GRA |
| 205 |
|
// |
| 206 |
|
|
| 207 |
|
#define sym_InitDeclaratorsList |
401 |
| 208 |
|
#define sym_InitDeclarator |
402 |
| 209 |
|
#define sym_UninitedDeclarator |
403 |
| 210 |
|
#define sym_Declarator |
404 |
| 211 |
|
#define sym_DirectDeclarator |
405 |
| 212 |
|
#define sym_AbstractDeclarator |
406 |
| 213 |
|
#define sym_DirectAbstractDeclarator |
407 |
| 214 |
|
#define sym_PtrOperator |
408 |
| 215 |
|
#define sym_CvQualifier |
409 |
| 216 |
|
#define sym_ParameterDeclarationClause |
410 |
| 217 |
|
#define sym_ParameterDeclarationHeader |
411 |
| 218 |
|
#define sym_ParameterDeclarationsList |
412 |
| 219 |
|
#define sym_ParameterDeclaration |
413 |
| 220 |
|
#define sym_UninitedParameter |
414 |
| 221 |
|
#define sym_ExceptionsSpecification |
415 |
| 222 |
|
#define sym_ExceptionTypeIdsList |
416 |
| 223 |
|
#define sym_TypeId |
417 |
| 224 |
|
#define sym_Initializer |
418 |
| 225 |
|
#define sym_InitializerClause |
419 |
| 226 |
|
#define sym_InitializersList |
420 |
| 227 |
|
|
| 228 |
|
// |
| 229 |
|
// Cpp_05_Namespaces.GRA |
| 230 |
|
// |
| 231 |
|
|
| 232 |
|
#define sym_NamespaceDefinition |
501 |
| 233 |
|
#define sym_NamespaceHeader |
502 |
| 234 |
|
#define sym_NamespaceAliasDefinition |
503 |
| 235 |
|
|
| 236 |
|
// |
| 237 |
|
// Cpp_06_Enums.GRA |
| 238 |
|
// |
| 239 |
|
|
| 240 |
|
#define sym_EnumSpecifier |
601 |
| 241 |
|
#define sym_EnumeratorHeader |
602 |
| 242 |
|
#define sym_EnumeratorsList |
603 |
| 243 |
|
#define sym_EnumeratorDefinition |
604 |
| 244 |
|
|
| 245 |
|
// |
| 246 |
|
// Cpp_07_Classes.GRA |
| 247 |
|
// |
| 248 |
|
|
| 249 |
|
#define sym_ClassSpecifier |
701 |
| 250 |
|
#define sym_ClassHeader |
702 |
| 251 |
|
#define sym_ClassKey |
703 |
| 252 |
|
#define sym_MemberDeclarationsSeq |
704 |
| 253 |
|
#define sym_MemberDeclaration |
705 |
| 254 |
|
#define sym_AccessSpecifier |
706 |
| 255 |
|
#define sym_SimpleMemberDeclaration |
707 |
| 256 |
|
#define sym_MemberDeclaratorsList |
708 |
| 257 |
|
#define sym_MemberDeclarator |
709 |
| 258 |
|
#define sym_ConstantInitializer |
710 |
| 259 |
|
#define sym_BaseClassSpecifiersList |
711 |
| 260 |
|
#define sym_BaseClassSpecifier |
712 |
| 261 |
|
|
| 262 |
|
// |
| 263 |
|
// Cpp_08_Templates.GRA |
| 264 |
|
// |
| 265 |
|
|
| 266 |
|
#define sym_TemplateDeclaration |
801 |
| 267 |
|
#define sym_MemberTemplateDeclaration |
802 |
| 268 |
|
#define sym_TemplateDeclarationHeader |
803 |
| 269 |
|
#define sym_TemplateParamsListHeader |
804 |
| 270 |
|
#define sym_TemplateParametersList |
805 |
| 271 |
|
#define sym_TemplateParameter |
806 |
| 272 |
|
#define sym_TemplateTypeParameter |
807 |
| 273 |
|
#define sym_TemplateTemplateParameter |
808 |
| 274 |
|
#define sym_ExplicitInstantiation |
809 |
| 275 |
|
#define sym_MemberExplicitInstantiation |
810 |
| 276 |
|
#define sym_ExplicitInstantiationHeader |
811 |
| 277 |
|
#define sym_TemplateId |
812 |
| 278 |
|
#define sym_TemplateArgumentsList |
813 |
| 279 |
|
#define sym_TemplateArgument |
814 |
| 280 |
|
|
| 281 |
|
// |
| 282 |
|
// Cpp_09_Functions.GRA |
| 283 |
|
// |
| 284 |
|
|
| 285 |
|
#define sym_FunctionDefinition |
901 |
| 286 |
|
#define sym_FunctionHeader |
902 |
| 287 |
|
#define sym_MemberInitsList |
903 |
| 288 |
|
#define sym_MemberInitializer |
904 |
| 289 |
|
#define sym_OperatorFunctionId |
905 |
| 290 |
|
#define sym_OverloadableOperator |
906 |
| 291 |
|
#define sym_ConversionFunctionId |
907 |
| 292 |
|
#define sym_ConversionTypeId |
908 |
| 293 |
|
#define sym_ConversionDeclarator |
909 |
| 294 |
|
|
| 295 |
|
// |
| 296 |
|
// Cpp_10_Statements.GRA |
| 297 |
|
// |
| 298 |
|
|
| 299 |
|
#define sym_Statement |
1001 |
| 300 |
|
#define sym_CompoundStatement |
1002 |
| 301 |
|
#define sym_CompoundStatementHeader |
1003 |
| 302 |
|
#define sym_StatementsSeq |
1004 |
| 303 |
|
#define sym_LabeledStatement |
1005 |
| 304 |
|
#define sym_ExpressionStatement |
1006 |
| 305 |
|
#define sym_SelectionStatement |
1007 |
| 306 |
|
#define sym_IterationStatement |
1008 |
| 307 |
|
#define sym_ForInitStatement |
1009 |
| 308 |
|
#define sym_Condition |
1010 |
| 309 |
|
#define sym_UninitedCondition |
1011 |
| 310 |
|
#define sym_DoStatementBody |
1012 |
| 311 |
|
#define sym_JumpStatement |
1013 |
| 312 |
|
#define sym_TryBlock |
1014 |
| 313 |
|
#define sym_ExceptionHandlersSeq |
1015 |
| 314 |
|
#define sym_ExceptionHandler |
1016 |
| 315 |
|
#define sym_ExceptionHandlerHeader |
1017 |
| 316 |
|
|
| 317 |
|
// |
| 318 |
|
// Cpp_11_Expressions.GRA |
| 319 |
|
// |
| 320 |
|
|
| 321 |
|
#define sym_ExpressionsList |
1101 |
| 322 |
|
#define sym_Expression |
1102 |
| 323 |
|
#define sym_AssignmentExpression |
1103 |
| 324 |
|
#define sym_AssignmentOperator |
1104 |
| 325 |
|
|
| 326 |
|
#define sym_ThrowExpression |
1105 |
| 327 |
|
#define sym_ConstantExpressionsList |
1106 |
| 328 |
|
#define sym_ConstantExpression |
1107 |
| 329 |
|
#define sym_ConditionalExpression |
1108 |
| 330 |
|
#define sym_LogicalOrExpression |
1109 |
| 331 |
|
#define sym_LogicalAndExpression |
1110 |
| 332 |
|
#define sym_BitOrExpression |
1111 |
| 333 |
|
#define sym_BitXorExpression |
1112 |
| 334 |
|
#define sym_BitAndExpression |
1113 |
| 335 |
|
#define sym_EqualityExpression |
1114 |
| 336 |
|
#define sym_RelationalExpression |
1115 |
| 337 |
|
#define sym_ShiftExpression |
1116 |
| 338 |
|
#define sym_AdditiveExpression |
1117 |
| 339 |
|
#define sym_MultiplicativeExpression |
1118 |
| 340 |
|
#define sym_PmExpression |
1119 |
| 341 |
|
|
| 342 |
|
#define sym_CastExpression |
1120 |
| 343 |
|
#define sym_UnaryExpression |
1121 |
| 344 |
|
#define sym_UnaryOperator |
1122 |
| 345 |
|
#define sym_NewExpression |
1123 |
| 346 |
|
#define sym_NewPlacement |
1124 |
| 347 |
|
#define sym_NewTypeId |
1125 |
| 348 |
|
#define sym_NewDeclarator |
1126 |
| 349 |
|
#define sym_DirectNewDeclarator |
1127 |
| 350 |
|
#define sym_NewInitializer |
1128 |
| 351 |
|
#define sym_DeleteExpression |
1129 |
| 352 |
|
#define sym_PostfixExpression |
1130 |
| 353 |
|
#define sym_PrimaryExpression |
1131 |
| 354 |
|
#define sym_Literal |
1132 |
| 355 |
|
#define sym_StringsSeq |
1133 |
| 356 |
|
|
| 357 |
|
#define rcpp_pfix_plpl |
1160 |
| 358 |
|
#define rcpp_pfix_mnmn |
1161 |
| 359 |
|
#define rcpp_pfix_dot |
1162 |
| 360 |
|
#define rcpp_pfix_dot_tmpl |
1163 |
| 361 |
|
#define rcpp_pfix_arrow |
1164 |
| 362 |
|
#define rcpp_pfix_arrow_tmpl |
1165 |
| 363 |
|
#define rcpp_pfix_array |
1166 |
| 364 |
|
#define rcpp_pfix_fcall_simp |
1167 |
| 365 |
|
#define rcpp_pfix_fcall_prms |
1168 |
| 366 |
|
#define rcpp_pfix_ctor1 |
1169 |
| 367 |
|
#define rcpp_pfix_ctor2 |
1170 |
| 368 |
|
#define rcpp_pfix_ctor3 |
1171 |
| 369 |
|
#define rcpp_pfix_ctor4 |
1172 |
| 370 |
|
#define rcpp_pfix_cs_cast |
1173 |
| 371 |
|
#define rcpp_pfix_st_cast |
1174 |
| 372 |
|
#define rcpp_pfix_dy_cast |
1175 |
| 373 |
|
#define rcpp_pfix_re_cast |
1176 |
| 374 |
|
#define rcpp_pfix_tpid_expr |
1177 |
| 375 |
|
#define rcpp_pfix_tpid_type |
1178 |
| 376 |
|
|
| 377 |
|
// ------------------------------------------------------------- |
| 378 |
|
// |
| 379 |
|
// Expected conflict ids |
| 380 |
|
// |
| 381 |
|
// ------------------------------------------------------------- |
| 383 |
|
#define xpct_ExpressionId_OR_NamedTypeSpecifier |
7400 |
// X0 |
| 384 |
|
#define xpct_SimpleTypeSpec_OR_TypeSpecifier |
7401 |
// X1 |
| 385 |
|
#define xpct_DirectDeclarator_OR_PrimaryExpression |
7402 |
// X2 |
| 386 |
|
#define xpct_PtrStar_OR_UnaryStar |
7403 |
// X3 |
| 387 |
|
#define xpct_RefAmpersand_OR_UnaryAmpersand |
7404 |
// X4 |
| 388 |
|
#define xpct_Qual_OR_MoreQual |
7405 |
// X5 |
| 389 |
|
#define xpct_Declarator_OR_ParameterDeclaration |
7406 |
// X6 |
| 390 |
|
#define xpct_ElabTypeSpec_OR_PostfixExpression |
7407 |
// X7 |
| 391 |
|
#define xpct_MemberDecl_OR_FunctionDefn |
7408 |
// X8 |
| 392 |
|
|
| 393 |
|
#define xpct_EnumHeader_OR_AlignmentRecord |
7409 |
// X9 |
| 394 |
|
#define xpct_ExtendedId_OR_ClassHeader |
7410 |
// X10 |
| 395 |
|
#define xpct_NewWithArrayIndex_OR_NewArray |
7411 |
// X11 |
| 396 |
|
#define xpct_DeleteWithArrayIndex_OR_DeleteArray |
7412 |
// X12 |
| 397 |
|
#define xpct_ExtendedId_OR_TemplateParams |
7413 |
// X13 |
| 398 |
|
#define xpct_OperatorFuncId_OR_TemplateParams |
7414 |
// X14 |
| 399 |
|
#define xpct_ConversionFuncId_OR_TemplateParams |
7415 |
// X15 |
| 400 |
|
|
| 401 |
|
#define xpct_Destructor_OR_UnaryTilda |
7416 |
// X16 |
| 402 |
|
#define xpct_ClassKey_OR_TypeParameter |
7417 |
// X17 |
| 403 |
|
#define xpct_RelationalExpr_OR_TemplateIdDataArg |
7418 |
// X18 |
| 404 |
|
#define xpct_EnumHeader_OR_FunctionDefn |
7419 |
// X19 |
| 405 |
|
#define xpct_ClassHeader_OR_ConversionFuncHeader |
7420 |
// X20 |
| 406 |
|
|
| 407 |
|
#define xpct_PtrOperator_OR_ConversionTypeId |
7421 |
// X21 |
| 408 |
|
#define xpct_PtrOperator_OR_NewTypeId |
7422 |
// X22 |
| 409 |
|
#define xpct_PtrOperator_OR_NewDeclarator |
7423 |
// X23 |
| 410 |
|
#define xpct_RefOperator_OR_ConversionTypeId |
7424 |
// X24 |
| 411 |
|
#define xpct_RefOperator_OR_NewTypeId |
7425 |
// X25 |
| 412 |
|
#define xpct_RefOperator_OR_NewDeclarator |
7426 |
// X26 |
| 413 |
|
|
| 414 |
|
#define xpct_TypeParameter_OR_DataParameter |
7427 |
// X27 |
| 415 |
|
#define xpct_ParamsHeader_OR_EnclosedDeclarator |
7428 |
// X28 |
| 416 |
|
#define xpct_BigElse_OR_SmallElse |
7429 |
// X29 |
| 417 |
|
|
| 418 |
|
// ------------------------------------------------------------- |
| 419 |
|
// |
| 420 |
|
// Misc rule ids |
| 421 |
|
// |
| 422 |
|
// ------------------------------------------------------------- |
| 424 |
|
#define rcpp_X8A1 |
8801 |
| 425 |
|
#define rcpp_DirDeclDecl |
8802 |
| 426 |
|
#define rcpp_PtrOpStar |
8803 |
| 427 |
|
#define rcpp_UnOpStar |
8804 |
| 428 |
|
|
| 429 |
|
#endif // Grammars_CppAppIds_H |
| 430 |
|
|
| 431 |
|
|
| 1 |
|
// |
| 2 |
|
// Even C++ Grammar. Close to the Standard ISO/IEC 14882. |
| 3 |
|
// |
| 4 |
|
// Terminal symbols and grammar info. |
| 5 |
|
// |
| 6 |
|
|
| 7 |
|
|
| 8 |
|
|
| 9 |
|
Cpp, |
// Target language type. |
| 10 |
|
"TCppParser", |
// Name of the grammar based parser callback handler. |
| 11 |
|
"Cpp_Lang"; |
// Preferred prefix for emitting the .cxx tables. |
| 12 |
|
|
| 13 |
|
|
| 14 |
|
|
| 15 |
|
"Even Cpp Grammar. Close to the C++ 2003 standard."; |
| 16 |
|
|
| 17 |
|
|
| 18 |
|
|
| 19 |
1 |
number: |
ltx_number |
__id(sym_number); |
| 20 |
2 |
charconst: |
ltx_charconst |
__id(sym_charconst); |
| 21 |
3 |
string: |
ltx_string |
__id(sym_string); |
| 22 |
4 |
identifier: |
ltx_name |
__id(sym_identifier); |
| 23 |
|
|
| 24 |
|
// TSeparToken |
| 25 |
5 |
'{': |
ltx_keyword |
spr_lcurvbr |
__id(sym_lcurvbr); |
| 26 |
6 |
'}': |
ltx_keyword |
spr_rcurvbr |
__id(sym_rcurvbr); |
| 27 |
7 |
';': |
ltx_keyword |
spr_semicol |
__id(sym_semicol); |
| 28 |
8 |
'...': |
ltx_keyword |
spr_ellipsis |
__id(sym_ellipsis); |
| 29 |
|
|
| 30 |
|
// TOperatorToken |
| 31 |
9 |
',': |
ltx_keyword |
opr_comma |
__id(sym_comma); |
| 32 |
10 |
'(': |
ltx_keyword |
opr_lpar |
__id(sym_lpar); |
| 33 |
11 |
')': |
ltx_keyword |
opr_rpar |
__id(sym_rpar); |
| 34 |
12 |
'!': |
ltx_keyword |
opr_bang |
__id(sym_bang); |
| 35 |
13 |
'~': |
ltx_keyword |
opr_tilda |
__id(sym_tilda); |
| 36 |
|
|
| 37 |
14 |
'*': |
ltx_keyword |
opr_mul |
__id(sym_mul); |
| 38 |
15 |
'/': |
ltx_keyword |
opr_div |
__id(sym_div); |
| 39 |
16 |
'%': |
ltx_keyword |
opr_rmnd |
__id(sym_rmnd); |
| 40 |
17 |
'+': |
ltx_keyword |
opr_plus |
__id(sym_plus); |
| 41 |
18 |
'-': |
ltx_keyword |
opr_minus |
__id(sym_minus); |
| 42 |
19 |
'<<': |
ltx_keyword |
opr_bitlsh |
__id(sym_bitlsh); |
| 43 |
20 |
'>>': |
ltx_keyword |
opr_bitrsh |
__id(sym_bitrsh); |
| 44 |
21 |
'&': |
ltx_keyword |
opr_bitand |
__id(sym_bitand); |
| 45 |
22 |
'|': |
ltx_keyword |
opr_bitor |
__id(sym_bitor); |
| 46 |
23 |
'^': |
ltx_keyword |
opr_bitxor |
__id(sym_bitxor); |
| 47 |
|
|
| 48 |
24 |
'<': |
ltx_keyword |
opr_lt |
__id(sym_lt); |
| 49 |
25 |
'<=': |
ltx_keyword |
opr_le |
__id(sym_le); |
| 50 |
26 |
'>': |
ltx_keyword |
opr_gt |
__id(sym_gt); |
| 51 |
27 |
'>=': |
ltx_keyword |
opr_ge |
__id(sym_ge); |
| 52 |
28 |
'==': |
ltx_keyword |
opr_eq |
__id(sym_eq); |
| 53 |
29 |
'!=': |
ltx_keyword |
opr_ne |
__id(sym_ne); |
| 54 |
30 |
'&&': |
ltx_keyword |
opr_logand |
__id(sym_logand); |
| 55 |
31 |
'||': |
ltx_keyword |
opr_logor |
__id(sym_logor); |
| 56 |
32 |
'?': |
ltx_keyword |
opr_question |
__id(sym_question); |
| 57 |
33 |
':': |
ltx_keyword |
opr_colon |
__id(sym_colon); |
| 58 |
|
|
| 59 |
34 |
'::': |
ltx_keyword |
opr_dblcolon |
__id(sym_dblcolon); |
| 60 |
35 |
'.': |
ltx_keyword |
opr_dot |
__id(sym_dot); |
| 61 |
36 |
'->': |
ltx_keyword |
opr_arrow |
__id(sym_arrow); |
| 62 |
37 |
'.*': |
ltx_keyword |
opr_dotstar |
__id(sym_dotstar); |
| 63 |
38 |
'->*': |
ltx_keyword |
opr_arrowstar |
__id(sym_arrowstar); |
| 64 |
39 |
'[': |
ltx_keyword |
opr_lbracket |
__id(sym_lbracket); |
| 65 |
40 |
']': |
ltx_keyword |
opr_rbracket |
__id(sym_rbracket); |
| 66 |
41 |
'++': |
ltx_keyword |
opr_plusplus |
__id(sym_plusplus); |
| 67 |
42 |
'--': |
ltx_keyword |
opr_minusminus |
__id(sym_minusminus); |
| 68 |
|
|
| 69 |
43 |
SIZEOF: |
ltx_keyword |
opr_sizeof |
__id(sym_sizeof); |
| 70 |
44 |
NEW: |
ltx_keyword |
opr_new |
__id(sym_new); |
| 71 |
45 |
DELETE: |
ltx_keyword |
opr_delete |
__id(sym_delete); |
| 72 |
|
|
| 73 |
46 |
THROW: |
ltx_keyword |
opr_throw |
__id(sym_throw); |
| 74 |
47 |
TYPEID: |
ltx_keyword |
opr_typeid |
__id(sym_typeid); |
| 75 |
48 |
CONST_CAST: |
ltx_keyword |
opr_const_cast |
__id(sym_const_cast); |
| 76 |
49 |
DYNA_CAST: |
ltx_keyword |
opr_dyna_cast |
__id(sym_dyna_cast); |
| 77 |
50 |
REIN_CAST: |
ltx_keyword |
opr_rein_cast |
__id(sym_rein_cast); |
| 78 |
51 |
STATIC_CAST: |
ltx_keyword |
opr_static_cast |
__id(sym_static_cast); |
| 79 |
|
|
| 80 |
52 |
'=': |
ltx_keyword |
opr_assign |
__id(sym_assign); |
| 81 |
53 |
'*=': |
ltx_keyword |
opr_mul_asgn |
__id(sym_mul_asgn); |
| 82 |
54 |
'/=': |
ltx_keyword |
opr_div_asgn |
__id(sym_div_asgn); |
| 83 |
55 |
'%=': |
ltx_keyword |
opr_rmnd_asgn |
__id(sym_rmnd_asgn); |
| 84 |
56 |
'+=': |
ltx_keyword |
opr_plus_asgn |
__id(sym_plus_asgn); |
| 85 |
57 |
'-=': |
ltx_keyword |
opr_minus_asgn |
__id(sym_minus_asgn); |
| 86 |
58 |
'<<=': |
ltx_keyword |
opr_lsh_asgn |
__id(sym_lsh_asgn); |
| 87 |
59 |
'>>=': |
ltx_keyword |
opr_rsh_asgn |
__id(sym_rsh_asgn); |
| 88 |
60 |
'&=': |
ltx_keyword |
opr_btand_asgn |
__id(sym_btand_asgn); |
| 89 |
61 |
'|=': |
ltx_keyword |
opr_btor_asgn |
__id(sym_btor_asgn); |
| 90 |
62 |
'^=': |
ltx_keyword |
opr_btxor_asgn |
__id(sym_btxor_asgn); |
| 91 |
|
|
| 92 |
|
// TCLangToken |
| 93 |
63 |
ASM: |
ltx_keyword |
clg_asm |
__id(sym_asm); |
| 94 |
64 |
AUTO: |
ltx_keyword |
clg_auto |
__id(sym_auto); |
| 95 |
65 |
BREAK: |
ltx_keyword |
clg_break |
__id(sym_break); |
| 96 |
66 |
CASE: |
ltx_keyword |
clg_case |
__id(sym_case); |
| 97 |
67 |
CATCH: |
ltx_keyword |
clg_catch |
__id(sym_catch); |
| 98 |
68 |
CHAR: |
ltx_keyword |
clg_char |
__id(sym_char); |
| 99 |
69 |
CONST: |
ltx_keyword |
clg_const |
__id(sym_const); |
| 100 |
70 |
CONTINUE: |
ltx_keyword |
clg_continue |
__id(sym_continue); |
| 101 |
71 |
DEFAULT: |
ltx_keyword |
clg_default |
__id(sym_default); |
| 102 |
72 |
DO: |
ltx_keyword |
clg_do |
__id(sym_do); |
| 103 |
73 |
DOUBLE: |
ltx_keyword |
clg_double |
__id(sym_double); |
| 104 |
74 |
ELSE: |
ltx_keyword |
clg_else |
__id(sym_else); |
| 105 |
75 |
ENUM: |
ltx_keyword |
clg_enum |
__id(sym_enum); |
| 106 |
76 |
EXTERN: |
ltx_keyword |
clg_extern |
__id(sym_extern); |
| 107 |
77 |
FLOAT: |
ltx_keyword |
clg_float |
__id(sym_float); |
| 108 |
78 |
FOR: |
ltx_keyword |
clg_for |
__id(sym_for); |
| 109 |
79 |
GOTO: |
ltx_keyword |
clg_goto |
__id(sym_goto); |
| 110 |
80 |
IF: |
ltx_keyword |
clg_if |
__id(sym_if); |
| 111 |
81 |
INT: |
ltx_keyword |
clg_int |
__id(sym_int); |
| 112 |
82 |
LONG: |
ltx_keyword |
clg_long |
__id(sym_long); |
| 113 |
83 |
REGISTER: |
ltx_keyword |
clg_register |
__id(sym_register); |
| 114 |
84 |
RETURN: |
ltx_keyword |
clg_return |
__id(sym_return); |
| 115 |
85 |
SHORT: |
ltx_keyword |
clg_short |
__id(sym_short); |
| 116 |
86 |
SIGNED: |
ltx_keyword |
clg_signed |
__id(sym_signed); |
| 117 |
87 |
STATIC: |
ltx_keyword |
clg_static |
__id(sym_static); |
| 118 |
88 |
STRUCT: |
ltx_keyword |
clg_struct |
__id(sym_struct); |
| 119 |
89 |
SWITCH: |
ltx_keyword |
clg_switch |
__id(sym_switch); |
| 120 |
90 |
TRY: |
ltx_keyword |
clg_try |
__id(sym_try); |
| 121 |
91 |
TYPEDEF: |
ltx_keyword |
clg_typedef |
__id(sym_typedef); |
| 122 |
92 |
UNION: |
ltx_keyword |
clg_union |
__id(sym_union); |
| 123 |
93 |
UNSIGNED: |
ltx_keyword |
clg_unsigned |
__id(sym_unsigned); |
| 124 |
94 |
VOID: |
ltx_keyword |
clg_void |
__id(sym_void); |
| 125 |
95 |
VOLATILE: |
ltx_keyword |
clg_volatile |
__id(sym_volatile); |
| 126 |
96 |
WCHAR: |
ltx_keyword |
clg_wchar_t |
__id(sym_wchar); |
| 127 |
97 |
WHILE: |
ltx_keyword |
clg_while |
__id(sym_while); |
| 128 |
|
|
| 129 |
|
// TCppToken |
| 130 |
98 |
BOOL: |
ltx_keyword |
cpp_bool |
__id(sym_bool); |
| 131 |
99 |
CLASS: |
ltx_keyword |
cpp_class |
__id(sym_class); |
| 132 |
100 |
EXPLICIT: |
ltx_keyword |
cpp_explicit |
__id(sym_explicit); |
| 133 |
101 |
EXPORT: |
ltx_keyword |
cpp_export |
__id(sym_export); |
| 134 |
102 |
FALSE: |
ltx_keyword |
cpp_false |
__id(sym_false); |
| 135 |
103 |
FRIEND: |
ltx_keyword |
cpp_friend |
__id(sym_friend); |
| 136 |
104 |
INLINE: |
ltx_keyword |
cpp_inline |
__id(sym_inline); |
| 137 |
105 |
MUTABLE: |
ltx_keyword |
cpp_mutable |
__id(sym_mutable); |
| 138 |
106 |
NAMESPACE: |
ltx_keyword |
cpp_namespace |
__id(sym_namespace); |
| 139 |
107 |
OPERATOR: |
ltx_keyword |
cpp_operator |
__id(sym_operator); |
| 140 |
108 |
PRIVATE: |
ltx_keyword |
cpp_private |
__id(sym_private); |
| 141 |
109 |
PROTECTED: |
ltx_keyword |
cpp_protected |
__id(sym_protected); |
| 142 |
110 |
PUBLIC: |
ltx_keyword |
cpp_public |
__id(sym_public); |
| 143 |
111 |
TEMPLATE: |
ltx_keyword |
cpp_template |
__id(sym_template); |
| 144 |
112 |
THIS: |
ltx_keyword |
cpp_this |
__id(sym_this); |
| 145 |
113 |
TRUE: |
ltx_keyword |
cpp_true |
__id(sym_true); |
| 146 |
114 |
TYPENAME: |
ltx_keyword |
cpp_typename |
__id(sym_typename); |
| 147 |
115 |
USING: |
ltx_keyword |
cpp_using |
__id(sym_using); |
| 148 |
116 |
VIRTUAL: |
ltx_keyword |
cpp_virtual |
__id(sym_virtual); |
| 149 |
|
|
| 150 |
|
|
| 151 |
|
|
| 152 |
|
ltx_comment; |
| 153 |
|
ltx_eol; |
| 154 |
|
|
| 155 |
|
|
| 1 |
|
// |
| 2 |
|
// Cpp-02. Names. |
| 3 |
|
// |
| 4 |
|
|
| 5 |
|
|
| 6 |
|
|
| 7 |
|
public SimpleOrQualifiedId, ExpressionId; |
| 8 |
|
|
| 9 |
4001 |
SimpleOrQualifiedId |
| 10 |
R1 |
: ExtendedId |
| 11 |
R2 |
: [phed2] '::' ExtendedId |
| 12 |
R3 |
: SimpleOrQualifiedId [qmq1, qmq2, qmq3, qmq4] '::' ExtendedId |
| 13 |
R4 |
: SimpleOrQualifiedId [qmq1, qmq2, qmq3, qmq4] '::' TEMPLATE ExtendedId |
| 14 |
|
; |
| 15 |
|
|
| 16 |
4002 |
ExtendedId |
| 17 |
R5 |
: [phed1] identifier [mdfd-':' eitp-'<', tdp1-'=', tdp2-',', tdp3-'>'] __id(rcpp_X8A1) |
| 18 |
R6 |
: TemplateId |
| 19 |
|
; |
| 20 |
|
|
| 21 |
4003 |
ExpressionId |
| 22 |
R7 |
: SimpleOrQualifiedId [est1-';', est2-'...', est3-',', est4-'(', est5-')', est6-'*', est7-'&', est8-'>', est9-':', est10-'[', est11-'='] |
| 23 |
R8 |
: SpecialUnqualifiedId |
| 24 |
R9 |
: '::' OperatorFunctionId |
| 25 |
R10 |
: '::' ConversionFunctionId |
| 26 |
R11 |
: SimpleOrQualifiedId [qmq1*] '::' SpecialUnqualifiedId |
| 27 |
R12 |
: SimpleOrQualifiedId [qmq1*] '::' TEMPLATE SpecialUnqualifiedId |
| 28 |
|
; |
| 29 |
|
|
| 30 |
4004 |
SpecialUnqualifiedId |
| 31 |
R13 |
: '~' [dsut] identifier |
| 32 |
R14 |
: OperatorFunctionId |
| 33 |
R15 |
: ConversionFunctionId |
| 34 |
|
; |
| 35 |
|
|
| 36 |
|
|
| 1 |
|
// |
| 2 |
|
// Cpp-03. Declarations. |
| 3 |
|
// |
| 4 |
|
|
| 5 |
|
|
| 6 |
|
|
| 7 |
|
public DeclarationsSeq, Declaration; |
| 8 |
|
public BlockDeclaration, SimpleDeclaration; |
| 9 |
|
public DeclTypeSpecifier, TypeSpecifier, SimpleTypeSpecifier; |
| 10 |
|
public UsingDeclaration; |
| 11 |
|
|
| 12 |
4005 |
DeclarationsSeq |
| 13 |
R16 |
: Declaration |
| 14 |
R17 |
: DeclarationsSeq Declaration |
| 15 |
|
; |
| 16 |
|
|
| 17 |
4006 |
Declaration |
| 18 |
R18 |
: NamespaceDefinition |
| 19 |
R19 |
: BlockDeclaration |
| 20 |
R20 |
: FunctionDefinition |
| 21 |
R21 |
: TemplateDeclaration |
| 22 |
R22 |
: ExplicitInstantiation |
| 23 |
R23 |
: LinkageSpecification |
| 24 |
|
; |
| 25 |
|
|
| 26 |
4007 |
BlockDeclaration |
| 27 |
R24 |
: SimpleDeclaration |
| 28 |
R25 |
: NamespaceAliasDefinition |
| 29 |
R26 |
: UsingDeclaration |
| 30 |
R27 |
: UsingDirective |
| 31 |
R28 |
: AsmDefinition |
| 32 |
|
; |
| 33 |
|
|
| 34 |
4008 |
SimpleDeclaration |
| 35 |
R29 |
: ';' |
| 36 |
R30 |
: InitDeclaratorsList ';' // All declarators in this rule should be overloaded conversions. |
| 37 |
R31 |
: DeclTypeSpecifier ';' // DeclTypeSpecifier in this rule should be either enum or class. |
| 38 |
R32 |
: DeclTypeSpecifier InitDeclaratorsList ';' |
| 39 |
|
; |
| 40 |
|
|
| 41 |
4009 |
DeclTypeSpecifier |
| 42 |
R33 |
: DeclPrefix |
| 43 |
R34 |
: FunctionSpecifier |
| 44 |
R35 |
: StorageClassSpecifier |
| 45 |
|
/*+*/ |
| 46 |
R36 |
: CONST |
| 47 |
R37 |
: VOLATILE |
| 48 |
R38 |
: BuiltInTypeSpecifier [dsb1-identifier, dsb2-'(', dsb3-'::', dsb4-CHAR, dsb5-DOUBLE, dsb6-FLOAT, dsb7-INT, dsb8-LONG] |
| 49 |
|
[dsb9-SHORT, dsb10-SIGNED, dsb11-UNSIGNED, dsb12-VOID, dsb13-WCHAR, dsb14-BOOL, dsb15-TYPENAME] |
| 50 |
R39 |
: NamedTypeSpecifier [dsn1-identifier, dsn2-'(', dsn3-'::', dsn4-CHAR, dsn5-DOUBLE, dsn6-FLOAT, dsn7-INT, dsn8-LONG] |
| 51 |
|
[dsn9-SHORT, dsn10-SIGNED, dsn11-UNSIGNED, dsn12-VOID, dsn13-WCHAR, dsn14-BOOL, dsn15-TYPENAME] |
| 52 |
|
/*+*/ |
| 53 |
R40 |
: ElaboratedTypeSpecifier |
| 54 |
R41 |
: EnumSpecifier |
| 55 |
R42 |
: ClassSpecifier |
| 56 |
|
/*+*/ |
| 57 |
R43 |
: DeclTypeSpecifier DeclPrefix |
| 58 |
R44 |
: DeclTypeSpecifier FunctionSpecifier |
| 59 |
R45 |
: DeclTypeSpecifier StorageClassSpecifier |
| 60 |
|
/*+*/ |
| 61 |
R46 |
: DeclTypeSpecifier CONST |
| 62 |
R47 |
: DeclTypeSpecifier VOLATILE |
| 63 |
R48 |
: DeclTypeSpecifier BuiltInTypeSpecifier |
| 64 |
R49 |
: DeclTypeSpecifier NamedTypeSpecifier |
| 65 |
|
/*+*/ |
| 66 |
R50 |
: DeclTypeSpecifier ElaboratedTypeSpecifier |
| 67 |
R51 |
: DeclTypeSpecifier EnumSpecifier |
| 68 |
R52 |
: DeclTypeSpecifier ClassSpecifier |
| 69 |
|
; |
| 70 |
|
|
| 71 |
4010 |
DeclPrefix |
| 72 |
R53 |
: TYPEDEF |
| 73 |
R54 |
: FRIEND |
| 74 |
|
; |
| 75 |
|
|
| 76 |
4011 |
FunctionSpecifier |
| 77 |
R55 |
: INLINE |
| 78 |
R56 |
: VIRTUAL |
| 79 |
R57 |
: EXPLICIT |
| 80 |
|
; |
| 81 |
|
|
| 82 |
4012 |
StorageClassSpecifier |
| 83 |
R58 |
: REGISTER |
| 84 |
R59 |
: AUTO |
| 85 |
R60 |
: STATIC |
| 86 |
R61 |
: EXTERN |
| 87 |
R62 |
: MUTABLE |
| 88 |
|
; |
| 89 |
|
|
| 90 |
4013 |
TypeSpecifier |
| 91 |
R63 |
: CONST |
| 92 |
R64 |
: VOLATILE |
| 93 |
R65 |
: BuiltInTypeSpecifier [tsb1-identifier, tsb2-'(', tsb3-'::', tsb4-CHAR, tsb5-DOUBLE, tsb6-FLOAT, tsb7-INT, tsb8-LONG] |
| 94 |
|
[tsb9-SHORT, tsb10-SIGNED, tsb11-UNSIGNED, tsb12-VOID, tsb13-WCHAR, tsb14-BOOL, tsb15-TYPENAME] |
| 95 |
R66 |
: NamedTypeSpecifier [tsn1-identifier, tsn2-'(', tsn3-'::', tsn4-CHAR, tsn5-DOUBLE, tsn6-FLOAT, tsn7-INT, tsn8-LONG] |
| 96 |
|
[tsn9-SHORT, tsn10-SIGNED, tsn11-UNSIGNED, tsn12-VOID, tsn13-WCHAR, tsn14-BOOL, tsn15-TYPENAME] |
| 97 |
|
/*+*/ |
| 98 |
R67 |
: ElaboratedTypeSpecifier |
| 99 |
R68 |
: EnumSpecifier |
| 100 |
R69 |
: ClassSpecifier |
| 101 |
|
/*+*/ |
| 102 |
R70 |
: TypeSpecifier CONST |
| 103 |
R71 |
: TypeSpecifier VOLATILE |
| 104 |
R72 |
: TypeSpecifier BuiltInTypeSpecifier |
| 105 |
R73 |
: TypeSpecifier NamedTypeSpecifier |
| 106 |
|
/*+*/ |
| 107 |
R74 |
: TypeSpecifier ElaboratedTypeSpecifier |
| 108 |
R75 |
: TypeSpecifier EnumSpecifier |
| 109 |
R76 |
: TypeSpecifier ClassSpecifier |
| 110 |
|
; |
| 111 |
|
|
| 112 |
4014 |
SimpleTypeSpecifier |
| 113 |
R77 |
: BuiltInTypeSpecifier [dsb1-identifier, dsb2-'(', dsb3-'::', dsb4-CHAR, dsb5-DOUBLE, dsb6-FLOAT, dsb7-INT, dsb8-LONG] |
| 114 |
|
[dsb9-SHORT, dsb10-SIGNED, dsb11-UNSIGNED, dsb12-VOID, dsb13-WCHAR, dsb14-BOOL, dsb15-TYPENAME] |
| 115 |
|
[tsb1-identifier, tsb2-'(', tsb3-'::', tsb4-CHAR, tsb5-DOUBLE, tsb6-FLOAT, tsb7-INT, tsb8-LONG] |
| 116 |
|
[tsb9-SHORT, tsb10-SIGNED, tsb11-UNSIGNED, tsb12-VOID, tsb13-WCHAR, tsb14-BOOL, tsb15-TYPENAME] |
| 117 |
R78 |
: NamedTypeSpecifier [dsn1-identifier, dsn2-'(', dsn3-'::', dsn4-CHAR, dsn5-DOUBLE, dsn6-FLOAT, dsn7-INT, dsn8-LONG] |
| 118 |
|
[dsn9-SHORT, dsn10-SIGNED, dsn11-UNSIGNED, dsn12-VOID, dsn13-WCHAR, dsn14-BOOL, dsn15-TYPENAME] |
| 119 |
|
[tsn1-identifier, tsn2-'(', tsn3-'::', tsn4-CHAR, tsn5-DOUBLE, tsn6-FLOAT, tsn7-INT, tsn8-LONG] |
| 120 |
|
[tsn9-SHORT, tsn10-SIGNED, tsn11-UNSIGNED, tsn12-VOID, tsn13-WCHAR, tsn14-BOOL, tsn15-TYPENAME] |
| 121 |
|
/*+*/ |
| 122 |
R79 |
: SimpleTypeSpecifier BuiltInTypeSpecifier |
| 123 |
R80 |
: SimpleTypeSpecifier NamedTypeSpecifier |
| 124 |
|
; |
| 125 |
|
|
| 126 |
4015 |
BuiltInTypeSpecifier |
| 127 |
R81 |
: VOID |
| 128 |
R82 |
: BOOL |
| 129 |
R83 |
: CHAR |
| 130 |
R84 |
: WCHAR |
| 131 |
R85 |
: SHORT |
| 132 |
R86 |
: INT |
| 133 |
R87 |
: LONG |
| 134 |
R88 |
: SIGNED |
| 135 |
R89 |
: UNSIGNED |
| 136 |
R90 |
: FLOAT |
| 137 |
R91 |
: DOUBLE |
| 138 |
|
; |
| 139 |
|
|
| 140 |
4016 |
NamedTypeSpecifier |
| 141 |
R92 |
: SimpleOrQualifiedId [qmq1-'::', est1-';', est2-'...', est3-',', est4-'(', est5-')'] |
| 142 |
|
[est6-'*', est7-'&', est8-'>', est9-':', est10-'[', est11-'='] |
| 143 |
R93 |
: TYPENAME SimpleOrQualifiedId [qmq4-'::', etpe-'('] |
| 144 |
|
; |
| 145 |
|
|
| 146 |
4017 |
ElaboratedTypeSpecifier |
| 147 |
R94 |
: ENUM SimpleOrQualifiedId [qmq2-'::', ehar-':', ehfd-'{'] |
| 148 |
R95 |
: ClassKey SimpleOrQualifiedId [qmq3-'::', eich-':', chfd-'{'] |
| 149 |
|
; |
| 150 |
|
|
| 151 |
4018 |
UsingDeclaration |
| 152 |
R96 |
: USING ExpressionId ';' |
| 153 |
R97 |
: USING TYPENAME ExpressionId ';' |
| 154 |
|
; |
| 155 |
|
|
| 156 |
4019 |
UsingDirective |
| 157 |
R98 |
: USING NAMESPACE SimpleOrQualifiedId ';' |
| 158 |
|
; |
| 159 |
|
|
| 160 |
4020 |
AsmDefinition |
| 161 |
R99 |
: ASM '(' StringsSeq ')' ';' |
| 162 |
|
; |
| 163 |
|
|
| 164 |
4021 |
LinkageSpecification |
| 165 |
R100 |
: LinkageSpecHeader '{' '}' |
| 166 |
R101 |
: LinkageSpecHeader '{' DeclarationsSeq '}' |
| 167 |
R102 |
: LinkageSpecHeader Declaration |
| 168 |
|
; |
| 169 |
|
|
| 170 |
4022 |
LinkageSpecHeader |
| 171 |
R103 |
: EXTERN StringsSeq |
| 172 |
|
; |
| 173 |
|
|
| 174 |
|
|
| 1 |
|
// |
| 2 |
|
// Cpp-04. Declarators. |
| 3 |
|
// |
| 4 |
|
|
| 5 |
|
|
| 6 |
|
|
| 7 |
|
public InitDeclaratorsList, Declarator, AbstractDeclarator; |
| 8 |
|
public PtrOperator, ParameterDeclaration, TypeId; |
| 9 |
|
|
| 10 |
4023 |
InitDeclaratorsList |
| 11 |
R104 |
: InitDeclarator |
| 12 |
R105 |
: InitDeclaratorsList ',' InitDeclarator |
| 13 |
|
; |
| 14 |
|
|
| 15 |
4024 |
InitDeclarator |
| 16 |
R106 |
: UninitedDeclarator |
| 17 |
R107 |
: UninitedDeclarator Initializer |
| 18 |
|
; |
| 19 |
|
|
| 20 |
4025 |
UninitedDeclarator |
| 21 |
R108 |
: Declarator |
| 22 |
|
; |
| 23 |
|
|
| 24 |
4026 |
Declarator |
| 25 |
R109 |
: DirectDeclarator [dpdc-'('] __id(rcpp_DirDeclDecl) |
| 26 |
R110 |
: PtrOperator Declarator |
| 27 |
|
; |
| 28 |
|
|
| 29 |
4027 |
DirectDeclarator |
| 30 |
R111 |
: ExpressionId [dpe1-';', dpe2-',', dpe3-'(', dpe4-')', dpe5-'[', dpe6-'='] |
| 31 |
|
/*+*/ |
| 32 |
R112 |
: DirectDeclarator '[' ']' |
| 33 |
R113 |
: DirectDeclarator '[' ConstantExpressionsList ']' |
| 34 |
|
/*+*/ |
| 35 |
R114 |
: DirectDeclarator ParameterDeclarationClause |
| 36 |
R115 |
: DirectDeclarator ParameterDeclarationClause ExceptionsSpecification |
| 37 |
R116 |
: DirectDeclarator ParameterDeclarationClause CvQualifier |
| 38 |
R117 |
: DirectDeclarator ParameterDeclarationClause CvQualifier ExceptionsSpecification |
| 39 |
|
/*+*/ |
| 40 |
R118 |
: '(' Declarator ')' |
| 41 |
|
; |
| 42 |
|
|
| 43 |
4028 |
AbstractDeclarator |
| 44 |
R119 |
: DirectAbstractDeclarator |
| 45 |
R120 |
: PtrOperator |
| 46 |
R121 |
: PtrOperator AbstractDeclarator |
| 47 |
|
; |
| 48 |
|
|
| 49 |
4029 |
DirectAbstractDeclarator |
| 50 |
R122 |
: '[' ']' |
| 51 |
R123 |
: '[' ConstantExpressionsList ']' |
| 52 |
R124 |
: DirectAbstractDeclarator '[' ']' |
| 53 |
R125 |
: DirectAbstractDeclarator '[' ConstantExpressionsList ']' |
| 54 |
|
/*+*/ |
| 55 |
R126 |
: ParameterDeclarationClause |
| 56 |
R127 |
: ParameterDeclarationClause ExceptionsSpecification |
| 57 |
R128 |
: ParameterDeclarationClause CvQualifier |
| 58 |
R129 |
: ParameterDeclarationClause CvQualifier ExceptionsSpecification |
| 59 |
R130 |
: DirectAbstractDeclarator ParameterDeclarationClause |
| 60 |
R131 |
: DirectAbstractDeclarator ParameterDeclarationClause ExceptionsSpecification |
| 61 |
R132 |
: DirectAbstractDeclarator ParameterDeclarationClause CvQualifier |
| 62 |
R133 |
: DirectAbstractDeclarator ParameterDeclarationClause CvQualifier ExceptionsSpecification |
| 63 |
|
/*+*/ |
| 64 |
R134 |
: '(' AbstractDeclarator ')' |
| 65 |
|
; |
| 66 |
|
|
| 67 |
4030 |
PtrOperator |
| 68 |
R135 |
: [pct1, pct2, pnti, pndc] '*' [pus1-identifier, pus2-'(', pus3-'~', pus4-'*', pus5-'&', pus6-'::', pus7-OPERATOR] __id(rcpp_PtrOpStar) |
| 69 |
R136 |
: [pct1, pct2, pnti, pndc] '*' CvQualifier |
| 70 |
R137 |
: [rct1, rct2, rnti, rndc] '&' [rua1-identifier, rua2-'(', rua3-'~', rua4-'*', rua5-'&', rua6-'::', rua7-OPERATOR] |
| 71 |
R138 |
: SimpleOrQualifiedId [qmq1*] '::' '*' |
| 72 |
R139 |
: SimpleOrQualifiedId [qmq1*] '::' '*' CvQualifier |
| 73 |
R140 |
: ClassKey SimpleOrQualifiedId [qmq3*] '::' '*' |
| 74 |
R141 |
: ClassKey SimpleOrQualifiedId [qmq3*] '::' '*' CvQualifier |
| 75 |
|
; |
| 76 |
|
|
| 77 |
4031 |
CvQualifier |
| 78 |
R142 |
: CONST |
| 79 |
R143 |
: VOLATILE |
| 80 |
R144 |
: CONST VOLATILE |
| 81 |
R145 |
: VOLATILE CONST |
| 82 |
|
; |
| 83 |
|
|
| 84 |
4032 |
ParameterDeclarationClause |
| 85 |
R146 |
: ParameterDeclarationHeader ')' |
| 86 |
R147 |
: ParameterDeclarationHeader '...' ')' |
| 87 |
R148 |
: ParameterDeclarationHeader ParameterDeclarationsList ')' |
| 88 |
R149 |
: ParameterDeclarationHeader ParameterDeclarationsList '...' ')' |
| 89 |
R150 |
: ParameterDeclarationHeader ParameterDeclarationsList ',' '...' ')' |
| 90 |
|
; |
| 91 |
|
|
| 92 |
4033 |
ParameterDeclarationHeader |
| 93 |
R151 |
: [dpdc] '(' [phed1-identifier, phed2-'::', phed3-STRUCT, phed4-UNION, phed5-CLASS] |
| 94 |
|
; |
| 95 |
|
|
| 96 |
4034 |
ParameterDeclarationsList |
| 97 |
R152 |
: ParameterDeclaration |
| 98 |
R153 |
: ParameterDeclarationsList ',' ParameterDeclaration |
| 99 |
|
; |
| 100 |
|
|
| 101 |
4035 |
ParameterDeclaration |
| 102 |
R154 |
: UninitedParameter |
| 103 |
R155 |
: UninitedParameter '=' AssignmentExpression |
| 104 |
|
; |
| 105 |
|
|
| 106 |
4036 |
UninitedParameter |
| 107 |
R156 |
: TypeSpecifier |
| 108 |
R157 |
: TypeSpecifier Declarator |
| 109 |
R158 |
: TypeSpecifier AbstractDeclarator |
| 110 |
|
; |
| 111 |
|
|
| 112 |
4037 |
ExceptionsSpecification |
| 113 |
R159 |
: THROW '(' ')' |
| 114 |
R160 |
: THROW '(' ExceptionTypeIdsList ')' |
| 115 |
|
; |
| 116 |
|
|
| 117 |
4038 |
ExceptionTypeIdsList |
| 118 |
R161 |
: TypeId |
| 119 |
R162 |
: ExceptionTypeIdsList ',' TypeId |
| 120 |
|
; |
| 121 |
|
|
| 122 |
4039 |
TypeId |
| 123 |
R163 |
: TypeSpecifier |
| 124 |
R164 |
: TypeSpecifier AbstractDeclarator |
| 125 |
|
; |
| 126 |
|
|
| 127 |
4040 |
Initializer |
| 128 |
R165 |
: '=' InitializerClause |
| 129 |
R166 |
: '(' ExpressionsList ')' // Note that expression in this rule cannot be empty. |
| 130 |
|
; |
| 131 |
|
|
| 132 |
4041 |
InitializerClause |
| 133 |
R167 |
: AssignmentExpression |
| 134 |
|
/*+*/ |
| 135 |
R168 |
: '{' '}' |
| 136 |
R169 |
: '{' InitializersList '}' |
| 137 |
R170 |
: '{' InitializersList ',' '}' |
| 138 |
|
; |
| 139 |
|
|
| 140 |
4042 |
InitializersList |
| 141 |
R171 |
: InitializerClause |
| 142 |
R172 |
: InitializersList ',' InitializerClause |
| 143 |
|
; |
| 144 |
|
|
| 145 |
|
|
| 1 |
|
// |
| 2 |
|
// Cpp-05. Namespaces. |
| 3 |
|
// |
| 4 |
|
|
| 5 |
|
|
| 6 |
|
|
| 7 |
|
public NamespaceDefinition; |
| 8 |
|
public NamespaceAliasDefinition; |
| 9 |
|
|
| 10 |
4043 |
NamespaceDefinition |
| 11 |
R173 |
: NamespaceHeader '}' |
| 12 |
R174 |
: NamespaceHeader DeclarationsSeq '}' |
| 13 |
|
; |
| 14 |
|
|
| 15 |
4044 |
NamespaceHeader |
| 16 |
R175 |
: NAMESPACE '{' |
| 17 |
R176 |
: NAMESPACE identifier '{' |
| 18 |
|
; |
| 19 |
|
|
| 20 |
4045 |
NamespaceAliasDefinition |
| 21 |
R177 |
: NAMESPACE identifier '=' SimpleOrQualifiedId ';' |
| 22 |
|
; |
| 23 |
|
|
| 24 |
|
|
| 1 |
|
// |
| 2 |
|
// Cpp-06. Enums. |
| 3 |
|
// |
| 4 |
|
|
| 5 |
|
|
| 6 |
|
|
| 7 |
|
public EnumSpecifier; |
| 8 |
|
|
| 9 |
4046 |
EnumSpecifier |
| 10 |
R178 |
: EnumeratorHeader '}' |
| 11 |
R179 |
: EnumeratorHeader EnumeratorsList '}' |
| 12 |
R180 |
: EnumeratorHeader EnumeratorsList ',' '}' |
| 13 |
|
; |
| 14 |
|
|
| 15 |
4047 |
EnumeratorHeader |
| 16 |
R181 |
: ENUM '{' |
| 17 |
R182 |
: ENUM ':' SimpleTypeSpecifier '{' |
| 18 |
R183 |
: ENUM SimpleOrQualifiedId [ehfd] '{' |
| 19 |
R184 |
: ENUM SimpleOrQualifiedId [ehar] ':' SimpleTypeSpecifier '{' |
| 20 |
|
; |
| 21 |
|
|
| 22 |
4048 |
EnumeratorsList |
| 23 |
R185 |
: EnumeratorDefinition |
| 24 |
R186 |
: EnumeratorsList ',' EnumeratorDefinition |
| 25 |
|
; |
| 26 |
|
|
| 27 |
4049 |
EnumeratorDefinition |
| 28 |
R187 |
: identifier |
| 29 |
R188 |
: identifier '=' ConstantExpression |
| 30 |
|
; |
| 31 |
|
|
| 32 |
|
|
| 1 |
|
// |
| 2 |
|
// Cpp-07. Classes. |
| 3 |
|
// |
| 4 |
|
|
| 5 |
|
|
| 6 |
|
|
| 7 |
|
public ClassSpecifier, ClassKey, MemberDeclaration; |
| 8 |
|
|
| 9 |
4050 |
ClassSpecifier |
| 10 |
R189 |
: ClassHeader '}' |
| 11 |
R190 |
: ClassHeader MemberDeclarationsSeq '}' |
| 12 |
|
; |
| 13 |
|
|
| 14 |
4051 |
ClassHeader |
| 15 |
R191 |
: ClassKey '{' |
| 16 |
R192 |
: ClassKey ':' BaseClassSpecifiersList '{' |
| 17 |
R193 |
: ClassKey SimpleOrQualifiedId [chfd] '{' |
| 18 |
R194 |
: ClassKey SimpleOrQualifiedId [eich] ':' BaseClassSpecifiersList '{' |
| 19 |
|
; |
| 20 |
|
|
| 21 |
4052 |
ClassKey |
| 22 |
R195 |
: [phed3] STRUCT |
| 23 |
R196 |
: [phed4] UNION |
| 24 |
R197 |
: [phed5] CLASS [cktp-identifier] |
| 25 |
|
; |
| 26 |
|
|
| 27 |
4053 |
MemberDeclarationsSeq |
| 28 |
R198 |
: MemberDeclaration |
| 29 |
R199 |
: MemberDeclarationsSeq MemberDeclaration |
| 30 |
|
; |
| 31 |
|
|
| 32 |
4054 |
MemberDeclaration |
| 33 |
R200 |
: AccessSpecifier ':' |
| 34 |
R201 |
: SimpleMemberDeclaration |
| 35 |
R202 |
: FunctionDefinition |
| 36 |
R203 |
: MemberTemplateDeclaration |
| 37 |
R204 |
: MemberExplicitInstantiation |
| 38 |
R205 |
: UsingDeclaration |
| 39 |
|
; |
| 40 |
|
|
| 41 |
4055 |
AccessSpecifier |
| 42 |
R206 |
: PUBLIC |
| 43 |
R207 |
: PROTECTED |
| 44 |
R208 |
: PRIVATE |
| 45 |
|
; |
| 46 |
|
|
| 47 |
4056 |
SimpleMemberDeclaration |
| 48 |
R209 |
: ';' |
| 49 |
R210 |
: MemberDeclaratorsList ';' // All declarators in this rule should be: ctors, dectors, overloaded conversions. |
| 50 |
R211 |
: DeclTypeSpecifier ';' // DeclTypeSpecifier in this rule should be either enum or class. |
| 51 |
R212 |
: DeclTypeSpecifier MemberDeclaratorsList ';' |
| 52 |
|
; |
| 53 |
|
|
| 54 |
4057 |
MemberDeclaratorsList |
| 55 |
R213 |
: MemberDeclarator |
| 56 |
R214 |
: MemberDeclaratorsList ',' MemberDeclarator |
| 57 |
|
; |
| 58 |
|
|
| 59 |
4058 |
MemberDeclarator |
| 60 |
R215 |
: Declarator |
| 61 |
R216 |
: Declarator ConstantInitializer |
| 62 |
|
/*+*/ |
| 63 |
R217 |
: ':' ConstantExpression |
| 64 |
R218 |
: identifier [mdfd] ':' ConstantExpression |
| 65 |
|
; |
| 66 |
|
|
| 67 |
4059 |
ConstantInitializer |
| 68 |
R219 |
: '=' ConstantExpression // This initializer is also used for defining pure functions. |
| 69 |
|
; |
| 70 |
|
|
| 71 |
4060 |
BaseClassSpecifiersList |
| 72 |
R220 |
: BaseClassSpecifier |
| 73 |
R221 |
: BaseClassSpecifiersList ',' BaseClassSpecifier |
| 74 |
|
; |
| 75 |
|
|
| 76 |
4061 |
BaseClassSpecifier |
| 77 |
R222 |
: SimpleOrQualifiedId |
| 78 |
R223 |
: VIRTUAL SimpleOrQualifiedId |
| 79 |
R224 |
: AccessSpecifier SimpleOrQualifiedId |
| 80 |
R225 |
: VIRTUAL AccessSpecifier SimpleOrQualifiedId |
| 81 |
R226 |
: AccessSpecifier VIRTUAL SimpleOrQualifiedId |
| 82 |
|
; |
| 83 |
|
|
| 84 |
|
|
| 1 |
|
// |
| 2 |
|
// Cpp-08. Templates. |
| 3 |
|
// |
| 4 |
|
|
| 5 |
|
|
| 6 |
|
|
| 7 |
|
public TemplateDeclaration, MemberTemplateDeclaration; |
| 8 |
|
public TemplateParamsListHeader, TemplateId, TemplateArgumentsList; |
| 9 |
|
public ExplicitInstantiation, MemberExplicitInstantiation; |
| 10 |
|
|
| 11 |
4062 |
TemplateDeclaration |
| 12 |
R227 |
: TemplateDeclarationHeader Declaration |
| 13 |
|
; |
| 14 |
|
|
| 15 |
4063 |
MemberTemplateDeclaration |
| 16 |
R228 |
: TemplateDeclarationHeader MemberDeclaration |
| 17 |
|
; |
| 18 |
|
|
| 19 |
4064 |
TemplateDeclarationHeader |
| 20 |
R229 |
: TEMPLATE TemplateParamsListHeader '>' |
| 21 |
R230 |
: EXPORT TEMPLATE TemplateParamsListHeader '>' |
| 22 |
R231 |
: TEMPLATE TemplateParamsListHeader TemplateParametersList '>' |
| 23 |
R232 |
: EXPORT TEMPLATE TemplateParamsListHeader TemplateParametersList '>' |
| 24 |
|
; |
| 25 |
|
|
| 26 |
4065 |
TemplateParamsListHeader |
| 27 |
R233 |
: [eitp, oftp, cftp] '<' |
| 28 |
|
; |
| 29 |
|
|
| 30 |
4066 |
TemplateParametersList |
| 31 |
R234 |
: TemplateParameter |
| 32 |
R235 |
: TemplateParametersList ',' TemplateParameter |
| 33 |
|
; |
| 34 |
|
|
| 35 |
4067 |
TemplateParameter |
| 36 |
R236 |
: ParameterDeclaration |
| 37 |
R237 |
: TemplateTypeParameter |
| 38 |
R238 |
: TemplateTemplateParameter |
| 39 |
|
; |
| 40 |
|
|
| 41 |
4068 |
TemplateTypeParameter |
| 42 |
R239 |
: CLASS |
| 43 |
R240 |
: CLASS '=' TypeId |
| 44 |
R241 |
: CLASS [cktp] identifier |
| 45 |
R242 |
: CLASS [cktp] identifier '=' TypeId |
| 46 |
|
/*+*/ |
| 47 |
R243 |
: TYPENAME |
| 48 |
R244 |
: TYPENAME '=' TypeId |
| 49 |
R245 |
: TYPENAME identifier [tdp2-',', tdp3-'>'] |
| 50 |
R246 |
: TYPENAME identifier [tdp1] '=' TypeId |
| 51 |
|
; |
| 52 |
|
|
| 53 |
4069 |
TemplateTemplateParameter |
| 54 |
R247 |
: TEMPLATE TemplateParamsListHeader TemplateParametersList '>' ClassKey |
| 55 |
R248 |
: TEMPLATE TemplateParamsListHeader TemplateParametersList '>' ClassKey '=' SimpleOrQualifiedId |
| 56 |
R249 |
: TEMPLATE TemplateParamsListHeader TemplateParametersList '>' ClassKey identifier |
| 57 |
R250 |
: TEMPLATE TemplateParamsListHeader TemplateParametersList '>' ClassKey identifier '=' SimpleOrQualifiedId |
| 58 |
|
; |
| 59 |
|
|
| 60 |
4070 |
ExplicitInstantiation |
| 61 |
R251 |
: ExplicitInstantiationHeader Declaration |
| 62 |
|
; |
| 63 |
|
|
| 64 |
4071 |
MemberExplicitInstantiation |
| 65 |
R252 |
: ExplicitInstantiationHeader MemberDeclaration |
| 66 |
|
; |
| 67 |
|
|
| 68 |
4072 |
ExplicitInstantiationHeader |
| 69 |
R253 |
: TEMPLATE |
| 70 |
|
; |
| 71 |
|
|
| 72 |
4073 |
TemplateId |
| 73 |
R254 |
: [phed1] identifier TemplateParamsListHeader '>' |
| 74 |
R255 |
: [phed1] identifier TemplateParamsListHeader TemplateArgumentsList '>' |
| 75 |
|
; |
| 76 |
|
|
| 77 |
4074 |
TemplateArgumentsList |
| 78 |
R256 |
: TemplateArgument |
| 79 |
R257 |
: TemplateArgumentsList ',' TemplateArgument |
| 80 |
|
; |
| 81 |
|
|
| 82 |
4075 |
TemplateArgument |
| 83 |
R258 |
: AssignmentExpression // This is data field argument. |
| 84 |
R259 |
: TypeId // This is type argument. |
| 85 |
R260 |
: SimpleOrQualifiedId // This is class template argument. |
| 86 |
|
; |
| 87 |
|
|
| 88 |
|
|
| 1 |
|
// |
| 2 |
|
// Cpp-09. Functions. |
| 3 |
|
// |
| 4 |
|
|
| 5 |
|
|
| 6 |
|
|
| 7 |
|
public FunctionDefinition, OperatorFunctionId, ConversionFunctionId; |
| 8 |
|
|
| 9 |
4076 |
FunctionDefinition |
| 10 |
R261 |
: FunctionHeader CompoundStatement |
| 11 |
R262 |
: FunctionHeader ':' MemberInitsList CompoundStatement |
| 12 |
R263 |
: FunctionHeader TRY CompoundStatement ExceptionHandlersSeq |
| 13 |
R264 |
: FunctionHeader TRY ':' MemberInitsList CompoundStatement ExceptionHandlersSeq |
| 14 |
|
; |
| 15 |
|
|
| 16 |
4077 |
FunctionHeader |
| 17 |
R265 |
: Declarator // Declarator in this rule should be: ctor, dector or overloaded conversion. |
| 18 |
R266 |
: DeclTypeSpecifier Declarator // This should be either a regular function or an overlodaed operator. |
| 19 |
|
; |
| 20 |
|
|
| 21 |
4078 |
MemberInitsList |
| 22 |
R267 |
: MemberInitializer |
| 23 |
R268 |
: MemberInitsList ',' MemberInitializer |
| 24 |
|
; |
| 25 |
|
|
| 26 |
4079 |
MemberInitializer |
| 27 |
R269 |
: SimpleOrQualifiedId '(' ')' |
| 28 |
R270 |
: SimpleOrQualifiedId '(' ExpressionsList ')' |
| 29 |
|
; |
| 30 |
|
|
| 31 |
4080 |
OperatorFunctionId |
| 32 |
R271 |
: OPERATOR OverloadableOperator [oftp-'<'] |
| 33 |
|
/*+*/ |
| 34 |
R272 |
: OPERATOR OverloadableOperator TemplateParamsListHeader '>' |
| 35 |
R273 |
: OPERATOR OverloadableOperator TemplateParamsListHeader TemplateArgumentsList '>' |
| 36 |
|
; |
| 37 |
|
|
| 38 |
4081 |
OverloadableOperator |
| 39 |
R274 |
: NEW [nain-'['] | NEW [nain] '[' ']' |
| 40 |
R276 |
: DELETE [daid-'['] | DELETE [daid] '[' ']' |
| 41 |
|
/*+*/ |
| 42 |
R278 |
: '+' | '-' | '*' | '/' | '%' | '^' | '&' | '|' | '~' |
| 43 |
R287 |
: '!' | '=' | '<' | '>' | '+=' | '-=' | '*=' | '/=' | '%=' |
| 44 |
R296 |
: '^=' | '&=' | '|=' | '<<' | '>>' | '<<=' | '>>=' | '==' | '!=' |
| 45 |
R305 |
: '<=' | '>=' | '&&' | '||' | '++' | '--' | ',' | '->*' | '->' |
| 46 |
|
/*+*/ |
| 47 |
R314 |
: '(' ')' | '[' ']' |
| 48 |
|
; |
| 49 |
|
|
| 50 |
4082 |
ConversionFunctionId |
| 51 |
R316 |
: OPERATOR ConversionTypeId [cftp-'<'] |
| 52 |
|
/*+*/ |
| 53 |
R317 |
: OPERATOR ConversionTypeId TemplateParamsListHeader '>' |
| 54 |
R318 |
: OPERATOR ConversionTypeId TemplateParamsListHeader TemplateArgumentsList '>' |
| 55 |
|
; |
| 56 |
|
|
| 57 |
4083 |
ConversionTypeId |
| 58 |
R319 |
: TypeSpecifier [pct1-'*', rct1-'&'] |
| 59 |
R320 |
: TypeSpecifier ConversionDeclarator [pct2-'*', rct2-'&'] |
| 60 |
|
; |
| 61 |
|
|
| 62 |
4084 |
ConversionDeclarator |
| 63 |
R321 |
: PtrOperator |
| 64 |
R322 |
: ConversionDeclarator PtrOperator |
| 65 |
|
; |
| 66 |
|
|
| 67 |
|
|
| 1 |
|
// |
| 2 |
|
// Cpp-10. Statements. |
| 3 |
|
// |
| 4 |
|
|
| 5 |
|
|
| 6 |
|
|
| 7 |
|
public CompoundStatement; |
| 8 |
|
public ExceptionHandlersSeq; |
| 9 |
|
|
| 10 |
4085 |
Statement |
| 11 |
R323 |
: CompoundStatement |
| 12 |
R324 |
: LabeledStatement |
| 13 |
R325 |
: BlockDeclaration |
| 14 |
R326 |
: ExpressionStatement |
| 15 |
R327 |
: SelectionStatement |
| 16 |
R328 |
: IterationStatement |
| 17 |
R329 |
: JumpStatement |
| 18 |
R330 |
: TryBlock |
| 19 |
|
; |
| 20 |
|
|
| 21 |
4086 |
CompoundStatement |
| 22 |
R331 |
: CompoundStatementHeader '}' |
| 23 |
R332 |
: CompoundStatementHeader StatementsSeq '}' |
| 24 |
|
; |
| 25 |
|
|
| 26 |
4087 |
CompoundStatementHeader |
| 27 |
R333 |
: '{' |
| 28 |
|
; |
| 29 |
|
|
| 30 |
4088 |
StatementsSeq |
| 31 |
R334 |
: Statement |
| 32 |
R335 |
: StatementsSeq Statement |
| 33 |
|
; |
| 34 |
|
|
| 35 |
4089 |
LabeledStatement |
| 36 |
R336 |
: identifier ':' Statement |
| 37 |
R337 |
: CASE ConstantExpression ':' Statement |
| 38 |
R338 |
: DEFAULT ':' Statement |
| 39 |
|
; |
| 40 |
|
|
| 41 |
4090 |
ExpressionStatement |
| 42 |
R339 |
: ExpressionsList ';' |
| 43 |
|
; |
| 44 |
|
|
| 45 |
4091 |
SelectionStatement |
| 46 |
R340 |
: IF '(' Condition ')' Statement [sebe-ELSE] |
| 47 |
R341 |
: IF '(' Condition ')' Statement [sebe] ELSE Statement |
| 48 |
R342 |
: SWITCH '(' Condition ')' Statement |
| 49 |
|
; |
| 50 |
|
|
| 51 |
4092 |
IterationStatement |
| 52 |
R343 |
: FOR '(' ForInitStatement ';' ')' Statement |
| 53 |
R344 |
: FOR '(' ForInitStatement ';' Expression ')' Statement |
| 54 |
R345 |
: FOR '(' ForInitStatement Condition ';' ')' Statement |
| 55 |
R346 |
: FOR '(' ForInitStatement Condition ';' Expression ')' Statement |
| 56 |
|
/*+*/ |
| 57 |
R347 |
: WHILE '(' Condition ')' Statement |
| 58 |
R348 |
: DoStatementBody WHILE '(' Expression ')' ';' |
| 59 |
|
; |
| 60 |
|
|
| 61 |
4093 |
ForInitStatement |
| 62 |
R349 |
: SimpleDeclaration |
| 63 |
R350 |
: ExpressionStatement |
| 64 |
|
; |
| 65 |
|
|
| 66 |
4094 |
Condition |
| 67 |
R351 |
: Expression |
| 68 |
R352 |
: UninitedCondition '=' AssignmentExpression |
| 69 |
|
; |
| 70 |
|
|
| 71 |
4095 |
UninitedCondition |
| 72 |
R353 |
: TypeSpecifier Declarator |
| 73 |
|
; |
| 74 |
|
|
| 75 |
4096 |
DoStatementBody |
| 76 |
R354 |
: DO Statement |
| 77 |
|
; |
| 78 |
|
|
| 79 |
4097 |
JumpStatement |
| 80 |
R355 |
: GOTO identifier ';' |
| 81 |
R356 |
: BREAK ';' |
| 82 |
R357 |
: CONTINUE ';' |
| 83 |
R358 |
: RETURN ';' |
| 84 |
R359 |
: RETURN Expression ';' |
| 85 |
|
; |
| 86 |
|
|
| 87 |
4098 |
TryBlock |
| 88 |
R360 |
: TRY CompoundStatement ExceptionHandlersSeq |
| 89 |
|
; |
| 90 |
|
|
| 91 |
4099 |
ExceptionHandlersSeq |
| 92 |
R361 |
: ExceptionHandler |
| 93 |
R362 |
: ExceptionHandlersSeq ExceptionHandler |
| 94 |
|
; |
| 95 |
|
|
| 96 |
4100 |
ExceptionHandler |
| 97 |
R363 |
: ExceptionHandlerHeader CompoundStatement |
| 98 |
|
; |
| 99 |
|
|
| 100 |
4101 |
ExceptionHandlerHeader |
| 101 |
R364 |
: CATCH '(' TypeSpecifier ')' |
| 102 |
R365 |
: CATCH '(' TypeSpecifier Declarator ')' |
| 103 |
R366 |
: CATCH '(' TypeSpecifier AbstractDeclarator ')' |
| 104 |
R367 |
: CATCH '(' '...' ')' |
| 105 |
|
; |
| 106 |
|
|
| 107 |
|
|
| 1 |
|
// |
| 2 |
|
// Cpp-11. Expressions. |
| 3 |
|
// |
| 4 |
|
|
| 5 |
|
|
| 6 |
|
|
| 7 |
|
public ExpressionsList, Expression, AssignmentExpression; |
| 8 |
|
public ConstantExpressionsList, ConstantExpression; |
| 9 |
|
public StringsSeq; |
| 10 |
|
|
| 11 |
4102 |
ExpressionsList |
| 12 |
R368 |
: AssignmentExpression |
| 13 |
R369 |
: ExpressionsList ',' AssignmentExpression |
| 14 |
|
; |
| 15 |
|
|
| 16 |
4103 |
Expression |
| 17 |
R370 |
: AssignmentExpression |
| 18 |
R371 |
: Expression ',' AssignmentExpression |
| 19 |
|
; |
| 20 |
|
|
| 21 |
4104 |
AssignmentExpression |
| 22 |
R372 |
: ConditionalExpression |
| 23 |
R373 |
: LogicalOrExpression AssignmentOperator AssignmentExpression |
| 24 |
R374 |
: ThrowExpression |
| 25 |
|
; |
| 26 |
|
|
| 27 |
4105 |
AssignmentOperator |
| 28 |
R375 |
: '=' | '+=' | '-=' | '*=' | '/=' | '%=' | '<<=' | '>>=' |
| 29 |
R383 |
: '&=' | '|=' | '^=' |
| 30 |
|
; |
| 31 |
|
|
| 32 |
4106 |
ThrowExpression |
| 33 |
R386 |
: THROW |
| 34 |
R387 |
: THROW AssignmentExpression |
| 35 |
|
; |
| 36 |
|
|
| 37 |
4107 |
ConstantExpressionsList |
| 38 |
R388 |
: ConstantExpression |
| 39 |
R389 |
: ConstantExpressionsList ',' ConstantExpression |
| 40 |
|
; |
| 41 |
|
|
| 42 |
4108 |
ConstantExpression |
| 43 |
R390 |
: ConditionalExpression |
| 44 |
|
; |
| 45 |
|
|
| 46 |
4109 |
ConditionalExpression |
| 47 |
R391 |
: LogicalOrExpression |
| 48 |
R392 |
: LogicalOrExpression '?' Expression ':' AssignmentExpression |
| 49 |
|
; |
| 50 |
|
|
| 51 |
4110 |
LogicalOrExpression |
| 52 |
R393 |
: LogicalAndExpression |
| 53 |
R394 |
: LogicalOrExpression '||' LogicalAndExpression |
| 54 |
|
; |
| 55 |
|
|
| 56 |
4111 |
LogicalAndExpression |
| 57 |
R395 |
: BitOrExpression |
| 58 |
R396 |
: LogicalAndExpression '&&' BitOrExpression |
| 59 |
|
; |
| 60 |
|
|
| 61 |
4112 |
BitOrExpression |
| 62 |
R397 |
: BitXorExpression |
| 63 |
R398 |
: BitOrExpression '|' BitXorExpression |
| 64 |
|
; |
| 65 |
|
|
| 66 |
4113 |
BitXorExpression |
| 67 |
R399 |
: BitAndExpression |
| 68 |
R400 |
: BitXorExpression '^' BitAndExpression |
| 69 |
|
; |
| 70 |
|
|
| 71 |
4114 |
BitAndExpression |
| 72 |
R401 |
: EqualityExpression |
| 73 |
R402 |
: BitAndExpression '&' EqualityExpression |
| 74 |
|
; |
| 75 |
|
|
| 76 |
4115 |
EqualityExpression |
| 77 |
R403 |
: RelationalExpression [rta1-'>'] |
| 78 |
R404 |
: EqualityExpression '==' RelationalExpression [rta2-'>'] |
| 79 |
R405 |
: EqualityExpression '!=' RelationalExpression [rta3-'>'] |
| 80 |
|
; |
| 81 |
|
|
| 82 |
4116 |
RelationalExpression |
| 83 |
R406 |
: ShiftExpression |
| 84 |
R407 |
: RelationalExpression '<' ShiftExpression |
| 85 |
R408 |
: RelationalExpression [rta1, rta2, rta3] '>' ShiftExpression |
| 86 |
R409 |
: RelationalExpression '<=' ShiftExpression |
| 87 |
R410 |
: RelationalExpression '>=' ShiftExpression |
| 88 |
|
; |
| 89 |
|
|
| 90 |
4117 |
ShiftExpression |
| 91 |
R411 |
: AdditiveExpression |
| 92 |
R412 |
: ShiftExpression '<<' AdditiveExpression |
| 93 |
R413 |
: ShiftExpression '>>' AdditiveExpression |
| 94 |
|
; |
| 95 |
|
|
| 96 |
4118 |
AdditiveExpression |
| 97 |
R414 |
: MultiplicativeExpression |
| 98 |
R415 |
: AdditiveExpression '+' MultiplicativeExpression |
| 99 |
R416 |
: AdditiveExpression '-' MultiplicativeExpression |
| 100 |
|
; |
| 101 |
|
|
| 102 |
4119 |
MultiplicativeExpression |
| 103 |
R417 |
: PmExpression |
| 104 |
R418 |
: MultiplicativeExpression '*' PmExpression |
| 105 |
R419 |
: MultiplicativeExpression '/' PmExpression |
| 106 |
R420 |
: MultiplicativeExpression '%' PmExpression |
| 107 |
|
; |
| 108 |
|
|
| 109 |
4120 |
PmExpression |
| 110 |
R421 |
: CastExpression |
| 111 |
R422 |
: PmExpression '.*' CastExpression |
| 112 |
R423 |
: PmExpression '->*' CastExpression |
| 113 |
|
; |
| 114 |
|
|
| 115 |
4121 |
CastExpression |
| 116 |
R424 |
: UnaryExpression |
| 117 |
R425 |
: '(' TypeId ')' CastExpression |
| 118 |
|
; |
| 119 |
|
|
| 120 |
4122 |
UnaryExpression |
| 121 |
R426 |
: PostfixExpression |
| 122 |
R427 |
: '++' CastExpression |
| 123 |
R428 |
: '--' CastExpression |
| 124 |
R429 |
: UnaryOperator CastExpression |
| 125 |
R430 |
: SIZEOF UnaryExpression |
| 126 |
R431 |
: SIZEOF '(' TypeId ')' |
| 127 |
R432 |
: NewExpression |
| 128 |
R433 |
: DeleteExpression |
| 129 |
|
; |
| 130 |
|
|
| 131 |
4123 |
UnaryOperator |
| 132 |
R434 |
: '*' [pus1-identifier, pus2-'(', pus3-'~', pus4-'*', pus5-'&', pus6-'::', pus7-OPERATOR] __id(rcpp_UnOpStar) |
| 133 |
R435 |
: '&' [rua1-identifier, rua2-'(', rua3-'~', rua4-'*', rua5-'&', rua6-'::', rua7-OPERATOR] |
| 134 |
R436 |
: '+' | '-' | '!' |
| 135 |
R439 |
: '~' [dsut-identifier] |
| 136 |
|
; |
| 137 |
|
|
| 138 |
4124 |
NewExpression |
| 139 |
R440 |
: NEW NewTypeId |
| 140 |
R441 |
: NEW NewTypeId NewInitializer |
| 141 |
R442 |
: NEW NewPlacement NewTypeId |
| 142 |
R443 |
: NEW NewPlacement NewTypeId NewInitializer |
| 143 |
R444 |
: '::' NEW NewTypeId |
| 144 |
R445 |
: '::' NEW NewTypeId NewInitializer |
| 145 |
R446 |
: '::' NEW NewPlacement NewTypeId |
| 146 |
R447 |
: '::' NEW NewPlacement NewTypeId NewInitializer |
| 147 |
|
/*+*/ |
| 148 |
R448 |
: NEW '(' TypeId ')' |
| 149 |
R449 |
: NEW '(' TypeId ')' NewInitializer |
| 150 |
R450 |
: NEW NewPlacement '(' TypeId ')' |
| 151 |
R451 |
: NEW NewPlacement '(' TypeId ')' NewInitializer |
| 152 |
R452 |
: '::' NEW '(' TypeId ')' |
| 153 |
R453 |
: '::' NEW '(' TypeId ')' NewInitializer |
| 154 |
R454 |
: '::' NEW NewPlacement '(' TypeId ')' |
| 155 |
R455 |
: '::' NEW NewPlacement '(' TypeId ')' NewInitializer |
| 156 |
|
; |
| 157 |
|
|
| 158 |
4125 |
NewPlacement |
| 159 |
R456 |
: '(' ExpressionsList ')' |
| 160 |
|
; |
| 161 |
|
|
| 162 |
4126 |
NewTypeId |
| 163 |
R457 |
: TypeSpecifier [pnti-'*', rnti-'&'] |
| 164 |
R458 |
: TypeSpecifier NewDeclarator |
| 165 |
|
; |
| 166 |
|
|
| 167 |
4127 |
NewDeclarator |
| 168 |
R459 |
: PtrOperator [pndc-'*', rndc-'&'] |
| 169 |
R460 |
: PtrOperator NewDeclarator |
| 170 |
R461 |
: DirectNewDeclarator |
| 171 |
|
; |
| 172 |
|
|
| 173 |
4128 |
DirectNewDeclarator |
| 174 |
R462 |
: '[' ExpressionsList ']' |
| 175 |
R463 |
: DirectNewDeclarator '[' ExpressionsList ']' |
| 176 |
|
; |
| 177 |
|
|
| 178 |
4129 |
NewInitializer |
| 179 |
R464 |
: '(' ')' |
| 180 |
R465 |
: '(' ExpressionsList ')' |
| 181 |
|
; |
| 182 |
|
|
| 183 |
4130 |
DeleteExpression |
| 184 |
R466 |
: DELETE CastExpression |
| 185 |
R467 |
: DELETE '[' ']' CastExpression |
| 186 |
R468 |
: '::' DELETE CastExpression |
| 187 |
R469 |
: '::' DELETE '[' ']' CastExpression |
| 188 |
|
; |
| 189 |
|
|
| 190 |
4131 |
PostfixExpression |
| 191 |
R470 |
: PrimaryExpression |
| 192 |
|
/*+*/ |
| 193 |
R471 |
: PostfixExpression '++' __id(rcpp_pfix_plpl) |
| 194 |
R472 |
: PostfixExpression '--' __id(rcpp_pfix_mnmn) |
| 195 |
|
/*+*/ |
| 196 |
R473 |
: PostfixExpression '.' ExpressionId __id(rcpp_pfix_dot) |
| 197 |
R474 |
: PostfixExpression '.' TEMPLATE ExpressionId __id(rcpp_pfix_dot_tmpl) |
| 198 |
R475 |
: PostfixExpression '->' ExpressionId __id(rcpp_pfix_arrow) |
| 199 |
R476 |
: PostfixExpression '->' TEMPLATE ExpressionId __id(rcpp_pfix_arrow_tmpl) |
| 200 |
|
/*+*/ |
| 201 |
R477 |
: PostfixExpression '[' ExpressionsList ']' __id(rcpp_pfix_array) |
| 202 |
|
/*+*/ |
| 203 |
R478 |
: PostfixExpression '(' ')' __id(rcpp_pfix_fcall_simp) |
| 204 |
R479 |
: PostfixExpression '(' ExpressionsList ')' __id(rcpp_pfix_fcall_prms) |
| 205 |
|
/*+*/ |
| 206 |
R480 |
: SimpleTypeSpecifier '(' ')' __id(rcpp_pfix_ctor1) |
| 207 |
R481 |
: SimpleTypeSpecifier '(' ExpressionsList ')' __id(rcpp_pfix_ctor2) |
| 208 |
R482 |
: TYPENAME SimpleOrQualifiedId [etpe] '(' ')' __id(rcpp_pfix_ctor3) |
| 209 |
R483 |
: TYPENAME SimpleOrQualifiedId [etpe] '(' ExpressionsList ')' __id(rcpp_pfix_ctor4) |
| 210 |
|
/*+*/ |
| 211 |
R484 |
: CONST_CAST '<' TypeId '>' '(' Expression ')' __id(rcpp_pfix_cs_cast) |
| 212 |
R485 |
: STATIC_CAST '<' TypeId '>' '(' Expression ')' __id(rcpp_pfix_st_cast) |
| 213 |
R486 |
: DYNA_CAST '<' TypeId '>' '(' Expression ')' __id(rcpp_pfix_dy_cast) |
| 214 |
R487 |
: REIN_CAST '<' TypeId '>' '(' Expression ')' __id(rcpp_pfix_re_cast) |
| 215 |
|
/*+*/ |
| 216 |
R488 |
: TYPEID '(' Expression ')' __id(rcpp_pfix_tpid_expr) |
| 217 |
R489 |
: TYPEID '(' TypeId ')' __id(rcpp_pfix_tpid_type) |
| 218 |
|
; |
| 219 |
|
|
| 220 |
4132 |
PrimaryExpression |
| 221 |
R490 |
: Literal |
| 222 |
R491 |
: THIS |
| 223 |
R492 |
: ExpressionId [dpe1-';', dpe2-',', dpe3-'(', dpe4-')', dpe5-'[', dpe6-'='] |
| 224 |
R493 |
: '(' Expression ')' |
| 225 |
|
; |
| 226 |
|
|
| 227 |
4133 |
Literal |
| 228 |
R494 |
: FALSE | TRUE |
| 229 |
R496 |
: number | charconst | StringsSeq |
| 230 |
|
; |
| 231 |
|
|
| 232 |
4134 |
StringsSeq |
| 233 |
R499 |
: string |
| 234 |
R500 |
: StringsSeq string |
| 235 |
|
; |
| 236 |
|
|
| 237 |
|
|
| 1 |
|
// |
| 2 |
|
// Even C++ 2003 Grammar. Close to the Standard ISO/IEC 14882. |
| 3 |
|
// |
| 4 |
|
// Expected conflict definitions. |
| 5 |
|
// |
| 6 |
|
|
| 7 |
|
|
| 8 |
|
|
| 9 |
X0 |
ExpressionId_OR_NamedTypeSpecifier |
// Ambiguous SimpleOrQualifiedId. |
| 10 |
|
{ |
| 11 |
|
est1, est2, est3, est4, est5, est6, est7, est8, est9, est10, est11; |
| 12 |
|
} |
| 13 |
|
|
| 14 |
X1 |
SimpleTypeSpec_OR_TypeSpecifier |
// Ambiguous BuiltInTypeSpecifier or NamedTypeSpecifier |
| 15 |
|
{ |
| 16 |
|
dsb1, dsb2, dsb3, dsb4, dsb5, dsb6, dsb7, dsb8, dsb9, dsb10, dsb11, dsb12, dsb13, dsb14, dsb15; |
| 17 |
|
tsb1, tsb2, tsb3, tsb4, tsb5, tsb6, tsb7, tsb8, tsb9, tsb10, tsb11, tsb12, tsb13, tsb14, tsb15; |
| 18 |
|
dsn1, dsn2, dsn3, dsn4, dsn5, dsn6, dsn7, dsn8, dsn9, dsn10, dsn11, dsn12, dsn13, dsn14, dsn15; |
| 19 |
|
tsn1, tsn2, tsn3, tsn4, tsn5, tsn6, tsn7, tsn8, tsn9, tsn10, tsn11, tsn12, tsn13, tsn14, tsn15; |
| 20 |
|
} |
| 21 |
|
|
| 22 |
X2 |
DirectDeclarator_OR_PrimaryExpression |
// Ambiguous ExpressionId. |
| 23 |
|
{ |
| 24 |
|
dpe1, dpe2, dpe3, dpe4, dpe5, dpe6; |
| 25 |
|
} |
| 26 |
|
|
| 27 |
X3 |
PtrStar_OR_UnaryStar |
// Ambiguous '*'. |
| 28 |
|
{ |
| 29 |
|
pus1, pus2, pus3, pus4, pus5, pus6, pus7; |
| 30 |
|
|
| 31 |
|
// Resolution should be based on the current context. |
| 32 |
|
// If the current context is an expression context, then R403 should be taken. |
| 33 |
|
// Otherwise, the rule R124 should be used. |
| 34 |
|
} |
| 35 |
|
|
| 36 |
X4 |
RefAmpersand_OR_UnaryAmpersand |
// Ambiguous '&'. |
| 37 |
|
{ |
| 38 |
|
rua1, rua2, rua3, rua4, rua5, rua6, rua7; |
| 39 |
|
|
| 40 |
|
// Resolution should be based on the current context. |
| 41 |
|
// If the current context is an expression context, then R404 should be taken. |
| 42 |
|
// Otherwise, the rule R126 should be used. |
| 43 |
|
} |
| 44 |
|
|
| 45 |
X5 |
Qual_OR_MoreQual |
// Single inp sym '::'. |
| 46 |
|
{ |
| 47 |
|
qmq1, qmq2, qmq3, qmq4; |
| 48 |
|
} |
| 49 |
|
|
| 50 |
X6 |
Declarator_OR_ParameterDeclaration |
// Single inp sym '('. |
| 51 |
|
{ |
| 52 |
|
dpdc; |
| 53 |
|
} |
| 54 |
|
|
| 55 |
X7 |
ElabTypeSpec_OR_PostfixExpression |
// Single inp sym '('. |
| 56 |
|
{ |
| 57 |
|
etpe; |
| 58 |
|
} |
| 59 |
|
|
| 60 |
X8 |
MemberDecl_OR_FunctionDefn |
// Single inp sym ':'. |
| 61 |
|
{ |
| 62 |
|
mdfd; |
| 63 |
|
|
| 64 |
|
// This conflict has fixed resolution. |
| 65 |
|
} |
| 66 |
|
|
| 67 |
X9 |
EnumHeader_OR_AlignmentRecord |
// Single inp sym ':'. |
| 68 |
|
{ |
| 69 |
|
ehar; |
| 70 |
|
} |
| 71 |
|
|
| 72 |
X10 |
ExtendedId_OR_ClassHeader |
// Single inp sym ':'. |
| 73 |
|
{ |
| 74 |
|
eich; |
| 75 |
|
} |
| 76 |
|
|
| 77 |
X11 |
NewWithArrayIndex_OR_NewArray |
// Single inp sym '['. |
| 78 |
|
{ |
| 79 |
|
nain; |
| 80 |
|
} |
| 81 |
|
|
| 82 |
X12 |
DeleteWithArrayIndex_OR_DeleteArray |
// Single inp sym '['. |
| 83 |
|
{ |
| 84 |
|
daid; |
| 85 |
|
} |
| 86 |
|
|
| 87 |
X13 |
ExtendedId_OR_TemplateParams |
// Single inp sym '<'. |
| 88 |
|
{ |
| 89 |
|
eitp; |
| 90 |
|
} |
| 91 |
|
|
| 92 |
X14 |
OperatorFuncId_OR_TemplateParams |
// Single inp sym '<'. |
| 93 |
|
{ |
| 94 |
|
oftp; |
| 95 |
|
} |
| 96 |
|
|
| 97 |
X15 |
ConversionFuncId_OR_TemplateParams |
// Single inp sym '<'. |
| 98 |
|
{ |
| 99 |
|
cftp; |
| 100 |
|
} |
| 101 |
|
|
| 102 |
X16 |
Destructor_OR_UnaryTilda |
// Single inp sym identifier. |
| 103 |
|
{ |
| 104 |
|
dsut; |
| 105 |
|
} |
| 106 |
|
|
| 107 |
X17 |
ClassKey_OR_TypeParameter |
// Single inp sym identifier. |
| 108 |
|
{ |
| 109 |
|
cktp; |
| 110 |
|
} |
| 111 |
|
|
| 112 |
X18 |
RelationalExpr_OR_TemplateIdDataArg |
// Single inp sym '>'. |
| 113 |
|
{ |
| 114 |
|
rta1, rta2, rta3; |
| 115 |
|
} |
| 116 |
|
|
| 117 |
X19 |
EnumHeader_OR_FunctionDefn |
// Single inp sym '{'. |
| 118 |
|
{ |
| 119 |
|
ehfd; |
| 120 |
|
} |
| 121 |
|
|
| 122 |
X20 |
ClassHeader_OR_ConversionFuncHeader |
// Single inp sym '{'. |
| 123 |
|
{ |
| 124 |
|
chfd; |
| 125 |
|
} |
| 126 |
|
|
| 127 |
X21 |
PtrOperator_OR_ConversionTypeId |
// Single inp sym '*'. |
| 128 |
|
{ |
| 129 |
|
pct1, pct2; |
| 130 |
|
} |
| 131 |
|
|
| 132 |
X22 |
PtrOperator_OR_NewTypeId |
// Single inp sym '*'. |
| 133 |
|
{ |
| 134 |
|
pnti; |
| 135 |
|
|
| 136 |
|
// The parser is not sure if it should continue building the NewTypeId by |
| 137 |
|
// pushing in the '*' symbol, or stop building it, leaving '*' in the input |
| 138 |
|
// stream where it will get some other meaning, not the PtrOperator. |
| 139 |
|
} |
| 140 |
|
|
| 141 |
X23 |
PtrOperator_OR_NewDeclarator |
// Single inp sym '*'. |
| 142 |
|
{ |
| 143 |
|
pndc; |
| 144 |
|
|
| 145 |
|
// The parser is not sure if it should continue building the NewDeclarator by |
| 146 |
|
// pushing in the '*' symbol, or stop building it, leaving '*' in the input |
| 147 |
|
// stream where it will get some other meaning, not the PtrOperator. |
| 148 |
|
} |
| 149 |
|
|
| 150 |
X24 |
RefOperator_OR_ConversionTypeId |
// Single inp sym '&'. |
| 151 |
|
{ |
| 152 |
|
rct1, rct2; |
| 153 |
|
} |
| 154 |
|
|
| 155 |
X25 |
RefOperator_OR_NewTypeId |
// Single inp sym '&'. |
| 156 |
|
{ |
| 157 |
|
rnti; |
| 158 |
|
|
| 159 |
|
// The parser is not sure if it should continue building the NewTypeId by |
| 160 |
|
// pushing in the '&' symbol, or stop building it, leaving '&' in the input |
| 161 |
|
// stream where it will get some other meaning, not the RefOperator. |
| 162 |
|
} |
| 163 |
|
|
| 164 |
X26 |
RefOperator_OR_NewDeclarator |
// Single inp sym '&'. |
| 165 |
|
{ |
| 166 |
|
rndc; |
| 167 |
|
|
| 168 |
|
// The parser is not sure if it should continue building the NewDeclarator by |
| 169 |
|
// pushing in the '&' symbol, or stop building it, leaving '&' in the input |
| 170 |
|
// stream where it will get some other meaning, not the RefOperator. |
| 171 |
|
} |
| 172 |
|
|
| 173 |
X27 |
TypeParameter_OR_DataParameter |
// Single inp sym '&', misc signature. |
| 174 |
|
{ |
| 175 |
|
tdp1, tdp2, tdp3; |
| 176 |
|
} |
| 177 |
|
|
| 178 |
X28 |
ParamsHeader_OR_EnclosedDeclarator |
| 179 |
|
{ |
| 180 |
|
phed1, phed2, phed3, phed4, phed5; |
| 181 |
|
} |
| 182 |
|
|
| 183 |
X29 |
BigElse_OR_SmallElse |
// Single inp sym ELSE. |
| 184 |
|
{ |
| 185 |
|
sebe; |
| 186 |
|
|
| 187 |
|
// This conflict has fixed resolution according the the language standard. |
| 188 |
|
} |
| 189 |
|
|
| 190 |
|
|
|