OSDN Git Service

Update license.
[qt-creator-jp/qt-creator-jp.git] / src / shared / cplusplus / AST.cpp
1 /**************************************************************************
2 **
3 ** This file is part of Qt Creator
4 **
5 ** Copyright (c) 2011 Nokia Corporation and/or its subsidiary(-ies).
6 **
7 ** Contact: Nokia Corporation (info@qt.nokia.com)
8 **
9 **
10 ** GNU Lesser General Public License Usage
11 **
12 ** This file may be used under the terms of the GNU Lesser General Public
13 ** License version 2.1 as published by the Free Software Foundation and
14 ** appearing in the file LICENSE.LGPL included in the packaging of this file.
15 ** Please review the following information to ensure the GNU Lesser General
16 ** Public License version 2.1 requirements will be met:
17 ** http://www.gnu.org/licenses/old-licenses/lgpl-2.1.html.
18 **
19 ** In addition, as a special exception, Nokia gives you certain additional
20 ** rights. These rights are described in the Nokia Qt LGPL Exception
21 ** version 1.1, included in the file LGPL_EXCEPTION.txt in this package.
22 **
23 ** Other Usage
24 **
25 ** Alternatively, this file may be used in accordance with the terms and
26 ** conditions contained in a signed written agreement between you and Nokia.
27 **
28 ** If you have questions regarding the use of this file, please contact
29 ** Nokia at qt-info@nokia.com.
30 **
31 **************************************************************************/
32 // Copyright (c) 2008 Roberto Raggi <roberto.raggi@gmail.com>
33 //
34 // Permission is hereby granted, free of charge, to any person obtaining a copy
35 // of this software and associated documentation files (the "Software"), to deal
36 // in the Software without restriction, including without limitation the rights
37 // to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
38 // copies of the Software, and to permit persons to whom the Software is
39 // furnished to do so, subject to the following conditions:
40 //
41 // The above copyright notice and this permission notice shall be included in
42 // all copies or substantial portions of the Software.
43 //
44 // THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
45 // IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
46 // FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
47 // AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
48 // LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
49 // OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN
50 // THE SOFTWARE.
51
52 #include "AST.h"
53 #include "ASTVisitor.h"
54 #include "ASTMatcher.h"
55 #include "MemoryPool.h"
56
57 #include <cassert>
58 #include <algorithm>
59
60
61 /*
62    All firstToken/lastToken methods below which have a doxygen comment with
63    \generated in it, will be re-generated when the tool "generate-ast" is run.
64
65    For methods which are hand-coded, or which should not be changed, make sure that
66    the comment is gone.
67  */
68
69
70 using namespace CPlusPlus;
71
72 AST::AST()
73 { }
74
75 AST::~AST()
76 { assert(0); }
77
78 void AST::accept(ASTVisitor *visitor)
79 {
80     if (visitor->preVisit(this))
81         accept0(visitor);
82     visitor->postVisit(this);
83 }
84
85 bool AST::match(AST *ast, AST *pattern, ASTMatcher *matcher)
86 {
87     if (ast == pattern)
88         return true;
89
90     else if (! ast || ! pattern)
91         return false;
92
93     return ast->match(pattern, matcher);
94 }
95
96 bool AST::match(AST *pattern, ASTMatcher *matcher)
97 {
98     return match0(pattern, matcher);
99 }
100
101 unsigned AttributeSpecifierAST::firstToken() const
102 {
103     return attribute_token;
104 }
105
106 unsigned BaseSpecifierAST::firstToken() const
107 {
108     if (virtual_token && access_specifier_token)
109         return std::min(virtual_token, access_specifier_token);
110     if (virtual_token)
111         return virtual_token;
112     if (access_specifier_token)
113         return access_specifier_token;
114     if (name)
115         name->firstToken();
116     // assert?
117     return 0;
118 }
119
120 unsigned BaseSpecifierAST::lastToken() const
121 {
122     if (name)
123         return name->lastToken();
124     else if (virtual_token && access_specifier_token)
125         return std::max(virtual_token, access_specifier_token) + 1;
126     else if (virtual_token)
127         return virtual_token + 1;
128     else if (access_specifier_token)
129         return access_specifier_token + 1;
130     // assert?
131     return 0;
132 }
133
134 /** \generated */
135 unsigned AccessDeclarationAST::firstToken() const
136 {
137     if (access_specifier_token)
138         return access_specifier_token;
139     if (slots_token)
140         return slots_token;
141     if (colon_token)
142         return colon_token;
143     return 0;
144 }
145
146 /** \generated */
147 unsigned AccessDeclarationAST::lastToken() const
148 {
149     if (colon_token)
150         return colon_token + 1;
151     if (slots_token)
152         return slots_token + 1;
153     if (access_specifier_token)
154         return access_specifier_token + 1;
155     return 1;
156 }
157
158 /** \generated */
159 unsigned ArrayAccessAST::firstToken() const
160 {
161     if (base_expression)
162         if (unsigned candidate = base_expression->firstToken())
163             return candidate;
164     if (lbracket_token)
165         return lbracket_token;
166     if (expression)
167         if (unsigned candidate = expression->firstToken())
168             return candidate;
169     if (rbracket_token)
170         return rbracket_token;
171     return 0;
172 }
173
174 /** \generated */
175 unsigned ArrayAccessAST::lastToken() const
176 {
177     if (rbracket_token)
178         return rbracket_token + 1;
179     if (expression)
180         if (unsigned candidate = expression->lastToken())
181             return candidate;
182     if (lbracket_token)
183         return lbracket_token + 1;
184     if (base_expression)
185         if (unsigned candidate = base_expression->lastToken())
186             return candidate;
187     return 1;
188 }
189
190 /** \generated */
191 unsigned ArrayDeclaratorAST::firstToken() const
192 {
193     if (lbracket_token)
194         return lbracket_token;
195     if (expression)
196         if (unsigned candidate = expression->firstToken())
197             return candidate;
198     if (rbracket_token)
199         return rbracket_token;
200     return 0;
201 }
202
203 /** \generated */
204 unsigned ArrayDeclaratorAST::lastToken() const
205 {
206     if (rbracket_token)
207         return rbracket_token + 1;
208     if (expression)
209         if (unsigned candidate = expression->lastToken())
210             return candidate;
211     if (lbracket_token)
212         return lbracket_token + 1;
213     return 1;
214 }
215
216 /** \generated */
217 unsigned ArrayInitializerAST::firstToken() const
218 {
219     if (lbrace_token)
220         return lbrace_token;
221     if (expression_list)
222         if (unsigned candidate = expression_list->firstToken())
223             return candidate;
224     if (rbrace_token)
225         return rbrace_token;
226     return 0;
227 }
228
229 /** \generated */
230 unsigned ArrayInitializerAST::lastToken() const
231 {
232     if (rbrace_token)
233         return rbrace_token + 1;
234     if (expression_list)
235         if (unsigned candidate = expression_list->lastToken())
236             return candidate;
237     if (lbrace_token)
238         return lbrace_token + 1;
239     return 1;
240 }
241
242 /** \generated */
243 unsigned AsmDefinitionAST::firstToken() const
244 {
245     if (asm_token)
246         return asm_token;
247     if (volatile_token)
248         return volatile_token;
249     if (lparen_token)
250         return lparen_token;
251     if (rparen_token)
252         return rparen_token;
253     if (semicolon_token)
254         return semicolon_token;
255     return 0;
256 }
257
258 /** \generated */
259 unsigned AsmDefinitionAST::lastToken() const
260 {
261     if (semicolon_token)
262         return semicolon_token + 1;
263     if (rparen_token)
264         return rparen_token + 1;
265     if (lparen_token)
266         return lparen_token + 1;
267     if (volatile_token)
268         return volatile_token + 1;
269     if (asm_token)
270         return asm_token + 1;
271     return 1;
272 }
273
274 /** \generated */
275 unsigned AttributeAST::firstToken() const
276 {
277     if (identifier_token)
278         return identifier_token;
279     if (lparen_token)
280         return lparen_token;
281     if (tag_token)
282         return tag_token;
283     if (expression_list)
284         if (unsigned candidate = expression_list->firstToken())
285             return candidate;
286     if (rparen_token)
287         return rparen_token;
288     return 0;
289 }
290
291 /** \generated */
292 unsigned AttributeAST::lastToken() const
293 {
294     if (rparen_token)
295         return rparen_token + 1;
296     if (expression_list)
297         if (unsigned candidate = expression_list->lastToken())
298             return candidate;
299     if (tag_token)
300         return tag_token + 1;
301     if (lparen_token)
302         return lparen_token + 1;
303     if (identifier_token)
304         return identifier_token + 1;
305     return 1;
306 }
307
308 /** \generated */
309 unsigned BinaryExpressionAST::firstToken() const
310 {
311     if (left_expression)
312         if (unsigned candidate = left_expression->firstToken())
313             return candidate;
314     if (binary_op_token)
315         return binary_op_token;
316     if (right_expression)
317         if (unsigned candidate = right_expression->firstToken())
318             return candidate;
319     return 0;
320 }
321
322 /** \generated */
323 unsigned BinaryExpressionAST::lastToken() const
324 {
325     if (right_expression)
326         if (unsigned candidate = right_expression->lastToken())
327             return candidate;
328     if (binary_op_token)
329         return binary_op_token + 1;
330     if (left_expression)
331         if (unsigned candidate = left_expression->lastToken())
332             return candidate;
333     return 1;
334 }
335
336 /** \generated */
337 unsigned BoolLiteralAST::firstToken() const
338 {
339     if (literal_token)
340         return literal_token;
341     return 0;
342 }
343
344 /** \generated */
345 unsigned BoolLiteralAST::lastToken() const
346 {
347     if (literal_token)
348         return literal_token + 1;
349     return 1;
350 }
351
352 /** \generated */
353 unsigned BracedInitializerAST::firstToken() const
354 {
355     if (lbrace_token)
356         return lbrace_token;
357     if (expression_list)
358         if (unsigned candidate = expression_list->firstToken())
359             return candidate;
360     if (comma_token)
361         return comma_token;
362     if (rbrace_token)
363         return rbrace_token;
364     return 0;
365 }
366
367 /** \generated */
368 unsigned BracedInitializerAST::lastToken() const
369 {
370     if (rbrace_token)
371         return rbrace_token + 1;
372     if (comma_token)
373         return comma_token + 1;
374     if (expression_list)
375         if (unsigned candidate = expression_list->lastToken())
376             return candidate;
377     if (lbrace_token)
378         return lbrace_token + 1;
379     return 1;
380 }
381
382 /** \generated */
383 unsigned BreakStatementAST::firstToken() const
384 {
385     if (break_token)
386         return break_token;
387     if (semicolon_token)
388         return semicolon_token;
389     return 0;
390 }
391
392 /** \generated */
393 unsigned BreakStatementAST::lastToken() const
394 {
395     if (semicolon_token)
396         return semicolon_token + 1;
397     if (break_token)
398         return break_token + 1;
399     return 1;
400 }
401
402 /** \generated */
403 unsigned CallAST::firstToken() const
404 {
405     if (base_expression)
406         if (unsigned candidate = base_expression->firstToken())
407             return candidate;
408     if (lparen_token)
409         return lparen_token;
410     if (expression_list)
411         if (unsigned candidate = expression_list->firstToken())
412             return candidate;
413     if (rparen_token)
414         return rparen_token;
415     return 0;
416 }
417
418 /** \generated */
419 unsigned CallAST::lastToken() const
420 {
421     if (rparen_token)
422         return rparen_token + 1;
423     if (expression_list)
424         if (unsigned candidate = expression_list->lastToken())
425             return candidate;
426     if (lparen_token)
427         return lparen_token + 1;
428     if (base_expression)
429         if (unsigned candidate = base_expression->lastToken())
430             return candidate;
431     return 1;
432 }
433
434 /** \generated */
435 unsigned CaptureAST::firstToken() const
436 {
437     return 0;
438 }
439
440 /** \generated */
441 unsigned CaptureAST::lastToken() const
442 {
443     return 1;
444 }
445
446 /** \generated */
447 unsigned CaseStatementAST::firstToken() const
448 {
449     if (case_token)
450         return case_token;
451     if (expression)
452         if (unsigned candidate = expression->firstToken())
453             return candidate;
454     if (colon_token)
455         return colon_token;
456     if (statement)
457         if (unsigned candidate = statement->firstToken())
458             return candidate;
459     return 0;
460 }
461
462 /** \generated */
463 unsigned CaseStatementAST::lastToken() const
464 {
465     if (statement)
466         if (unsigned candidate = statement->lastToken())
467             return candidate;
468     if (colon_token)
469         return colon_token + 1;
470     if (expression)
471         if (unsigned candidate = expression->lastToken())
472             return candidate;
473     if (case_token)
474         return case_token + 1;
475     return 1;
476 }
477
478 /** \generated */
479 unsigned CastExpressionAST::firstToken() const
480 {
481     if (lparen_token)
482         return lparen_token;
483     if (type_id)
484         if (unsigned candidate = type_id->firstToken())
485             return candidate;
486     if (rparen_token)
487         return rparen_token;
488     if (expression)
489         if (unsigned candidate = expression->firstToken())
490             return candidate;
491     return 0;
492 }
493
494 /** \generated */
495 unsigned CastExpressionAST::lastToken() const
496 {
497     if (expression)
498         if (unsigned candidate = expression->lastToken())
499             return candidate;
500     if (rparen_token)
501         return rparen_token + 1;
502     if (type_id)
503         if (unsigned candidate = type_id->lastToken())
504             return candidate;
505     if (lparen_token)
506         return lparen_token + 1;
507     return 1;
508 }
509
510 /** \generated */
511 unsigned CatchClauseAST::firstToken() const
512 {
513     if (catch_token)
514         return catch_token;
515     if (lparen_token)
516         return lparen_token;
517     if (exception_declaration)
518         if (unsigned candidate = exception_declaration->firstToken())
519             return candidate;
520     if (rparen_token)
521         return rparen_token;
522     if (statement)
523         if (unsigned candidate = statement->firstToken())
524             return candidate;
525     return 0;
526 }
527
528 /** \generated */
529 unsigned CatchClauseAST::lastToken() const
530 {
531     if (statement)
532         if (unsigned candidate = statement->lastToken())
533             return candidate;
534     if (rparen_token)
535         return rparen_token + 1;
536     if (exception_declaration)
537         if (unsigned candidate = exception_declaration->lastToken())
538             return candidate;
539     if (lparen_token)
540         return lparen_token + 1;
541     if (catch_token)
542         return catch_token + 1;
543     return 1;
544 }
545
546 /** \generated */
547 unsigned ClassSpecifierAST::firstToken() const
548 {
549     if (classkey_token)
550         return classkey_token;
551     if (attribute_list)
552         if (unsigned candidate = attribute_list->firstToken())
553             return candidate;
554     if (name)
555         if (unsigned candidate = name->firstToken())
556             return candidate;
557     if (colon_token)
558         return colon_token;
559     if (base_clause_list)
560         if (unsigned candidate = base_clause_list->firstToken())
561             return candidate;
562     if (dot_dot_dot_token)
563         return dot_dot_dot_token;
564     if (lbrace_token)
565         return lbrace_token;
566     if (member_specifier_list)
567         if (unsigned candidate = member_specifier_list->firstToken())
568             return candidate;
569     if (rbrace_token)
570         return rbrace_token;
571     return 0;
572 }
573
574 /** \generated */
575 unsigned ClassSpecifierAST::lastToken() const
576 {
577     if (rbrace_token)
578         return rbrace_token + 1;
579     if (member_specifier_list)
580         if (unsigned candidate = member_specifier_list->lastToken())
581             return candidate;
582     if (lbrace_token)
583         return lbrace_token + 1;
584     if (dot_dot_dot_token)
585         return dot_dot_dot_token + 1;
586     if (base_clause_list)
587         if (unsigned candidate = base_clause_list->lastToken())
588             return candidate;
589     if (colon_token)
590         return colon_token + 1;
591     if (name)
592         if (unsigned candidate = name->lastToken())
593             return candidate;
594     if (attribute_list)
595         if (unsigned candidate = attribute_list->lastToken())
596             return candidate;
597     if (classkey_token)
598         return classkey_token + 1;
599     return 1;
600 }
601
602 /** \generated */
603 unsigned CompoundExpressionAST::firstToken() const
604 {
605     if (lparen_token)
606         return lparen_token;
607     if (statement)
608         if (unsigned candidate = statement->firstToken())
609             return candidate;
610     if (rparen_token)
611         return rparen_token;
612     return 0;
613 }
614
615 /** \generated */
616 unsigned CompoundExpressionAST::lastToken() const
617 {
618     if (rparen_token)
619         return rparen_token + 1;
620     if (statement)
621         if (unsigned candidate = statement->lastToken())
622             return candidate;
623     if (lparen_token)
624         return lparen_token + 1;
625     return 1;
626 }
627
628 /** \generated */
629 unsigned CompoundLiteralAST::firstToken() const
630 {
631     if (lparen_token)
632         return lparen_token;
633     if (type_id)
634         if (unsigned candidate = type_id->firstToken())
635             return candidate;
636     if (rparen_token)
637         return rparen_token;
638     if (initializer)
639         if (unsigned candidate = initializer->firstToken())
640             return candidate;
641     return 0;
642 }
643
644 /** \generated */
645 unsigned CompoundLiteralAST::lastToken() const
646 {
647     if (initializer)
648         if (unsigned candidate = initializer->lastToken())
649             return candidate;
650     if (rparen_token)
651         return rparen_token + 1;
652     if (type_id)
653         if (unsigned candidate = type_id->lastToken())
654             return candidate;
655     if (lparen_token)
656         return lparen_token + 1;
657     return 1;
658 }
659
660 /** \generated */
661 unsigned CompoundStatementAST::firstToken() const
662 {
663     if (lbrace_token)
664         return lbrace_token;
665     if (statement_list)
666         if (unsigned candidate = statement_list->firstToken())
667             return candidate;
668     if (rbrace_token)
669         return rbrace_token;
670     return 0;
671 }
672
673 /** \generated */
674 unsigned CompoundStatementAST::lastToken() const
675 {
676     if (rbrace_token)
677         return rbrace_token + 1;
678     if (statement_list)
679         if (unsigned candidate = statement_list->lastToken())
680             return candidate;
681     if (lbrace_token)
682         return lbrace_token + 1;
683     return 1;
684 }
685
686 /** \generated */
687 unsigned ConditionAST::firstToken() const
688 {
689     if (type_specifier_list)
690         if (unsigned candidate = type_specifier_list->firstToken())
691             return candidate;
692     if (declarator)
693         if (unsigned candidate = declarator->firstToken())
694             return candidate;
695     return 0;
696 }
697
698 /** \generated */
699 unsigned ConditionAST::lastToken() const
700 {
701     if (declarator)
702         if (unsigned candidate = declarator->lastToken())
703             return candidate;
704     if (type_specifier_list)
705         if (unsigned candidate = type_specifier_list->lastToken())
706             return candidate;
707     return 1;
708 }
709
710 /** \generated */
711 unsigned ConditionalExpressionAST::firstToken() const
712 {
713     if (condition)
714         if (unsigned candidate = condition->firstToken())
715             return candidate;
716     if (question_token)
717         return question_token;
718     if (left_expression)
719         if (unsigned candidate = left_expression->firstToken())
720             return candidate;
721     if (colon_token)
722         return colon_token;
723     if (right_expression)
724         if (unsigned candidate = right_expression->firstToken())
725             return candidate;
726     return 0;
727 }
728
729 /** \generated */
730 unsigned ConditionalExpressionAST::lastToken() const
731 {
732     if (right_expression)
733         if (unsigned candidate = right_expression->lastToken())
734             return candidate;
735     if (colon_token)
736         return colon_token + 1;
737     if (left_expression)
738         if (unsigned candidate = left_expression->lastToken())
739             return candidate;
740     if (question_token)
741         return question_token + 1;
742     if (condition)
743         if (unsigned candidate = condition->lastToken())
744             return candidate;
745     return 1;
746 }
747
748 /** \generated */
749 unsigned ContinueStatementAST::firstToken() const
750 {
751     if (continue_token)
752         return continue_token;
753     if (semicolon_token)
754         return semicolon_token;
755     return 0;
756 }
757
758 /** \generated */
759 unsigned ContinueStatementAST::lastToken() const
760 {
761     if (semicolon_token)
762         return semicolon_token + 1;
763     if (continue_token)
764         return continue_token + 1;
765     return 1;
766 }
767
768 /** \generated */
769 unsigned ConversionFunctionIdAST::firstToken() const
770 {
771     if (operator_token)
772         return operator_token;
773     if (type_specifier_list)
774         if (unsigned candidate = type_specifier_list->firstToken())
775             return candidate;
776     if (ptr_operator_list)
777         if (unsigned candidate = ptr_operator_list->firstToken())
778             return candidate;
779     return 0;
780 }
781
782 /** \generated */
783 unsigned ConversionFunctionIdAST::lastToken() const
784 {
785     if (ptr_operator_list)
786         if (unsigned candidate = ptr_operator_list->lastToken())
787             return candidate;
788     if (type_specifier_list)
789         if (unsigned candidate = type_specifier_list->lastToken())
790             return candidate;
791     if (operator_token)
792         return operator_token + 1;
793     return 1;
794 }
795
796 /** \generated */
797 unsigned CppCastExpressionAST::firstToken() const
798 {
799     if (cast_token)
800         return cast_token;
801     if (less_token)
802         return less_token;
803     if (type_id)
804         if (unsigned candidate = type_id->firstToken())
805             return candidate;
806     if (greater_token)
807         return greater_token;
808     if (lparen_token)
809         return lparen_token;
810     if (expression)
811         if (unsigned candidate = expression->firstToken())
812             return candidate;
813     if (rparen_token)
814         return rparen_token;
815     return 0;
816 }
817
818 /** \generated */
819 unsigned CppCastExpressionAST::lastToken() const
820 {
821     if (rparen_token)
822         return rparen_token + 1;
823     if (expression)
824         if (unsigned candidate = expression->lastToken())
825             return candidate;
826     if (lparen_token)
827         return lparen_token + 1;
828     if (greater_token)
829         return greater_token + 1;
830     if (type_id)
831         if (unsigned candidate = type_id->lastToken())
832             return candidate;
833     if (less_token)
834         return less_token + 1;
835     if (cast_token)
836         return cast_token + 1;
837     return 1;
838 }
839
840 /** \generated */
841 unsigned CtorInitializerAST::firstToken() const
842 {
843     if (colon_token)
844         return colon_token;
845     if (member_initializer_list)
846         if (unsigned candidate = member_initializer_list->firstToken())
847             return candidate;
848     if (dot_dot_dot_token)
849         return dot_dot_dot_token;
850     return 0;
851 }
852
853 /** \generated */
854 unsigned CtorInitializerAST::lastToken() const
855 {
856     if (dot_dot_dot_token)
857         return dot_dot_dot_token + 1;
858     if (member_initializer_list)
859         if (unsigned candidate = member_initializer_list->lastToken())
860             return candidate;
861     if (colon_token)
862         return colon_token + 1;
863     return 1;
864 }
865
866 /** \generated */
867 unsigned DeclarationStatementAST::firstToken() const
868 {
869     if (declaration)
870         if (unsigned candidate = declaration->firstToken())
871             return candidate;
872     return 0;
873 }
874
875 /** \generated */
876 unsigned DeclarationStatementAST::lastToken() const
877 {
878     if (declaration)
879         if (unsigned candidate = declaration->lastToken())
880             return candidate;
881     return 1;
882 }
883
884 /** \generated */
885 unsigned DeclaratorAST::firstToken() const
886 {
887     if (attribute_list)
888         if (unsigned candidate = attribute_list->firstToken())
889             return candidate;
890     if (ptr_operator_list)
891         if (unsigned candidate = ptr_operator_list->firstToken())
892             return candidate;
893     if (core_declarator)
894         if (unsigned candidate = core_declarator->firstToken())
895             return candidate;
896     if (postfix_declarator_list)
897         if (unsigned candidate = postfix_declarator_list->firstToken())
898             return candidate;
899     if (post_attribute_list)
900         if (unsigned candidate = post_attribute_list->firstToken())
901             return candidate;
902     if (equal_token)
903         return equal_token;
904     if (initializer)
905         if (unsigned candidate = initializer->firstToken())
906             return candidate;
907     return 0;
908 }
909
910 /** \generated */
911 unsigned DeclaratorAST::lastToken() const
912 {
913     if (initializer)
914         if (unsigned candidate = initializer->lastToken())
915             return candidate;
916     if (equal_token)
917         return equal_token + 1;
918     if (post_attribute_list)
919         if (unsigned candidate = post_attribute_list->lastToken())
920             return candidate;
921     if (postfix_declarator_list)
922         if (unsigned candidate = postfix_declarator_list->lastToken())
923             return candidate;
924     if (core_declarator)
925         if (unsigned candidate = core_declarator->lastToken())
926             return candidate;
927     if (ptr_operator_list)
928         if (unsigned candidate = ptr_operator_list->lastToken())
929             return candidate;
930     if (attribute_list)
931         if (unsigned candidate = attribute_list->lastToken())
932             return candidate;
933     return 1;
934 }
935
936 /** \generated */
937 unsigned DeclaratorIdAST::firstToken() const
938 {
939     if (dot_dot_dot_token)
940         return dot_dot_dot_token;
941     if (name)
942         if (unsigned candidate = name->firstToken())
943             return candidate;
944     return 0;
945 }
946
947 /** \generated */
948 unsigned DeclaratorIdAST::lastToken() const
949 {
950     if (name)
951         if (unsigned candidate = name->lastToken())
952             return candidate;
953     if (dot_dot_dot_token)
954         return dot_dot_dot_token + 1;
955     return 1;
956 }
957
958 /** \generated */
959 unsigned DeleteExpressionAST::firstToken() const
960 {
961     if (scope_token)
962         return scope_token;
963     if (delete_token)
964         return delete_token;
965     if (lbracket_token)
966         return lbracket_token;
967     if (rbracket_token)
968         return rbracket_token;
969     if (expression)
970         if (unsigned candidate = expression->firstToken())
971             return candidate;
972     return 0;
973 }
974
975 /** \generated */
976 unsigned DeleteExpressionAST::lastToken() const
977 {
978     if (expression)
979         if (unsigned candidate = expression->lastToken())
980             return candidate;
981     if (rbracket_token)
982         return rbracket_token + 1;
983     if (lbracket_token)
984         return lbracket_token + 1;
985     if (delete_token)
986         return delete_token + 1;
987     if (scope_token)
988         return scope_token + 1;
989     return 1;
990 }
991
992 /** \generated */
993 unsigned DestructorNameAST::firstToken() const
994 {
995     if (tilde_token)
996         return tilde_token;
997     if (identifier_token)
998         return identifier_token;
999     return 0;
1000 }
1001
1002 /** \generated */
1003 unsigned DestructorNameAST::lastToken() const
1004 {
1005     if (identifier_token)
1006         return identifier_token + 1;
1007     if (tilde_token)
1008         return tilde_token + 1;
1009     return 1;
1010 }
1011
1012 /** \generated */
1013 unsigned DoStatementAST::firstToken() const
1014 {
1015     if (do_token)
1016         return do_token;
1017     if (statement)
1018         if (unsigned candidate = statement->firstToken())
1019             return candidate;
1020     if (while_token)
1021         return while_token;
1022     if (lparen_token)
1023         return lparen_token;
1024     if (expression)
1025         if (unsigned candidate = expression->firstToken())
1026             return candidate;
1027     if (rparen_token)
1028         return rparen_token;
1029     if (semicolon_token)
1030         return semicolon_token;
1031     return 0;
1032 }
1033
1034 /** \generated */
1035 unsigned DoStatementAST::lastToken() const
1036 {
1037     if (semicolon_token)
1038         return semicolon_token + 1;
1039     if (rparen_token)
1040         return rparen_token + 1;
1041     if (expression)
1042         if (unsigned candidate = expression->lastToken())
1043             return candidate;
1044     if (lparen_token)
1045         return lparen_token + 1;
1046     if (while_token)
1047         return while_token + 1;
1048     if (statement)
1049         if (unsigned candidate = statement->lastToken())
1050             return candidate;
1051     if (do_token)
1052         return do_token + 1;
1053     return 1;
1054 }
1055
1056 /** \generated */
1057 unsigned ElaboratedTypeSpecifierAST::firstToken() const
1058 {
1059     if (classkey_token)
1060         return classkey_token;
1061     if (attribute_list)
1062         if (unsigned candidate = attribute_list->firstToken())
1063             return candidate;
1064     if (name)
1065         if (unsigned candidate = name->firstToken())
1066             return candidate;
1067     return 0;
1068 }
1069
1070 /** \generated */
1071 unsigned ElaboratedTypeSpecifierAST::lastToken() const
1072 {
1073     if (name)
1074         if (unsigned candidate = name->lastToken())
1075             return candidate;
1076     if (attribute_list)
1077         if (unsigned candidate = attribute_list->lastToken())
1078             return candidate;
1079     if (classkey_token)
1080         return classkey_token + 1;
1081     return 1;
1082 }
1083
1084 /** \generated */
1085 unsigned EmptyDeclarationAST::firstToken() const
1086 {
1087     if (semicolon_token)
1088         return semicolon_token;
1089     return 0;
1090 }
1091
1092 /** \generated */
1093 unsigned EmptyDeclarationAST::lastToken() const
1094 {
1095     if (semicolon_token)
1096         return semicolon_token + 1;
1097     return 1;
1098 }
1099
1100 /** \generated */
1101 unsigned EnumSpecifierAST::firstToken() const
1102 {
1103     if (enum_token)
1104         return enum_token;
1105     if (name)
1106         if (unsigned candidate = name->firstToken())
1107             return candidate;
1108     if (lbrace_token)
1109         return lbrace_token;
1110     if (enumerator_list)
1111         if (unsigned candidate = enumerator_list->firstToken())
1112             return candidate;
1113     if (stray_comma_token)
1114         return stray_comma_token;
1115     if (rbrace_token)
1116         return rbrace_token;
1117     return 0;
1118 }
1119
1120 /** \generated */
1121 unsigned EnumSpecifierAST::lastToken() const
1122 {
1123     if (rbrace_token)
1124         return rbrace_token + 1;
1125     if (stray_comma_token)
1126         return stray_comma_token + 1;
1127     if (enumerator_list)
1128         if (unsigned candidate = enumerator_list->lastToken())
1129             return candidate;
1130     if (lbrace_token)
1131         return lbrace_token + 1;
1132     if (name)
1133         if (unsigned candidate = name->lastToken())
1134             return candidate;
1135     if (enum_token)
1136         return enum_token + 1;
1137     return 1;
1138 }
1139
1140 /** \generated */
1141 unsigned EnumeratorAST::firstToken() const
1142 {
1143     if (identifier_token)
1144         return identifier_token;
1145     if (equal_token)
1146         return equal_token;
1147     if (expression)
1148         if (unsigned candidate = expression->firstToken())
1149             return candidate;
1150     return 0;
1151 }
1152
1153 /** \generated */
1154 unsigned EnumeratorAST::lastToken() const
1155 {
1156     if (expression)
1157         if (unsigned candidate = expression->lastToken())
1158             return candidate;
1159     if (equal_token)
1160         return equal_token + 1;
1161     if (identifier_token)
1162         return identifier_token + 1;
1163     return 1;
1164 }
1165
1166 /** \generated */
1167 unsigned ExceptionDeclarationAST::firstToken() const
1168 {
1169     if (type_specifier_list)
1170         if (unsigned candidate = type_specifier_list->firstToken())
1171             return candidate;
1172     if (declarator)
1173         if (unsigned candidate = declarator->firstToken())
1174             return candidate;
1175     if (dot_dot_dot_token)
1176         return dot_dot_dot_token;
1177     return 0;
1178 }
1179
1180 /** \generated */
1181 unsigned ExceptionDeclarationAST::lastToken() const
1182 {
1183     if (dot_dot_dot_token)
1184         return dot_dot_dot_token + 1;
1185     if (declarator)
1186         if (unsigned candidate = declarator->lastToken())
1187             return candidate;
1188     if (type_specifier_list)
1189         if (unsigned candidate = type_specifier_list->lastToken())
1190             return candidate;
1191     return 1;
1192 }
1193
1194 /** \generated */
1195 unsigned ExceptionSpecificationAST::firstToken() const
1196 {
1197     if (throw_token)
1198         return throw_token;
1199     if (lparen_token)
1200         return lparen_token;
1201     if (dot_dot_dot_token)
1202         return dot_dot_dot_token;
1203     if (type_id_list)
1204         if (unsigned candidate = type_id_list->firstToken())
1205             return candidate;
1206     if (rparen_token)
1207         return rparen_token;
1208     return 0;
1209 }
1210
1211 /** \generated */
1212 unsigned ExceptionSpecificationAST::lastToken() const
1213 {
1214     if (rparen_token)
1215         return rparen_token + 1;
1216     if (type_id_list)
1217         if (unsigned candidate = type_id_list->lastToken())
1218             return candidate;
1219     if (dot_dot_dot_token)
1220         return dot_dot_dot_token + 1;
1221     if (lparen_token)
1222         return lparen_token + 1;
1223     if (throw_token)
1224         return throw_token + 1;
1225     return 1;
1226 }
1227
1228 /** \generated */
1229 unsigned ExpressionOrDeclarationStatementAST::firstToken() const
1230 {
1231     if (expression)
1232         if (unsigned candidate = expression->firstToken())
1233             return candidate;
1234     if (declaration)
1235         if (unsigned candidate = declaration->firstToken())
1236             return candidate;
1237     return 0;
1238 }
1239
1240 /** \generated */
1241 unsigned ExpressionOrDeclarationStatementAST::lastToken() const
1242 {
1243     if (declaration)
1244         if (unsigned candidate = declaration->lastToken())
1245             return candidate;
1246     if (expression)
1247         if (unsigned candidate = expression->lastToken())
1248             return candidate;
1249     return 1;
1250 }
1251
1252 /** \generated */
1253 unsigned ExpressionStatementAST::firstToken() const
1254 {
1255     if (expression)
1256         if (unsigned candidate = expression->firstToken())
1257             return candidate;
1258     if (semicolon_token)
1259         return semicolon_token;
1260     return 0;
1261 }
1262
1263 /** \generated */
1264 unsigned ExpressionStatementAST::lastToken() const
1265 {
1266     if (semicolon_token)
1267         return semicolon_token + 1;
1268     if (expression)
1269         if (unsigned candidate = expression->lastToken())
1270             return candidate;
1271     return 1;
1272 }
1273
1274 /** \generated */
1275 unsigned ForStatementAST::firstToken() const
1276 {
1277     if (for_token)
1278         return for_token;
1279     if (lparen_token)
1280         return lparen_token;
1281     if (initializer)
1282         if (unsigned candidate = initializer->firstToken())
1283             return candidate;
1284     if (condition)
1285         if (unsigned candidate = condition->firstToken())
1286             return candidate;
1287     if (semicolon_token)
1288         return semicolon_token;
1289     if (expression)
1290         if (unsigned candidate = expression->firstToken())
1291             return candidate;
1292     if (rparen_token)
1293         return rparen_token;
1294     if (statement)
1295         if (unsigned candidate = statement->firstToken())
1296             return candidate;
1297     return 0;
1298 }
1299
1300 /** \generated */
1301 unsigned ForStatementAST::lastToken() const
1302 {
1303     if (statement)
1304         if (unsigned candidate = statement->lastToken())
1305             return candidate;
1306     if (rparen_token)
1307         return rparen_token + 1;
1308     if (expression)
1309         if (unsigned candidate = expression->lastToken())
1310             return candidate;
1311     if (semicolon_token)
1312         return semicolon_token + 1;
1313     if (condition)
1314         if (unsigned candidate = condition->lastToken())
1315             return candidate;
1316     if (initializer)
1317         if (unsigned candidate = initializer->lastToken())
1318             return candidate;
1319     if (lparen_token)
1320         return lparen_token + 1;
1321     if (for_token)
1322         return for_token + 1;
1323     return 1;
1324 }
1325
1326 /** \generated */
1327 unsigned ForeachStatementAST::firstToken() const
1328 {
1329     if (foreach_token)
1330         return foreach_token;
1331     if (lparen_token)
1332         return lparen_token;
1333     if (type_specifier_list)
1334         if (unsigned candidate = type_specifier_list->firstToken())
1335             return candidate;
1336     if (declarator)
1337         if (unsigned candidate = declarator->firstToken())
1338             return candidate;
1339     if (initializer)
1340         if (unsigned candidate = initializer->firstToken())
1341             return candidate;
1342     if (comma_token)
1343         return comma_token;
1344     if (expression)
1345         if (unsigned candidate = expression->firstToken())
1346             return candidate;
1347     if (rparen_token)
1348         return rparen_token;
1349     if (statement)
1350         if (unsigned candidate = statement->firstToken())
1351             return candidate;
1352     return 0;
1353 }
1354
1355 /** \generated */
1356 unsigned ForeachStatementAST::lastToken() const
1357 {
1358     if (statement)
1359         if (unsigned candidate = statement->lastToken())
1360             return candidate;
1361     if (rparen_token)
1362         return rparen_token + 1;
1363     if (expression)
1364         if (unsigned candidate = expression->lastToken())
1365             return candidate;
1366     if (comma_token)
1367         return comma_token + 1;
1368     if (initializer)
1369         if (unsigned candidate = initializer->lastToken())
1370             return candidate;
1371     if (declarator)
1372         if (unsigned candidate = declarator->lastToken())
1373             return candidate;
1374     if (type_specifier_list)
1375         if (unsigned candidate = type_specifier_list->lastToken())
1376             return candidate;
1377     if (lparen_token)
1378         return lparen_token + 1;
1379     if (foreach_token)
1380         return foreach_token + 1;
1381     return 1;
1382 }
1383
1384 /** \generated */
1385 unsigned FunctionDeclaratorAST::firstToken() const
1386 {
1387     if (lparen_token)
1388         return lparen_token;
1389     if (parameter_declaration_clause)
1390         if (unsigned candidate = parameter_declaration_clause->firstToken())
1391             return candidate;
1392     if (rparen_token)
1393         return rparen_token;
1394     if (cv_qualifier_list)
1395         if (unsigned candidate = cv_qualifier_list->firstToken())
1396             return candidate;
1397     if (exception_specification)
1398         if (unsigned candidate = exception_specification->firstToken())
1399             return candidate;
1400     if (trailing_return_type)
1401         if (unsigned candidate = trailing_return_type->firstToken())
1402             return candidate;
1403     if (as_cpp_initializer)
1404         if (unsigned candidate = as_cpp_initializer->firstToken())
1405             return candidate;
1406     return 0;
1407 }
1408
1409 /** \generated */
1410 unsigned FunctionDeclaratorAST::lastToken() const
1411 {
1412     if (as_cpp_initializer)
1413         if (unsigned candidate = as_cpp_initializer->lastToken())
1414             return candidate;
1415     if (trailing_return_type)
1416         if (unsigned candidate = trailing_return_type->lastToken())
1417             return candidate;
1418     if (exception_specification)
1419         if (unsigned candidate = exception_specification->lastToken())
1420             return candidate;
1421     if (cv_qualifier_list)
1422         if (unsigned candidate = cv_qualifier_list->lastToken())
1423             return candidate;
1424     if (rparen_token)
1425         return rparen_token + 1;
1426     if (parameter_declaration_clause)
1427         if (unsigned candidate = parameter_declaration_clause->lastToken())
1428             return candidate;
1429     if (lparen_token)
1430         return lparen_token + 1;
1431     return 1;
1432 }
1433
1434 /** \generated */
1435 unsigned FunctionDefinitionAST::firstToken() const
1436 {
1437     if (qt_invokable_token)
1438         return qt_invokable_token;
1439     if (decl_specifier_list)
1440         if (unsigned candidate = decl_specifier_list->firstToken())
1441             return candidate;
1442     if (declarator)
1443         if (unsigned candidate = declarator->firstToken())
1444             return candidate;
1445     if (ctor_initializer)
1446         if (unsigned candidate = ctor_initializer->firstToken())
1447             return candidate;
1448     if (function_body)
1449         if (unsigned candidate = function_body->firstToken())
1450             return candidate;
1451     return 0;
1452 }
1453
1454 /** \generated */
1455 unsigned FunctionDefinitionAST::lastToken() const
1456 {
1457     if (function_body)
1458         if (unsigned candidate = function_body->lastToken())
1459             return candidate;
1460     if (ctor_initializer)
1461         if (unsigned candidate = ctor_initializer->lastToken())
1462             return candidate;
1463     if (declarator)
1464         if (unsigned candidate = declarator->lastToken())
1465             return candidate;
1466     if (decl_specifier_list)
1467         if (unsigned candidate = decl_specifier_list->lastToken())
1468             return candidate;
1469     if (qt_invokable_token)
1470         return qt_invokable_token + 1;
1471     return 1;
1472 }
1473
1474 /** \generated */
1475 unsigned GotoStatementAST::firstToken() const
1476 {
1477     if (goto_token)
1478         return goto_token;
1479     if (identifier_token)
1480         return identifier_token;
1481     if (semicolon_token)
1482         return semicolon_token;
1483     return 0;
1484 }
1485
1486 /** \generated */
1487 unsigned GotoStatementAST::lastToken() const
1488 {
1489     if (semicolon_token)
1490         return semicolon_token + 1;
1491     if (identifier_token)
1492         return identifier_token + 1;
1493     if (goto_token)
1494         return goto_token + 1;
1495     return 1;
1496 }
1497
1498 /** \generated */
1499 unsigned IdExpressionAST::firstToken() const
1500 {
1501     if (name)
1502         if (unsigned candidate = name->firstToken())
1503             return candidate;
1504     return 0;
1505 }
1506
1507 /** \generated */
1508 unsigned IdExpressionAST::lastToken() const
1509 {
1510     if (name)
1511         if (unsigned candidate = name->lastToken())
1512             return candidate;
1513     return 1;
1514 }
1515
1516 /** \generated */
1517 unsigned IfStatementAST::firstToken() const
1518 {
1519     if (if_token)
1520         return if_token;
1521     if (lparen_token)
1522         return lparen_token;
1523     if (condition)
1524         if (unsigned candidate = condition->firstToken())
1525             return candidate;
1526     if (rparen_token)
1527         return rparen_token;
1528     if (statement)
1529         if (unsigned candidate = statement->firstToken())
1530             return candidate;
1531     if (else_token)
1532         return else_token;
1533     if (else_statement)
1534         if (unsigned candidate = else_statement->firstToken())
1535             return candidate;
1536     return 0;
1537 }
1538
1539 /** \generated */
1540 unsigned IfStatementAST::lastToken() const
1541 {
1542     if (else_statement)
1543         if (unsigned candidate = else_statement->lastToken())
1544             return candidate;
1545     if (else_token)
1546         return else_token + 1;
1547     if (statement)
1548         if (unsigned candidate = statement->lastToken())
1549             return candidate;
1550     if (rparen_token)
1551         return rparen_token + 1;
1552     if (condition)
1553         if (unsigned candidate = condition->lastToken())
1554             return candidate;
1555     if (lparen_token)
1556         return lparen_token + 1;
1557     if (if_token)
1558         return if_token + 1;
1559     return 1;
1560 }
1561
1562 /** \generated */
1563 unsigned LabeledStatementAST::firstToken() const
1564 {
1565     if (label_token)
1566         return label_token;
1567     if (colon_token)
1568         return colon_token;
1569     if (statement)
1570         if (unsigned candidate = statement->firstToken())
1571             return candidate;
1572     return 0;
1573 }
1574
1575 /** \generated */
1576 unsigned LabeledStatementAST::lastToken() const
1577 {
1578     if (statement)
1579         if (unsigned candidate = statement->lastToken())
1580             return candidate;
1581     if (colon_token)
1582         return colon_token + 1;
1583     if (label_token)
1584         return label_token + 1;
1585     return 1;
1586 }
1587
1588 /** \generated */
1589 unsigned LambdaCaptureAST::firstToken() const
1590 {
1591     if (default_capture_token)
1592         return default_capture_token;
1593     if (capture_list)
1594         if (unsigned candidate = capture_list->firstToken())
1595             return candidate;
1596     return 0;
1597 }
1598
1599 /** \generated */
1600 unsigned LambdaCaptureAST::lastToken() const
1601 {
1602     if (capture_list)
1603         if (unsigned candidate = capture_list->lastToken())
1604             return candidate;
1605     if (default_capture_token)
1606         return default_capture_token + 1;
1607     return 1;
1608 }
1609
1610 /** \generated */
1611 unsigned LambdaDeclaratorAST::firstToken() const
1612 {
1613     if (lparen_token)
1614         return lparen_token;
1615     if (parameter_declaration_clause)
1616         if (unsigned candidate = parameter_declaration_clause->firstToken())
1617             return candidate;
1618     if (rparen_token)
1619         return rparen_token;
1620     if (attributes)
1621         if (unsigned candidate = attributes->firstToken())
1622             return candidate;
1623     if (mutable_token)
1624         return mutable_token;
1625     if (exception_specification)
1626         if (unsigned candidate = exception_specification->firstToken())
1627             return candidate;
1628     if (trailing_return_type)
1629         if (unsigned candidate = trailing_return_type->firstToken())
1630             return candidate;
1631     return 0;
1632 }
1633
1634 /** \generated */
1635 unsigned LambdaDeclaratorAST::lastToken() const
1636 {
1637     if (trailing_return_type)
1638         if (unsigned candidate = trailing_return_type->lastToken())
1639             return candidate;
1640     if (exception_specification)
1641         if (unsigned candidate = exception_specification->lastToken())
1642             return candidate;
1643     if (mutable_token)
1644         return mutable_token + 1;
1645     if (attributes)
1646         if (unsigned candidate = attributes->lastToken())
1647             return candidate;
1648     if (rparen_token)
1649         return rparen_token + 1;
1650     if (parameter_declaration_clause)
1651         if (unsigned candidate = parameter_declaration_clause->lastToken())
1652             return candidate;
1653     if (lparen_token)
1654         return lparen_token + 1;
1655     return 1;
1656 }
1657
1658 /** \generated */
1659 unsigned LambdaExpressionAST::firstToken() const
1660 {
1661     if (lambda_introducer)
1662         if (unsigned candidate = lambda_introducer->firstToken())
1663             return candidate;
1664     if (lambda_declarator)
1665         if (unsigned candidate = lambda_declarator->firstToken())
1666             return candidate;
1667     if (statement)
1668         if (unsigned candidate = statement->firstToken())
1669             return candidate;
1670     return 0;
1671 }
1672
1673 /** \generated */
1674 unsigned LambdaExpressionAST::lastToken() const
1675 {
1676     if (statement)
1677         if (unsigned candidate = statement->lastToken())
1678             return candidate;
1679     if (lambda_declarator)
1680         if (unsigned candidate = lambda_declarator->lastToken())
1681             return candidate;
1682     if (lambda_introducer)
1683         if (unsigned candidate = lambda_introducer->lastToken())
1684             return candidate;
1685     return 1;
1686 }
1687
1688 /** \generated */
1689 unsigned LambdaIntroducerAST::firstToken() const
1690 {
1691     if (lbracket_token)
1692         return lbracket_token;
1693     if (lambda_capture)
1694         if (unsigned candidate = lambda_capture->firstToken())
1695             return candidate;
1696     if (rbracket_token)
1697         return rbracket_token;
1698     return 0;
1699 }
1700
1701 /** \generated */
1702 unsigned LambdaIntroducerAST::lastToken() const
1703 {
1704     if (rbracket_token)
1705         return rbracket_token + 1;
1706     if (lambda_capture)
1707         if (unsigned candidate = lambda_capture->lastToken())
1708             return candidate;
1709     if (lbracket_token)
1710         return lbracket_token + 1;
1711     return 1;
1712 }
1713
1714 /** \generated */
1715 unsigned LinkageBodyAST::firstToken() const
1716 {
1717     if (lbrace_token)
1718         return lbrace_token;
1719     if (declaration_list)
1720         if (unsigned candidate = declaration_list->firstToken())
1721             return candidate;
1722     if (rbrace_token)
1723         return rbrace_token;
1724     return 0;
1725 }
1726
1727 /** \generated */
1728 unsigned LinkageBodyAST::lastToken() const
1729 {
1730     if (rbrace_token)
1731         return rbrace_token + 1;
1732     if (declaration_list)
1733         if (unsigned candidate = declaration_list->lastToken())
1734             return candidate;
1735     if (lbrace_token)
1736         return lbrace_token + 1;
1737     return 1;
1738 }
1739
1740 /** \generated */
1741 unsigned LinkageSpecificationAST::firstToken() const
1742 {
1743     if (extern_token)
1744         return extern_token;
1745     if (extern_type_token)
1746         return extern_type_token;
1747     if (declaration)
1748         if (unsigned candidate = declaration->firstToken())
1749             return candidate;
1750     return 0;
1751 }
1752
1753 /** \generated */
1754 unsigned LinkageSpecificationAST::lastToken() const
1755 {
1756     if (declaration)
1757         if (unsigned candidate = declaration->lastToken())
1758             return candidate;
1759     if (extern_type_token)
1760         return extern_type_token + 1;
1761     if (extern_token)
1762         return extern_token + 1;
1763     return 1;
1764 }
1765
1766 /** \generated */
1767 unsigned MemInitializerAST::firstToken() const
1768 {
1769     if (name)
1770         if (unsigned candidate = name->firstToken())
1771             return candidate;
1772     if (lparen_token)
1773         return lparen_token;
1774     if (expression_list)
1775         if (unsigned candidate = expression_list->firstToken())
1776             return candidate;
1777     if (rparen_token)
1778         return rparen_token;
1779     return 0;
1780 }
1781
1782 /** \generated */
1783 unsigned MemInitializerAST::lastToken() const
1784 {
1785     if (rparen_token)
1786         return rparen_token + 1;
1787     if (expression_list)
1788         if (unsigned candidate = expression_list->lastToken())
1789             return candidate;
1790     if (lparen_token)
1791         return lparen_token + 1;
1792     if (name)
1793         if (unsigned candidate = name->lastToken())
1794             return candidate;
1795     return 1;
1796 }
1797
1798 /** \generated */
1799 unsigned MemberAccessAST::firstToken() const
1800 {
1801     if (base_expression)
1802         if (unsigned candidate = base_expression->firstToken())
1803             return candidate;
1804     if (access_token)
1805         return access_token;
1806     if (template_token)
1807         return template_token;
1808     if (member_name)
1809         if (unsigned candidate = member_name->firstToken())
1810             return candidate;
1811     return 0;
1812 }
1813
1814 /** \generated */
1815 unsigned MemberAccessAST::lastToken() const
1816 {
1817     if (member_name)
1818         if (unsigned candidate = member_name->lastToken())
1819             return candidate;
1820     if (template_token)
1821         return template_token + 1;
1822     if (access_token)
1823         return access_token + 1;
1824     if (base_expression)
1825         if (unsigned candidate = base_expression->lastToken())
1826             return candidate;
1827     return 1;
1828 }
1829
1830 /** \generated */
1831 unsigned NamedTypeSpecifierAST::firstToken() const
1832 {
1833     if (name)
1834         if (unsigned candidate = name->firstToken())
1835             return candidate;
1836     return 0;
1837 }
1838
1839 /** \generated */
1840 unsigned NamedTypeSpecifierAST::lastToken() const
1841 {
1842     if (name)
1843         if (unsigned candidate = name->lastToken())
1844             return candidate;
1845     return 1;
1846 }
1847
1848 /** \generated */
1849 unsigned NamespaceAST::firstToken() const
1850 {
1851     if (namespace_token)
1852         return namespace_token;
1853     if (identifier_token)
1854         return identifier_token;
1855     if (attribute_list)
1856         if (unsigned candidate = attribute_list->firstToken())
1857             return candidate;
1858     if (linkage_body)
1859         if (unsigned candidate = linkage_body->firstToken())
1860             return candidate;
1861     return 0;
1862 }
1863
1864 /** \generated */
1865 unsigned NamespaceAST::lastToken() const
1866 {
1867     if (linkage_body)
1868         if (unsigned candidate = linkage_body->lastToken())
1869             return candidate;
1870     if (attribute_list)
1871         if (unsigned candidate = attribute_list->lastToken())
1872             return candidate;
1873     if (identifier_token)
1874         return identifier_token + 1;
1875     if (namespace_token)
1876         return namespace_token + 1;
1877     return 1;
1878 }
1879
1880 /** \generated */
1881 unsigned NamespaceAliasDefinitionAST::firstToken() const
1882 {
1883     if (namespace_token)
1884         return namespace_token;
1885     if (namespace_name_token)
1886         return namespace_name_token;
1887     if (equal_token)
1888         return equal_token;
1889     if (name)
1890         if (unsigned candidate = name->firstToken())
1891             return candidate;
1892     if (semicolon_token)
1893         return semicolon_token;
1894     return 0;
1895 }
1896
1897 /** \generated */
1898 unsigned NamespaceAliasDefinitionAST::lastToken() const
1899 {
1900     if (semicolon_token)
1901         return semicolon_token + 1;
1902     if (name)
1903         if (unsigned candidate = name->lastToken())
1904             return candidate;
1905     if (equal_token)
1906         return equal_token + 1;
1907     if (namespace_name_token)
1908         return namespace_name_token + 1;
1909     if (namespace_token)
1910         return namespace_token + 1;
1911     return 1;
1912 }
1913
1914 /** \generated */
1915 unsigned NestedDeclaratorAST::firstToken() const
1916 {
1917     if (lparen_token)
1918         return lparen_token;
1919     if (declarator)
1920         if (unsigned candidate = declarator->firstToken())
1921             return candidate;
1922     if (rparen_token)
1923         return rparen_token;
1924     return 0;
1925 }
1926
1927 /** \generated */
1928 unsigned NestedDeclaratorAST::lastToken() const
1929 {
1930     if (rparen_token)
1931         return rparen_token + 1;
1932     if (declarator)
1933         if (unsigned candidate = declarator->lastToken())
1934             return candidate;
1935     if (lparen_token)
1936         return lparen_token + 1;
1937     return 1;
1938 }
1939
1940 /** \generated */
1941 unsigned NestedExpressionAST::firstToken() const
1942 {
1943     if (lparen_token)
1944         return lparen_token;
1945     if (expression)
1946         if (unsigned candidate = expression->firstToken())
1947             return candidate;
1948     if (rparen_token)
1949         return rparen_token;
1950     return 0;
1951 }
1952
1953 /** \generated */
1954 unsigned NestedExpressionAST::lastToken() const
1955 {
1956     if (rparen_token)
1957         return rparen_token + 1;
1958     if (expression)
1959         if (unsigned candidate = expression->lastToken())
1960             return candidate;
1961     if (lparen_token)
1962         return lparen_token + 1;
1963     return 1;
1964 }
1965
1966 /** \generated */
1967 unsigned NestedNameSpecifierAST::firstToken() const
1968 {
1969     if (class_or_namespace_name)
1970         if (unsigned candidate = class_or_namespace_name->firstToken())
1971             return candidate;
1972     if (scope_token)
1973         return scope_token;
1974     return 0;
1975 }
1976
1977 /** \generated */
1978 unsigned NestedNameSpecifierAST::lastToken() const
1979 {
1980     if (scope_token)
1981         return scope_token + 1;
1982     if (class_or_namespace_name)
1983         if (unsigned candidate = class_or_namespace_name->lastToken())
1984             return candidate;
1985     return 1;
1986 }
1987
1988 /** \generated */
1989 unsigned NewArrayDeclaratorAST::firstToken() const
1990 {
1991     if (lbracket_token)
1992         return lbracket_token;
1993     if (expression)
1994         if (unsigned candidate = expression->firstToken())
1995             return candidate;
1996     if (rbracket_token)
1997         return rbracket_token;
1998     return 0;
1999 }
2000
2001 /** \generated */
2002 unsigned NewArrayDeclaratorAST::lastToken() const
2003 {
2004     if (rbracket_token)
2005         return rbracket_token + 1;
2006     if (expression)
2007         if (unsigned candidate = expression->lastToken())
2008             return candidate;
2009     if (lbracket_token)
2010         return lbracket_token + 1;
2011     return 1;
2012 }
2013
2014 /** \generated */
2015 unsigned NewExpressionAST::firstToken() const
2016 {
2017     if (scope_token)
2018         return scope_token;
2019     if (new_token)
2020         return new_token;
2021     if (new_placement)
2022         if (unsigned candidate = new_placement->firstToken())
2023             return candidate;
2024     if (lparen_token)
2025         return lparen_token;
2026     if (type_id)
2027         if (unsigned candidate = type_id->firstToken())
2028             return candidate;
2029     if (rparen_token)
2030         return rparen_token;
2031     if (new_type_id)
2032         if (unsigned candidate = new_type_id->firstToken())
2033             return candidate;
2034     if (new_initializer)
2035         if (unsigned candidate = new_initializer->firstToken())
2036             return candidate;
2037     return 0;
2038 }
2039
2040 /** \generated */
2041 unsigned NewExpressionAST::lastToken() const
2042 {
2043     if (new_initializer)
2044         if (unsigned candidate = new_initializer->lastToken())
2045             return candidate;
2046     if (new_type_id)
2047         if (unsigned candidate = new_type_id->lastToken())
2048             return candidate;
2049     if (rparen_token)
2050         return rparen_token + 1;
2051     if (type_id)
2052         if (unsigned candidate = type_id->lastToken())
2053             return candidate;
2054     if (lparen_token)
2055         return lparen_token + 1;
2056     if (new_placement)
2057         if (unsigned candidate = new_placement->lastToken())
2058             return candidate;
2059     if (new_token)
2060         return new_token + 1;
2061     if (scope_token)
2062         return scope_token + 1;
2063     return 1;
2064 }
2065
2066 /** \generated */
2067 unsigned NewInitializerAST::firstToken() const
2068 {
2069     if (lparen_token)
2070         return lparen_token;
2071     if (expression)
2072         if (unsigned candidate = expression->firstToken())
2073             return candidate;
2074     if (rparen_token)
2075         return rparen_token;
2076     return 0;
2077 }
2078
2079 /** \generated */
2080 unsigned NewInitializerAST::lastToken() const
2081 {
2082     if (rparen_token)
2083         return rparen_token + 1;
2084     if (expression)
2085         if (unsigned candidate = expression->lastToken())
2086             return candidate;
2087     if (lparen_token)
2088         return lparen_token + 1;
2089     return 1;
2090 }
2091
2092 /** \generated */
2093 unsigned NewPlacementAST::firstToken() const
2094 {
2095     if (lparen_token)
2096         return lparen_token;
2097     if (expression_list)
2098         if (unsigned candidate = expression_list->firstToken())
2099             return candidate;
2100     if (rparen_token)
2101         return rparen_token;
2102     return 0;
2103 }
2104
2105 /** \generated */
2106 unsigned NewPlacementAST::lastToken() const
2107 {
2108     if (rparen_token)
2109         return rparen_token + 1;
2110     if (expression_list)
2111         if (unsigned candidate = expression_list->lastToken())
2112             return candidate;
2113     if (lparen_token)
2114         return lparen_token + 1;
2115     return 1;
2116 }
2117
2118 /** \generated */
2119 unsigned NewTypeIdAST::firstToken() const
2120 {
2121     if (type_specifier_list)
2122         if (unsigned candidate = type_specifier_list->firstToken())
2123             return candidate;
2124     if (ptr_operator_list)
2125         if (unsigned candidate = ptr_operator_list->firstToken())
2126             return candidate;
2127     if (new_array_declarator_list)
2128         if (unsigned candidate = new_array_declarator_list->firstToken())
2129             return candidate;
2130     return 0;
2131 }
2132
2133 /** \generated */
2134 unsigned NewTypeIdAST::lastToken() const
2135 {
2136     if (new_array_declarator_list)
2137         if (unsigned candidate = new_array_declarator_list->lastToken())
2138             return candidate;
2139     if (ptr_operator_list)
2140         if (unsigned candidate = ptr_operator_list->lastToken())
2141             return candidate;
2142     if (type_specifier_list)
2143         if (unsigned candidate = type_specifier_list->lastToken())
2144             return candidate;
2145     return 1;
2146 }
2147
2148 /** \generated */
2149 unsigned NumericLiteralAST::firstToken() const
2150 {
2151     if (literal_token)
2152         return literal_token;
2153     return 0;
2154 }
2155
2156 /** \generated */
2157 unsigned NumericLiteralAST::lastToken() const
2158 {
2159     if (literal_token)
2160         return literal_token + 1;
2161     return 1;
2162 }
2163
2164 /** \generated */
2165 unsigned ObjCClassDeclarationAST::firstToken() const
2166 {
2167     if (attribute_list)
2168         if (unsigned candidate = attribute_list->firstToken())
2169             return candidate;
2170     if (interface_token)
2171         return interface_token;
2172     if (implementation_token)
2173         return implementation_token;
2174     if (class_name)
2175         if (unsigned candidate = class_name->firstToken())
2176             return candidate;
2177     if (lparen_token)
2178         return lparen_token;
2179     if (category_name)
2180         if (unsigned candidate = category_name->firstToken())
2181             return candidate;
2182     if (rparen_token)
2183         return rparen_token;
2184     if (colon_token)
2185         return colon_token;
2186     if (superclass)
2187         if (unsigned candidate = superclass->firstToken())
2188             return candidate;
2189     if (protocol_refs)
2190         if (unsigned candidate = protocol_refs->firstToken())
2191             return candidate;
2192     if (inst_vars_decl)
2193         if (unsigned candidate = inst_vars_decl->firstToken())
2194             return candidate;
2195     if (member_declaration_list)
2196         if (unsigned candidate = member_declaration_list->firstToken())
2197             return candidate;
2198     if (end_token)
2199         return end_token;
2200     return 0;
2201 }
2202
2203 /** \generated */
2204 unsigned ObjCClassDeclarationAST::lastToken() const
2205 {
2206     if (end_token)
2207         return end_token + 1;
2208     if (member_declaration_list)
2209         if (unsigned candidate = member_declaration_list->lastToken())
2210             return candidate;
2211     if (inst_vars_decl)
2212         if (unsigned candidate = inst_vars_decl->lastToken())
2213             return candidate;
2214     if (protocol_refs)
2215         if (unsigned candidate = protocol_refs->lastToken())
2216             return candidate;
2217     if (superclass)
2218         if (unsigned candidate = superclass->lastToken())
2219             return candidate;
2220     if (colon_token)
2221         return colon_token + 1;
2222     if (rparen_token)
2223         return rparen_token + 1;
2224     if (category_name)
2225         if (unsigned candidate = category_name->lastToken())
2226             return candidate;
2227     if (lparen_token)
2228         return lparen_token + 1;
2229     if (class_name)
2230         if (unsigned candidate = class_name->lastToken())
2231             return candidate;
2232     if (implementation_token)
2233         return implementation_token + 1;
2234     if (interface_token)
2235         return interface_token + 1;
2236     if (attribute_list)
2237         if (unsigned candidate = attribute_list->lastToken())
2238             return candidate;
2239     return 1;
2240 }
2241
2242 /** \generated */
2243 unsigned ObjCClassForwardDeclarationAST::firstToken() const
2244 {
2245     if (attribute_list)
2246         if (unsigned candidate = attribute_list->firstToken())
2247             return candidate;
2248     if (class_token)
2249         return class_token;
2250     if (identifier_list)
2251         if (unsigned candidate = identifier_list->firstToken())
2252             return candidate;
2253     if (semicolon_token)
2254         return semicolon_token;
2255     return 0;
2256 }
2257
2258 /** \generated */
2259 unsigned ObjCClassForwardDeclarationAST::lastToken() const
2260 {
2261     if (semicolon_token)
2262         return semicolon_token + 1;
2263     if (identifier_list)
2264         if (unsigned candidate = identifier_list->lastToken())
2265             return candidate;
2266     if (class_token)
2267         return class_token + 1;
2268     if (attribute_list)
2269         if (unsigned candidate = attribute_list->lastToken())
2270             return candidate;
2271     return 1;
2272 }
2273
2274 /** \generated */
2275 unsigned ObjCDynamicPropertiesDeclarationAST::firstToken() const
2276 {
2277     if (dynamic_token)
2278         return dynamic_token;
2279     if (property_identifier_list)
2280         if (unsigned candidate = property_identifier_list->firstToken())
2281             return candidate;
2282     if (semicolon_token)
2283         return semicolon_token;
2284     return 0;
2285 }
2286
2287 /** \generated */
2288 unsigned ObjCDynamicPropertiesDeclarationAST::lastToken() const
2289 {
2290     if (semicolon_token)
2291         return semicolon_token + 1;
2292     if (property_identifier_list)
2293         if (unsigned candidate = property_identifier_list->lastToken())
2294             return candidate;
2295     if (dynamic_token)
2296         return dynamic_token + 1;
2297     return 1;
2298 }
2299
2300 /** \generated */
2301 unsigned ObjCEncodeExpressionAST::firstToken() const
2302 {
2303     if (encode_token)
2304         return encode_token;
2305     if (type_name)
2306         if (unsigned candidate = type_name->firstToken())
2307             return candidate;
2308     return 0;
2309 }
2310
2311 /** \generated */
2312 unsigned ObjCEncodeExpressionAST::lastToken() const
2313 {
2314     if (type_name)
2315         if (unsigned candidate = type_name->lastToken())
2316             return candidate;
2317     if (encode_token)
2318         return encode_token + 1;
2319     return 1;
2320 }
2321
2322 /** \generated */
2323 unsigned ObjCFastEnumerationAST::firstToken() const
2324 {
2325     if (for_token)
2326         return for_token;
2327     if (lparen_token)
2328         return lparen_token;
2329     if (type_specifier_list)
2330         if (unsigned candidate = type_specifier_list->firstToken())
2331             return candidate;
2332     if (declarator)
2333         if (unsigned candidate = declarator->firstToken())
2334             return candidate;
2335     if (initializer)
2336         if (unsigned candidate = initializer->firstToken())
2337             return candidate;
2338     if (in_token)
2339         return in_token;
2340     if (fast_enumeratable_expression)
2341         if (unsigned candidate = fast_enumeratable_expression->firstToken())
2342             return candidate;
2343     if (rparen_token)
2344         return rparen_token;
2345     if (statement)
2346         if (unsigned candidate = statement->firstToken())
2347             return candidate;
2348     return 0;
2349 }
2350
2351 /** \generated */
2352 unsigned ObjCFastEnumerationAST::lastToken() const
2353 {
2354     if (statement)
2355         if (unsigned candidate = statement->lastToken())
2356             return candidate;
2357     if (rparen_token)
2358         return rparen_token + 1;
2359     if (fast_enumeratable_expression)
2360         if (unsigned candidate = fast_enumeratable_expression->lastToken())
2361             return candidate;
2362     if (in_token)
2363         return in_token + 1;
2364     if (initializer)
2365         if (unsigned candidate = initializer->lastToken())
2366             return candidate;
2367     if (declarator)
2368         if (unsigned candidate = declarator->lastToken())
2369             return candidate;
2370     if (type_specifier_list)
2371         if (unsigned candidate = type_specifier_list->lastToken())
2372             return candidate;
2373     if (lparen_token)
2374         return lparen_token + 1;
2375     if (for_token)
2376         return for_token + 1;
2377     return 1;
2378 }
2379
2380 /** \generated */
2381 unsigned ObjCInstanceVariablesDeclarationAST::firstToken() const
2382 {
2383     if (lbrace_token)
2384         return lbrace_token;
2385     if (instance_variable_list)
2386         if (unsigned candidate = instance_variable_list->firstToken())
2387             return candidate;
2388     if (rbrace_token)
2389         return rbrace_token;
2390     return 0;
2391 }
2392
2393 /** \generated */
2394 unsigned ObjCInstanceVariablesDeclarationAST::lastToken() const
2395 {
2396     if (rbrace_token)
2397         return rbrace_token + 1;
2398     if (instance_variable_list)
2399         if (unsigned candidate = instance_variable_list->lastToken())
2400             return candidate;
2401     if (lbrace_token)
2402         return lbrace_token + 1;
2403     return 1;
2404 }
2405
2406 /** \generated */
2407 unsigned ObjCMessageArgumentAST::firstToken() const
2408 {
2409     if (parameter_value_expression)
2410         if (unsigned candidate = parameter_value_expression->firstToken())
2411             return candidate;
2412     return 0;
2413 }
2414
2415 /** \generated */
2416 unsigned ObjCMessageArgumentAST::lastToken() const
2417 {
2418     if (parameter_value_expression)
2419         if (unsigned candidate = parameter_value_expression->lastToken())
2420             return candidate;
2421     return 1;
2422 }
2423
2424 /** \generated */
2425 unsigned ObjCMessageArgumentDeclarationAST::firstToken() const
2426 {
2427     if (type_name)
2428         if (unsigned candidate = type_name->firstToken())
2429             return candidate;
2430     if (attribute_list)
2431         if (unsigned candidate = attribute_list->firstToken())
2432             return candidate;
2433     if (param_name)
2434         if (unsigned candidate = param_name->firstToken())
2435             return candidate;
2436     return 0;
2437 }
2438
2439 /** \generated */
2440 unsigned ObjCMessageArgumentDeclarationAST::lastToken() const
2441 {
2442     if (param_name)
2443         if (unsigned candidate = param_name->lastToken())
2444             return candidate;
2445     if (attribute_list)
2446         if (unsigned candidate = attribute_list->lastToken())
2447             return candidate;
2448     if (type_name)
2449         if (unsigned candidate = type_name->lastToken())
2450             return candidate;
2451     return 1;
2452 }
2453
2454 /** \generated */
2455 unsigned ObjCMessageExpressionAST::firstToken() const
2456 {
2457     if (lbracket_token)
2458         return lbracket_token;
2459     if (receiver_expression)
2460         if (unsigned candidate = receiver_expression->firstToken())
2461             return candidate;
2462     if (selector)
2463         if (unsigned candidate = selector->firstToken())
2464             return candidate;
2465     if (argument_list)
2466         if (unsigned candidate = argument_list->firstToken())
2467             return candidate;
2468     if (rbracket_token)
2469         return rbracket_token;
2470     return 0;
2471 }
2472
2473 /** \generated */
2474 unsigned ObjCMessageExpressionAST::lastToken() const
2475 {
2476     if (rbracket_token)
2477         return rbracket_token + 1;
2478     if (argument_list)
2479         if (unsigned candidate = argument_list->lastToken())
2480             return candidate;
2481     if (selector)
2482         if (unsigned candidate = selector->lastToken())
2483             return candidate;
2484     if (receiver_expression)
2485         if (unsigned candidate = receiver_expression->lastToken())
2486             return candidate;
2487     if (lbracket_token)
2488         return lbracket_token + 1;
2489     return 1;
2490 }
2491
2492 /** \generated */
2493 unsigned ObjCMethodDeclarationAST::firstToken() const
2494 {
2495     if (method_prototype)
2496         if (unsigned candidate = method_prototype->firstToken())
2497             return candidate;
2498     if (function_body)
2499         if (unsigned candidate = function_body->firstToken())
2500             return candidate;
2501     if (semicolon_token)
2502         return semicolon_token;
2503     return 0;
2504 }
2505
2506 /** \generated */
2507 unsigned ObjCMethodDeclarationAST::lastToken() const
2508 {
2509     if (semicolon_token)
2510         return semicolon_token + 1;
2511     if (function_body)
2512         if (unsigned candidate = function_body->lastToken())
2513             return candidate;
2514     if (method_prototype)
2515         if (unsigned candidate = method_prototype->lastToken())
2516             return candidate;
2517     return 1;
2518 }
2519
2520 /** \generated */
2521 unsigned ObjCMethodPrototypeAST::firstToken() const
2522 {
2523     if (method_type_token)
2524         return method_type_token;
2525     if (type_name)
2526         if (unsigned candidate = type_name->firstToken())
2527             return candidate;
2528     if (selector)
2529         if (unsigned candidate = selector->firstToken())
2530             return candidate;
2531     if (argument_list)
2532         if (unsigned candidate = argument_list->firstToken())
2533             return candidate;
2534     if (dot_dot_dot_token)
2535         return dot_dot_dot_token;
2536     if (attribute_list)
2537         if (unsigned candidate = attribute_list->firstToken())
2538             return candidate;
2539     return 0;
2540 }
2541
2542 /** \generated */
2543 unsigned ObjCMethodPrototypeAST::lastToken() const
2544 {
2545     if (attribute_list)
2546         if (unsigned candidate = attribute_list->lastToken())
2547             return candidate;
2548     if (dot_dot_dot_token)
2549         return dot_dot_dot_token + 1;
2550     if (argument_list)
2551         if (unsigned candidate = argument_list->lastToken())
2552             return candidate;
2553     if (selector)
2554         if (unsigned candidate = selector->lastToken())
2555             return candidate;
2556     if (type_name)
2557         if (unsigned candidate = type_name->lastToken())
2558             return candidate;
2559     if (method_type_token)
2560         return method_type_token + 1;
2561     return 1;
2562 }
2563
2564 /** \generated */
2565 unsigned ObjCPropertyAttributeAST::firstToken() const
2566 {
2567     if (attribute_identifier_token)
2568         return attribute_identifier_token;
2569     if (equals_token)
2570         return equals_token;
2571     if (method_selector)
2572         if (unsigned candidate = method_selector->firstToken())
2573             return candidate;
2574     return 0;
2575 }
2576
2577 /** \generated */
2578 unsigned ObjCPropertyAttributeAST::lastToken() const
2579 {
2580     if (method_selector)
2581         if (unsigned candidate = method_selector->lastToken())
2582             return candidate;
2583     if (equals_token)
2584         return equals_token + 1;
2585     if (attribute_identifier_token)
2586         return attribute_identifier_token + 1;
2587     return 1;
2588 }
2589
2590 /** \generated */
2591 unsigned ObjCPropertyDeclarationAST::firstToken() const
2592 {
2593     if (attribute_list)
2594         if (unsigned candidate = attribute_list->firstToken())
2595             return candidate;
2596     if (property_token)
2597         return property_token;
2598     if (lparen_token)
2599         return lparen_token;
2600     if (property_attribute_list)
2601         if (unsigned candidate = property_attribute_list->firstToken())
2602             return candidate;
2603     if (rparen_token)
2604         return rparen_token;
2605     if (simple_declaration)
2606         if (unsigned candidate = simple_declaration->firstToken())
2607             return candidate;
2608     return 0;
2609 }
2610
2611 /** \generated */
2612 unsigned ObjCPropertyDeclarationAST::lastToken() const
2613 {
2614     if (simple_declaration)
2615         if (unsigned candidate = simple_declaration->lastToken())
2616             return candidate;
2617     if (rparen_token)
2618         return rparen_token + 1;
2619     if (property_attribute_list)
2620         if (unsigned candidate = property_attribute_list->lastToken())
2621             return candidate;
2622     if (lparen_token)
2623         return lparen_token + 1;
2624     if (property_token)
2625         return property_token + 1;
2626     if (attribute_list)
2627         if (unsigned candidate = attribute_list->lastToken())
2628             return candidate;
2629     return 1;
2630 }
2631
2632 /** \generated */
2633 unsigned ObjCProtocolDeclarationAST::firstToken() const
2634 {
2635     if (attribute_list)
2636         if (unsigned candidate = attribute_list->firstToken())
2637             return candidate;
2638     if (protocol_token)
2639         return protocol_token;
2640     if (name)
2641         if (unsigned candidate = name->firstToken())
2642             return candidate;
2643     if (protocol_refs)
2644         if (unsigned candidate = protocol_refs->firstToken())
2645             return candidate;
2646     if (member_declaration_list)
2647         if (unsigned candidate = member_declaration_list->firstToken())
2648             return candidate;
2649     if (end_token)
2650         return end_token;
2651     return 0;
2652 }
2653
2654 /** \generated */
2655 unsigned ObjCProtocolDeclarationAST::lastToken() const
2656 {
2657     if (end_token)
2658         return end_token + 1;
2659     if (member_declaration_list)
2660         if (unsigned candidate = member_declaration_list->lastToken())
2661             return candidate;
2662     if (protocol_refs)
2663         if (unsigned candidate = protocol_refs->lastToken())
2664             return candidate;
2665     if (name)
2666         if (unsigned candidate = name->lastToken())
2667             return candidate;
2668     if (protocol_token)
2669         return protocol_token + 1;
2670     if (attribute_list)
2671         if (unsigned candidate = attribute_list->lastToken())
2672             return candidate;
2673     return 1;
2674 }
2675
2676 /** \generated */
2677 unsigned ObjCProtocolExpressionAST::firstToken() const
2678 {
2679     if (protocol_token)
2680         return protocol_token;
2681     if (lparen_token)
2682         return lparen_token;
2683     if (identifier_token)
2684         return identifier_token;
2685     if (rparen_token)
2686         return rparen_token;
2687     return 0;
2688 }
2689
2690 /** \generated */
2691 unsigned ObjCProtocolExpressionAST::lastToken() const
2692 {
2693     if (rparen_token)
2694         return rparen_token + 1;
2695     if (identifier_token)
2696         return identifier_token + 1;
2697     if (lparen_token)
2698         return lparen_token + 1;
2699     if (protocol_token)
2700         return protocol_token + 1;
2701     return 1;
2702 }
2703
2704 /** \generated */
2705 unsigned ObjCProtocolForwardDeclarationAST::firstToken() const
2706 {
2707     if (attribute_list)
2708         if (unsigned candidate = attribute_list->firstToken())
2709             return candidate;
2710     if (protocol_token)
2711         return protocol_token;
2712     if (identifier_list)
2713         if (unsigned candidate = identifier_list->firstToken())
2714             return candidate;
2715     if (semicolon_token)
2716         return semicolon_token;
2717     return 0;
2718 }
2719
2720 /** \generated */
2721 unsigned ObjCProtocolForwardDeclarationAST::lastToken() const
2722 {
2723     if (semicolon_token)
2724         return semicolon_token + 1;
2725     if (identifier_list)
2726         if (unsigned candidate = identifier_list->lastToken())
2727             return candidate;
2728     if (protocol_token)
2729         return protocol_token + 1;
2730     if (attribute_list)
2731         if (unsigned candidate = attribute_list->lastToken())
2732             return candidate;
2733     return 1;
2734 }
2735
2736 /** \generated */
2737 unsigned ObjCProtocolRefsAST::firstToken() const
2738 {
2739     if (less_token)
2740         return less_token;
2741     if (identifier_list)
2742         if (unsigned candidate = identifier_list->firstToken())
2743             return candidate;
2744     if (greater_token)
2745         return greater_token;
2746     return 0;
2747 }
2748
2749 /** \generated */
2750 unsigned ObjCProtocolRefsAST::lastToken() const
2751 {
2752     if (greater_token)
2753         return greater_token + 1;
2754     if (identifier_list)
2755         if (unsigned candidate = identifier_list->lastToken())
2756             return candidate;
2757     if (less_token)
2758         return less_token + 1;
2759     return 1;
2760 }
2761
2762 /** \generated */
2763 unsigned ObjCSelectorAST::firstToken() const
2764 {
2765     if (selector_argument_list)
2766         if (unsigned candidate = selector_argument_list->firstToken())
2767             return candidate;
2768     return 0;
2769 }
2770
2771 /** \generated */
2772 unsigned ObjCSelectorAST::lastToken() const
2773 {
2774     if (selector_argument_list)
2775         if (unsigned candidate = selector_argument_list->lastToken())
2776             return candidate;
2777     return 1;
2778 }
2779
2780 /** \generated */
2781 unsigned ObjCSelectorArgumentAST::firstToken() const
2782 {
2783     if (name_token)
2784         return name_token;
2785     if (colon_token)
2786         return colon_token;
2787     return 0;
2788 }
2789
2790 /** \generated */
2791 unsigned ObjCSelectorArgumentAST::lastToken() const
2792 {
2793     if (colon_token)
2794         return colon_token + 1;
2795     if (name_token)
2796         return name_token + 1;
2797     return 1;
2798 }
2799
2800 /** \generated */
2801 unsigned ObjCSelectorExpressionAST::firstToken() const
2802 {
2803     if (selector_token)
2804         return selector_token;
2805     if (lparen_token)
2806         return lparen_token;
2807     if (selector)
2808         if (unsigned candidate = selector->firstToken())
2809             return candidate;
2810     if (rparen_token)
2811         return rparen_token;
2812     return 0;
2813 }
2814
2815 /** \generated */
2816 unsigned ObjCSelectorExpressionAST::lastToken() const
2817 {
2818     if (rparen_token)
2819         return rparen_token + 1;
2820     if (selector)
2821         if (unsigned candidate = selector->lastToken())
2822             return candidate;
2823     if (lparen_token)
2824         return lparen_token + 1;
2825     if (selector_token)
2826         return selector_token + 1;
2827     return 1;
2828 }
2829
2830 /** \generated */
2831 unsigned ObjCSynchronizedStatementAST::firstToken() const
2832 {
2833     if (synchronized_token)
2834         return synchronized_token;
2835     if (lparen_token)
2836         return lparen_token;
2837     if (synchronized_object)
2838         if (unsigned candidate = synchronized_object->firstToken())
2839             return candidate;
2840     if (rparen_token)
2841         return rparen_token;
2842     if (statement)
2843         if (unsigned candidate = statement->firstToken())
2844             return candidate;
2845     return 0;
2846 }
2847
2848 /** \generated */
2849 unsigned ObjCSynchronizedStatementAST::lastToken() const
2850 {
2851     if (statement)
2852         if (unsigned candidate = statement->lastToken())
2853             return candidate;
2854     if (rparen_token)
2855         return rparen_token + 1;
2856     if (synchronized_object)
2857         if (unsigned candidate = synchronized_object->lastToken())
2858             return candidate;
2859     if (lparen_token)
2860         return lparen_token + 1;
2861     if (synchronized_token)
2862         return synchronized_token + 1;
2863     return 1;
2864 }
2865
2866 /** \generated */
2867 unsigned ObjCSynthesizedPropertiesDeclarationAST::firstToken() const
2868 {
2869     if (synthesized_token)
2870         return synthesized_token;
2871     if (property_identifier_list)
2872         if (unsigned candidate = property_identifier_list->firstToken())
2873             return candidate;
2874     if (semicolon_token)
2875         return semicolon_token;
2876     return 0;
2877 }
2878
2879 /** \generated */
2880 unsigned ObjCSynthesizedPropertiesDeclarationAST::lastToken() const
2881 {
2882     if (semicolon_token)
2883         return semicolon_token + 1;
2884     if (property_identifier_list)
2885         if (unsigned candidate = property_identifier_list->lastToken())
2886             return candidate;
2887     if (synthesized_token)
2888         return synthesized_token + 1;
2889     return 1;
2890 }
2891
2892 /** \generated */
2893 unsigned ObjCSynthesizedPropertyAST::firstToken() const
2894 {
2895     if (property_identifier_token)
2896         return property_identifier_token;
2897     if (equals_token)
2898         return equals_token;
2899     if (alias_identifier_token)
2900         return alias_identifier_token;
2901     return 0;
2902 }
2903
2904 /** \generated */
2905 unsigned ObjCSynthesizedPropertyAST::lastToken() const
2906 {
2907     if (alias_identifier_token)
2908         return alias_identifier_token + 1;
2909     if (equals_token)
2910         return equals_token + 1;
2911     if (property_identifier_token)
2912         return property_identifier_token + 1;
2913     return 1;
2914 }
2915
2916 /** \generated */
2917 unsigned ObjCTypeNameAST::firstToken() const
2918 {
2919     if (lparen_token)
2920         return lparen_token;
2921     if (type_qualifier_token)
2922         return type_qualifier_token;
2923     if (type_id)
2924         if (unsigned candidate = type_id->firstToken())
2925             return candidate;
2926     if (rparen_token)
2927         return rparen_token;
2928     return 0;
2929 }
2930
2931 /** \generated */
2932 unsigned ObjCTypeNameAST::lastToken() const
2933 {
2934     if (rparen_token)
2935         return rparen_token + 1;
2936     if (type_id)
2937         if (unsigned candidate = type_id->lastToken())
2938             return candidate;
2939     if (type_qualifier_token)
2940         return type_qualifier_token + 1;
2941     if (lparen_token)
2942         return lparen_token + 1;
2943     return 1;
2944 }
2945
2946 /** \generated */
2947 unsigned ObjCVisibilityDeclarationAST::firstToken() const
2948 {
2949     if (visibility_token)
2950         return visibility_token;
2951     return 0;
2952 }
2953
2954 /** \generated */
2955 unsigned ObjCVisibilityDeclarationAST::lastToken() const
2956 {
2957     if (visibility_token)
2958         return visibility_token + 1;
2959     return 1;
2960 }
2961
2962 /** \generated */
2963 unsigned OperatorAST::firstToken() const
2964 {
2965     if (op_token)
2966         return op_token;
2967     if (open_token)
2968         return open_token;
2969     if (close_token)
2970         return close_token;
2971     return 0;
2972 }
2973
2974 /** \generated */
2975 unsigned OperatorAST::lastToken() const
2976 {
2977     if (close_token)
2978         return close_token + 1;
2979     if (open_token)
2980         return open_token + 1;
2981     if (op_token)
2982         return op_token + 1;
2983     return 1;
2984 }
2985
2986 /** \generated */
2987 unsigned OperatorFunctionIdAST::firstToken() const
2988 {
2989     if (operator_token)
2990         return operator_token;
2991     if (op)
2992         if (unsigned candidate = op->firstToken())
2993             return candidate;
2994     return 0;
2995 }
2996
2997 /** \generated */
2998 unsigned OperatorFunctionIdAST::lastToken() const
2999 {
3000     if (op)
3001         if (unsigned candidate = op->lastToken())
3002             return candidate;
3003     if (operator_token)
3004         return operator_token + 1;
3005     return 1;
3006 }
3007
3008 /** \generated */
3009 unsigned ParameterDeclarationAST::firstToken() const
3010 {
3011     if (type_specifier_list)
3012         if (unsigned candidate = type_specifier_list->firstToken())
3013             return candidate;
3014     if (declarator)
3015         if (unsigned candidate = declarator->firstToken())
3016             return candidate;
3017     if (equal_token)
3018         return equal_token;
3019     if (expression)
3020         if (unsigned candidate = expression->firstToken())
3021             return candidate;
3022     return 0;
3023 }
3024
3025 /** \generated */
3026 unsigned ParameterDeclarationAST::lastToken() const
3027 {
3028     if (expression)
3029         if (unsigned candidate = expression->lastToken())
3030             return candidate;
3031     if (equal_token)
3032         return equal_token + 1;
3033     if (declarator)
3034         if (unsigned candidate = declarator->lastToken())
3035             return candidate;
3036     if (type_specifier_list)
3037         if (unsigned candidate = type_specifier_list->lastToken())
3038             return candidate;
3039     return 1;
3040 }
3041
3042 /** \generated */
3043 unsigned ParameterDeclarationClauseAST::firstToken() const
3044 {
3045     if (parameter_declaration_list)
3046         if (unsigned candidate = parameter_declaration_list->firstToken())
3047             return candidate;
3048     if (dot_dot_dot_token)
3049         return dot_dot_dot_token;
3050     return 0;
3051 }
3052
3053 /** \generated */
3054 unsigned ParameterDeclarationClauseAST::lastToken() const
3055 {
3056     if (dot_dot_dot_token)
3057         return dot_dot_dot_token + 1;
3058     if (parameter_declaration_list)
3059         if (unsigned candidate = parameter_declaration_list->lastToken())
3060             return candidate;
3061     return 1;
3062 }
3063
3064 /** \generated */
3065 unsigned PointerAST::firstToken() const
3066 {
3067     if (star_token)
3068         return star_token;
3069     if (cv_qualifier_list)
3070         if (unsigned candidate = cv_qualifier_list->firstToken())
3071             return candidate;
3072     return 0;
3073 }
3074
3075 /** \generated */
3076 unsigned PointerAST::lastToken() const
3077 {
3078     if (cv_qualifier_list)
3079         if (unsigned candidate = cv_qualifier_list->lastToken())
3080             return candidate;
3081     if (star_token)
3082         return star_token + 1;
3083     return 1;
3084 }
3085
3086 /** \generated */
3087 unsigned PointerToMemberAST::firstToken() const
3088 {
3089     if (global_scope_token)
3090         return global_scope_token;
3091     if (nested_name_specifier_list)
3092         if (unsigned candidate = nested_name_specifier_list->firstToken())
3093             return candidate;
3094     if (star_token)
3095         return star_token;
3096     if (cv_qualifier_list)
3097         if (unsigned candidate = cv_qualifier_list->firstToken())
3098             return candidate;
3099     return 0;
3100 }
3101
3102 /** \generated */
3103 unsigned PointerToMemberAST::lastToken() const
3104 {
3105     if (cv_qualifier_list)
3106         if (unsigned candidate = cv_qualifier_list->lastToken())
3107             return candidate;
3108     if (star_token)
3109         return star_token + 1;
3110     if (nested_name_specifier_list)
3111         if (unsigned candidate = nested_name_specifier_list->lastToken())
3112             return candidate;
3113     if (global_scope_token)
3114         return global_scope_token + 1;
3115     return 1;
3116 }
3117
3118 /** \generated */
3119 unsigned PostIncrDecrAST::firstToken() const
3120 {
3121     if (base_expression)
3122         if (unsigned candidate = base_expression->firstToken())
3123             return candidate;
3124     if (incr_decr_token)
3125         return incr_decr_token;
3126     return 0;
3127 }
3128
3129 /** \generated */
3130 unsigned PostIncrDecrAST::lastToken() const
3131 {
3132     if (incr_decr_token)
3133         return incr_decr_token + 1;
3134     if (base_expression)
3135         if (unsigned candidate = base_expression->lastToken())
3136             return candidate;
3137     return 1;
3138 }
3139
3140 /** \generated */
3141 unsigned QtEnumDeclarationAST::firstToken() const
3142 {
3143     if (enum_specifier_token)
3144         return enum_specifier_token;
3145     if (lparen_token)
3146         return lparen_token;
3147     if (enumerator_list)
3148         if (unsigned candidate = enumerator_list->firstToken())
3149             return candidate;
3150     if (rparen_token)
3151         return rparen_token;
3152     return 0;
3153 }
3154
3155 /** \generated */
3156 unsigned QtEnumDeclarationAST::lastToken() const
3157 {
3158     if (rparen_token)
3159         return rparen_token + 1;
3160     if (enumerator_list)
3161         if (unsigned candidate = enumerator_list->lastToken())
3162             return candidate;
3163     if (lparen_token)
3164         return lparen_token + 1;
3165     if (enum_specifier_token)
3166         return enum_specifier_token + 1;
3167     return 1;
3168 }
3169
3170 /** \generated */
3171 unsigned QtFlagsDeclarationAST::firstToken() const
3172 {
3173     if (flags_specifier_token)
3174         return flags_specifier_token;
3175     if (lparen_token)
3176         return lparen_token;
3177     if (flag_enums_list)
3178         if (unsigned candidate = flag_enums_list->firstToken())
3179             return candidate;
3180     if (rparen_token)
3181         return rparen_token;
3182     return 0;
3183 }
3184
3185 /** \generated */
3186 unsigned QtFlagsDeclarationAST::lastToken() const
3187 {
3188     if (rparen_token)
3189         return rparen_token + 1;
3190     if (flag_enums_list)
3191         if (unsigned candidate = flag_enums_list->lastToken())
3192             return candidate;
3193     if (lparen_token)
3194         return lparen_token + 1;
3195     if (flags_specifier_token)
3196         return flags_specifier_token + 1;
3197     return 1;
3198 }
3199
3200 /** \generated */
3201 unsigned QtInterfaceNameAST::firstToken() const
3202 {
3203     if (interface_name)
3204         if (unsigned candidate = interface_name->firstToken())
3205             return candidate;
3206     if (constraint_list)
3207         if (unsigned candidate = constraint_list->firstToken())
3208             return candidate;
3209     return 0;
3210 }
3211
3212 /** \generated */
3213 unsigned QtInterfaceNameAST::lastToken() const
3214 {
3215     if (constraint_list)
3216         if (unsigned candidate = constraint_list->lastToken())
3217             return candidate;
3218     if (interface_name)
3219         if (unsigned candidate = interface_name->lastToken())
3220             return candidate;
3221     return 1;
3222 }
3223
3224 /** \generated */
3225 unsigned QtInterfacesDeclarationAST::firstToken() const
3226 {
3227     if (interfaces_token)
3228         return interfaces_token;
3229     if (lparen_token)
3230         return lparen_token;
3231     if (interface_name_list)
3232         if (unsigned candidate = interface_name_list->firstToken())
3233             return candidate;
3234     if (rparen_token)
3235         return rparen_token;
3236     return 0;
3237 }
3238
3239 /** \generated */
3240 unsigned QtInterfacesDeclarationAST::lastToken() const
3241 {
3242     if (rparen_token)
3243         return rparen_token + 1;
3244     if (interface_name_list)
3245         if (unsigned candidate = interface_name_list->lastToken())
3246             return candidate;
3247     if (lparen_token)
3248         return lparen_token + 1;
3249     if (interfaces_token)
3250         return interfaces_token + 1;
3251     return 1;
3252 }
3253
3254 /** \generated */
3255 unsigned QtMemberDeclarationAST::firstToken() const
3256 {
3257     if (q_token)
3258         return q_token;
3259     if (lparen_token)
3260         return lparen_token;
3261     if (type_id)
3262         if (unsigned candidate = type_id->firstToken())
3263             return candidate;
3264     if (rparen_token)
3265         return rparen_token;
3266     return 0;
3267 }
3268
3269 /** \generated */
3270 unsigned QtMemberDeclarationAST::lastToken() const
3271 {
3272     if (rparen_token)
3273         return rparen_token + 1;
3274     if (type_id)
3275         if (unsigned candidate = type_id->lastToken())
3276             return candidate;
3277     if (lparen_token)
3278         return lparen_token + 1;
3279     if (q_token)
3280         return q_token + 1;
3281     return 1;
3282 }
3283
3284 /** \generated */
3285 unsigned QtMethodAST::firstToken() const
3286 {
3287     if (method_token)
3288         return method_token;
3289     if (lparen_token)
3290         return lparen_token;
3291     if (declarator)
3292         if (unsigned candidate = declarator->firstToken())
3293             return candidate;
3294     if (rparen_token)
3295         return rparen_token;
3296     return 0;
3297 }
3298
3299 /** \generated */
3300 unsigned QtMethodAST::lastToken() const
3301 {
3302     if (rparen_token)
3303         return rparen_token + 1;
3304     if (declarator)
3305         if (unsigned candidate = declarator->lastToken())
3306             return candidate;
3307     if (lparen_token)
3308         return lparen_token + 1;
3309     if (method_token)
3310         return method_token + 1;
3311     return 1;
3312 }
3313
3314 /** \generated */
3315 unsigned QtObjectTagAST::firstToken() const
3316 {
3317     if (q_object_token)
3318         return q_object_token;
3319     return 0;
3320 }
3321
3322 /** \generated */
3323 unsigned QtObjectTagAST::lastToken() const
3324 {
3325     if (q_object_token)
3326         return q_object_token + 1;
3327     return 1;
3328 }
3329
3330 /** \generated */
3331 unsigned QtPrivateSlotAST::firstToken() const
3332 {
3333     if (q_private_slot_token)
3334         return q_private_slot_token;
3335     if (lparen_token)
3336         return lparen_token;
3337     if (dptr_token)
3338         return dptr_token;
3339     if (dptr_lparen_token)
3340         return dptr_lparen_token;
3341     if (dptr_rparen_token)
3342         return dptr_rparen_token;
3343     if (comma_token)
3344         return comma_token;
3345     if (type_specifier_list)
3346         if (unsigned candidate = type_specifier_list->firstToken())
3347             return candidate;
3348     if (declarator)
3349         if (unsigned candidate = declarator->firstToken())
3350             return candidate;
3351     if (rparen_token)
3352         return rparen_token;
3353     return 0;
3354 }
3355
3356 /** \generated */
3357 unsigned QtPrivateSlotAST::lastToken() const
3358 {
3359     if (rparen_token)
3360         return rparen_token + 1;
3361     if (declarator)
3362         if (unsigned candidate = declarator->lastToken())
3363             return candidate;
3364     if (type_specifier_list)
3365         if (unsigned candidate = type_specifier_list->lastToken())
3366             return candidate;
3367     if (comma_token)
3368         return comma_token + 1;
3369     if (dptr_rparen_token)
3370         return dptr_rparen_token + 1;
3371     if (dptr_lparen_token)
3372         return dptr_lparen_token + 1;
3373     if (dptr_token)
3374         return dptr_token + 1;
3375     if (lparen_token)
3376         return lparen_token + 1;
3377     if (q_private_slot_token)
3378         return q_private_slot_token + 1;
3379     return 1;
3380 }
3381
3382 /** \generated */
3383 unsigned QtPropertyDeclarationAST::firstToken() const
3384 {
3385     if (property_specifier_token)
3386         return property_specifier_token;
3387     if (lparen_token)
3388         return lparen_token;
3389     if (expression)
3390         if (unsigned candidate = expression->firstToken())
3391             return candidate;
3392     if (comma_token)
3393         return comma_token;
3394     if (type_id)
3395         if (unsigned candidate = type_id->firstToken())
3396             return candidate;
3397     if (property_name)
3398         if (unsigned candidate = property_name->firstToken())
3399             return candidate;
3400     if (property_declaration_item_list)
3401         if (unsigned candidate = property_declaration_item_list->firstToken())
3402             return candidate;
3403     if (rparen_token)
3404         return rparen_token;
3405     return 0;
3406 }
3407
3408 /** \generated */
3409 unsigned QtPropertyDeclarationAST::lastToken() const
3410 {
3411     if (rparen_token)
3412         return rparen_token + 1;
3413     if (property_declaration_item_list)
3414         if (unsigned candidate = property_declaration_item_list->lastToken())
3415             return candidate;
3416     if (property_name)
3417         if (unsigned candidate = property_name->lastToken())
3418             return candidate;
3419     if (type_id)
3420         if (unsigned candidate = type_id->lastToken())
3421             return candidate;
3422     if (comma_token)
3423         return comma_token + 1;
3424     if (expression)
3425         if (unsigned candidate = expression->lastToken())
3426             return candidate;
3427     if (lparen_token)
3428         return lparen_token + 1;
3429     if (property_specifier_token)
3430         return property_specifier_token + 1;
3431     return 1;
3432 }
3433
3434 /** \generated */
3435 unsigned QtPropertyDeclarationItemAST::firstToken() const
3436 {
3437     if (item_name_token)
3438         return item_name_token;
3439     if (expression)
3440         if (unsigned candidate = expression->firstToken())
3441             return candidate;
3442     return 0;
3443 }
3444
3445 /** \generated */
3446 unsigned QtPropertyDeclarationItemAST::lastToken() const
3447 {
3448     if (expression)
3449         if (unsigned candidate = expression->lastToken())
3450             return candidate;
3451     if (item_name_token)
3452         return item_name_token + 1;
3453     return 1;
3454 }
3455
3456 /** \generated */
3457 unsigned QualifiedNameAST::firstToken() const
3458 {
3459     if (global_scope_token)
3460         return global_scope_token;
3461     if (nested_name_specifier_list)
3462         if (unsigned candidate = nested_name_specifier_list->firstToken())
3463             return candidate;
3464     if (unqualified_name)
3465         if (unsigned candidate = unqualified_name->firstToken())
3466             return candidate;
3467     return 0;
3468 }
3469
3470 /** \generated */
3471 unsigned QualifiedNameAST::lastToken() const
3472 {
3473     if (unqualified_name)
3474         if (unsigned candidate = unqualified_name->lastToken())
3475             return candidate;
3476     if (nested_name_specifier_list)
3477         if (unsigned candidate = nested_name_specifier_list->lastToken())
3478             return candidate;
3479     if (global_scope_token)
3480         return global_scope_token + 1;
3481     return 1;
3482 }
3483
3484 /** \generated */
3485 unsigned ReferenceAST::firstToken() const
3486 {
3487     if (reference_token)
3488         return reference_token;
3489     return 0;
3490 }
3491
3492 /** \generated */
3493 unsigned ReferenceAST::lastToken() const
3494 {
3495     if (reference_token)
3496         return reference_token + 1;
3497     return 1;
3498 }
3499
3500 /** \generated */
3501 unsigned ReturnStatementAST::firstToken() const
3502 {
3503     if (return_token)
3504         return return_token;
3505     if (expression)
3506         if (unsigned candidate = expression->firstToken())
3507             return candidate;
3508     if (semicolon_token)
3509         return semicolon_token;
3510     return 0;
3511 }
3512
3513 /** \generated */
3514 unsigned ReturnStatementAST::lastToken() const
3515 {
3516     if (semicolon_token)
3517         return semicolon_token + 1;
3518     if (expression)
3519         if (unsigned candidate = expression->lastToken())
3520             return candidate;
3521     if (return_token)
3522         return return_token + 1;
3523     return 1;
3524 }
3525
3526 /** \generated */
3527 unsigned SimpleDeclarationAST::firstToken() const
3528 {
3529     if (qt_invokable_token)
3530         return qt_invokable_token;
3531     if (decl_specifier_list)
3532         if (unsigned candidate = decl_specifier_list->firstToken())
3533             return candidate;
3534     if (declarator_list)
3535         if (unsigned candidate = declarator_list->firstToken())
3536             return candidate;
3537     if (semicolon_token)
3538         return semicolon_token;
3539     return 0;
3540 }
3541
3542 /** \generated */
3543 unsigned SimpleDeclarationAST::lastToken() const
3544 {
3545     if (semicolon_token)
3546         return semicolon_token + 1;
3547     if (declarator_list)
3548         if (unsigned candidate = declarator_list->lastToken())
3549             return candidate;
3550     if (decl_specifier_list)
3551         if (unsigned candidate = decl_specifier_list->lastToken())
3552             return candidate;
3553     if (qt_invokable_token)
3554         return qt_invokable_token + 1;
3555     return 1;
3556 }
3557
3558 /** \generated */
3559 unsigned SimpleNameAST::firstToken() const
3560 {
3561     if (identifier_token)
3562         return identifier_token;
3563     return 0;
3564 }
3565
3566 /** \generated */
3567 unsigned SimpleNameAST::lastToken() const
3568 {
3569     if (identifier_token)
3570         return identifier_token + 1;
3571     return 1;
3572 }
3573
3574 /** \generated */
3575 unsigned SimpleSpecifierAST::firstToken() const
3576 {
3577     if (specifier_token)
3578         return specifier_token;
3579     return 0;
3580 }
3581
3582 /** \generated */
3583 unsigned SimpleSpecifierAST::lastToken() const
3584 {
3585     if (specifier_token)
3586         return specifier_token + 1;
3587     return 1;
3588 }
3589
3590 /** \generated */
3591 unsigned SizeofExpressionAST::firstToken() const
3592 {
3593     if (sizeof_token)
3594         return sizeof_token;
3595     if (dot_dot_dot_token)
3596         return dot_dot_dot_token;
3597     if (lparen_token)
3598         return lparen_token;
3599     if (expression)
3600         if (unsigned candidate = expression->firstToken())
3601             return candidate;
3602     if (rparen_token)
3603         return rparen_token;
3604     return 0;
3605 }
3606
3607 /** \generated */
3608 unsigned SizeofExpressionAST::lastToken() const
3609 {
3610     if (rparen_token)
3611         return rparen_token + 1;
3612     if (expression)
3613         if (unsigned candidate = expression->lastToken())
3614             return candidate;
3615     if (lparen_token)
3616         return lparen_token + 1;
3617     if (dot_dot_dot_token)
3618         return dot_dot_dot_token + 1;
3619     if (sizeof_token)
3620         return sizeof_token + 1;
3621     return 1;
3622 }
3623
3624 /** \generated */
3625 unsigned StringLiteralAST::firstToken() const
3626 {
3627     if (literal_token)
3628         return literal_token;
3629     if (next)
3630         if (unsigned candidate = next->firstToken())
3631             return candidate;
3632     return 0;
3633 }
3634
3635 /** \generated */
3636 unsigned StringLiteralAST::lastToken() const
3637 {
3638     if (next)
3639         if (unsigned candidate = next->lastToken())
3640             return candidate;
3641     if (literal_token)
3642         return literal_token + 1;
3643     return 1;
3644 }
3645
3646 /** \generated */
3647 unsigned SwitchStatementAST::firstToken() const
3648 {
3649     if (switch_token)
3650         return switch_token;
3651     if (lparen_token)
3652         return lparen_token;
3653     if (condition)
3654         if (unsigned candidate = condition->firstToken())
3655             return candidate;
3656     if (rparen_token)
3657         return rparen_token;
3658     if (statement)
3659         if (unsigned candidate = statement->firstToken())
3660             return candidate;
3661     return 0;
3662 }
3663
3664 /** \generated */
3665 unsigned SwitchStatementAST::lastToken() const
3666 {
3667     if (statement)
3668         if (unsigned candidate = statement->lastToken())
3669             return candidate;
3670     if (rparen_token)
3671         return rparen_token + 1;
3672     if (condition)
3673         if (unsigned candidate = condition->lastToken())
3674             return candidate;
3675     if (lparen_token)
3676         return lparen_token + 1;
3677     if (switch_token)
3678         return switch_token + 1;
3679     return 1;
3680 }
3681
3682 /** \generated */
3683 unsigned TemplateDeclarationAST::firstToken() const
3684 {
3685     if (export_token)
3686         return export_token;
3687     if (template_token)
3688         return template_token;
3689     if (less_token)
3690         return less_token;
3691     if (template_parameter_list)
3692         if (unsigned candidate = template_parameter_list->firstToken())
3693             return candidate;
3694     if (greater_token)
3695         return greater_token;
3696     if (declaration)
3697         if (unsigned candidate = declaration->firstToken())
3698             return candidate;
3699     return 0;
3700 }
3701
3702 /** \generated */
3703 unsigned TemplateDeclarationAST::lastToken() const
3704 {
3705     if (declaration)
3706         if (unsigned candidate = declaration->lastToken())
3707             return candidate;
3708     if (greater_token)
3709         return greater_token + 1;
3710     if (template_parameter_list)
3711         if (unsigned candidate = template_parameter_list->lastToken())
3712             return candidate;
3713     if (less_token)
3714         return less_token + 1;
3715     if (template_token)
3716         return template_token + 1;
3717     if (export_token)
3718         return export_token + 1;
3719     return 1;
3720 }
3721
3722 /** \generated */
3723 unsigned TemplateIdAST::firstToken() const
3724 {
3725     if (template_token)
3726         return template_token;
3727     if (identifier_token)
3728         return identifier_token;
3729     if (less_token)
3730         return less_token;
3731     if (template_argument_list)
3732         if (unsigned candidate = template_argument_list->firstToken())
3733             return candidate;
3734     if (greater_token)
3735         return greater_token;
3736     return 0;
3737 }
3738
3739 /** \generated */
3740 unsigned TemplateIdAST::lastToken() const
3741 {
3742     if (greater_token)
3743         return greater_token + 1;
3744     if (template_argument_list)
3745         if (unsigned candidate = template_argument_list->lastToken())
3746             return candidate;
3747     if (less_token)
3748         return less_token + 1;
3749     if (identifier_token)
3750         return identifier_token + 1;
3751     if (template_token)
3752         return template_token + 1;
3753     return 1;
3754 }
3755
3756 /** \generated */
3757 unsigned TemplateTypeParameterAST::firstToken() const
3758 {
3759     if (template_token)
3760         return template_token;
3761     if (less_token)
3762         return less_token;
3763     if (template_parameter_list)
3764         if (unsigned candidate = template_parameter_list->firstToken())
3765             return candidate;
3766     if (greater_token)
3767         return greater_token;
3768     if (class_token)
3769         return class_token;
3770     if (dot_dot_dot_token)
3771         return dot_dot_dot_token;
3772     if (name)
3773         if (unsigned candidate = name->firstToken())
3774             return candidate;
3775     if (equal_token)
3776         return equal_token;
3777     if (type_id)
3778         if (unsigned candidate = type_id->firstToken())
3779             return candidate;
3780     return 0;
3781 }
3782
3783 /** \generated */
3784 unsigned TemplateTypeParameterAST::lastToken() const
3785 {
3786     if (type_id)
3787         if (unsigned candidate = type_id->lastToken())
3788             return candidate;
3789     if (equal_token)
3790         return equal_token + 1;
3791     if (name)
3792         if (unsigned candidate = name->lastToken())
3793             return candidate;
3794     if (dot_dot_dot_token)
3795         return dot_dot_dot_token + 1;
3796     if (class_token)
3797         return class_token + 1;
3798     if (greater_token)
3799         return greater_token + 1;
3800     if (template_parameter_list)
3801         if (unsigned candidate = template_parameter_list->lastToken())
3802             return candidate;
3803     if (less_token)
3804         return less_token + 1;
3805     if (template_token)
3806         return template_token + 1;
3807     return 1;
3808 }
3809
3810 /** \generated */
3811 unsigned ThisExpressionAST::firstToken() const
3812 {
3813     if (this_token)
3814         return this_token;
3815     return 0;
3816 }
3817
3818 /** \generated */
3819 unsigned ThisExpressionAST::lastToken() const
3820 {
3821     if (this_token)
3822         return this_token + 1;
3823     return 1;
3824 }
3825
3826 /** \generated */
3827 unsigned ThrowExpressionAST::firstToken() const
3828 {
3829     if (throw_token)
3830         return throw_token;
3831     if (expression)
3832         if (unsigned candidate = expression->firstToken())
3833             return candidate;
3834     return 0;
3835 }
3836
3837 /** \generated */
3838 unsigned ThrowExpressionAST::lastToken() const
3839 {
3840     if (expression)
3841         if (unsigned candidate = expression->lastToken())
3842             return candidate;
3843     if (throw_token)
3844         return throw_token + 1;
3845     return 1;
3846 }
3847
3848 /** \generated */
3849 unsigned TrailingReturnTypeAST::firstToken() const
3850 {
3851     if (arrow_token)
3852         return arrow_token;
3853     if (attributes)
3854         if (unsigned candidate = attributes->firstToken())
3855             return candidate;
3856     if (type_specifier_list)
3857         if (unsigned candidate = type_specifier_list->firstToken())
3858             return candidate;
3859     if (declarator)
3860         if (unsigned candidate = declarator->firstToken())
3861             return candidate;
3862     return 0;
3863 }
3864
3865 /** \generated */
3866 unsigned TrailingReturnTypeAST::lastToken() const
3867 {
3868     if (declarator)
3869         if (unsigned candidate = declarator->lastToken())
3870             return candidate;
3871     if (type_specifier_list)
3872         if (unsigned candidate = type_specifier_list->lastToken())
3873             return candidate;
3874     if (attributes)
3875         if (unsigned candidate = attributes->lastToken())
3876             return candidate;
3877     if (arrow_token)
3878         return arrow_token + 1;
3879     return 1;
3880 }
3881
3882 /** \generated */
3883 unsigned TranslationUnitAST::firstToken() const
3884 {
3885     if (declaration_list)
3886         if (unsigned candidate = declaration_list->firstToken())
3887             return candidate;
3888     return 0;
3889 }
3890
3891 /** \generated */
3892 unsigned TranslationUnitAST::lastToken() const
3893 {
3894     if (declaration_list)
3895         if (unsigned candidate = declaration_list->lastToken())
3896             return candidate;
3897     return 1;
3898 }
3899
3900 /** \generated */
3901 unsigned TryBlockStatementAST::firstToken() const
3902 {
3903     if (try_token)
3904         return try_token;
3905     if (statement)
3906         if (unsigned candidate = statement->firstToken())
3907             return candidate;
3908     if (catch_clause_list)
3909         if (unsigned candidate = catch_clause_list->firstToken())
3910             return candidate;
3911     return 0;
3912 }
3913
3914 /** \generated */
3915 unsigned TryBlockStatementAST::lastToken() const
3916 {
3917     if (catch_clause_list)
3918         if (unsigned candidate = catch_clause_list->lastToken())
3919             return candidate;
3920     if (statement)
3921         if (unsigned candidate = statement->lastToken())
3922             return candidate;
3923     if (try_token)
3924         return try_token + 1;
3925     return 1;
3926 }
3927
3928 /** \generated */
3929 unsigned TypeConstructorCallAST::firstToken() const
3930 {
3931     if (type_specifier_list)
3932         if (unsigned candidate = type_specifier_list->firstToken())
3933             return candidate;
3934     if (lparen_token)
3935         return lparen_token;
3936     if (expression_list)
3937         if (unsigned candidate = expression_list->firstToken())
3938             return candidate;
3939     if (rparen_token)
3940         return rparen_token;
3941     return 0;
3942 }
3943
3944 /** \generated */
3945 unsigned TypeConstructorCallAST::lastToken() const
3946 {
3947     if (rparen_token)
3948         return rparen_token + 1;
3949     if (expression_list)
3950         if (unsigned candidate = expression_list->lastToken())
3951             return candidate;
3952     if (lparen_token)
3953         return lparen_token + 1;
3954     if (type_specifier_list)
3955         if (unsigned candidate = type_specifier_list->lastToken())
3956             return candidate;
3957     return 1;
3958 }
3959
3960 /** \generated */
3961 unsigned TypeIdAST::firstToken() const
3962 {
3963     if (type_specifier_list)
3964         if (unsigned candidate = type_specifier_list->firstToken())
3965             return candidate;
3966     if (declarator)
3967         if (unsigned candidate = declarator->firstToken())
3968             return candidate;
3969     return 0;
3970 }
3971
3972 /** \generated */
3973 unsigned TypeIdAST::lastToken() const
3974 {
3975     if (declarator)
3976         if (unsigned candidate = declarator->lastToken())
3977             return candidate;
3978     if (type_specifier_list)
3979         if (unsigned candidate = type_specifier_list->lastToken())
3980             return candidate;
3981     return 1;
3982 }
3983
3984 /** \generated */
3985 unsigned TypeidExpressionAST::firstToken() const
3986 {
3987     if (typeid_token)
3988         return typeid_token;
3989     if (lparen_token)
3990         return lparen_token;
3991     if (expression)
3992         if (unsigned candidate = expression->firstToken())
3993             return candidate;
3994     if (rparen_token)
3995         return rparen_token;
3996     return 0;
3997 }
3998
3999 /** \generated */
4000 unsigned TypeidExpressionAST::lastToken() const
4001 {
4002     if (rparen_token)
4003         return rparen_token + 1;
4004     if (expression)
4005         if (unsigned candidate = expression->lastToken())
4006             return candidate;
4007     if (lparen_token)
4008         return lparen_token + 1;
4009     if (typeid_token)
4010         return typeid_token + 1;
4011     return 1;
4012 }
4013
4014 /** \generated */
4015 unsigned TypenameCallExpressionAST::firstToken() const
4016 {
4017     if (typename_token)
4018         return typename_token;
4019     if (name)
4020         if (unsigned candidate = name->firstToken())
4021             return candidate;
4022     if (lparen_token)
4023         return lparen_token;
4024     if (expression_list)
4025         if (unsigned candidate = expression_list->firstToken())
4026             return candidate;
4027     if (rparen_token)
4028         return rparen_token;
4029     return 0;
4030 }
4031
4032 /** \generated */
4033 unsigned TypenameCallExpressionAST::lastToken() const
4034 {
4035     if (rparen_token)
4036         return rparen_token + 1;
4037     if (expression_list)
4038         if (unsigned candidate = expression_list->lastToken())
4039             return candidate;
4040     if (lparen_token)
4041         return lparen_token + 1;
4042     if (name)
4043         if (unsigned candidate = name->lastToken())
4044             return candidate;
4045     if (typename_token)
4046         return typename_token + 1;
4047     return 1;
4048 }
4049
4050 /** \generated */
4051 unsigned TypenameTypeParameterAST::firstToken() const
4052 {
4053     if (classkey_token)
4054         return classkey_token;
4055     if (dot_dot_dot_token)
4056         return dot_dot_dot_token;
4057     if (name)
4058         if (unsigned candidate = name->firstToken())
4059             return candidate;
4060     if (equal_token)
4061         return equal_token;
4062     if (type_id)
4063         if (unsigned candidate = type_id->firstToken())
4064             return candidate;
4065     return 0;
4066 }
4067
4068 /** \generated */
4069 unsigned TypenameTypeParameterAST::lastToken() const
4070 {
4071     if (type_id)
4072         if (unsigned candidate = type_id->lastToken())
4073             return candidate;
4074     if (equal_token)
4075         return equal_token + 1;
4076     if (name)
4077         if (unsigned candidate = name->lastToken())
4078             return candidate;
4079     if (dot_dot_dot_token)
4080         return dot_dot_dot_token + 1;
4081     if (classkey_token)
4082         return classkey_token + 1;
4083     return 1;
4084 }
4085
4086 /** \generated */
4087 unsigned TypeofSpecifierAST::firstToken() const
4088 {
4089     if (typeof_token)
4090         return typeof_token;
4091     if (lparen_token)
4092         return lparen_token;
4093     if (expression)
4094         if (unsigned candidate = expression->firstToken())
4095             return candidate;
4096     if (rparen_token)
4097         return rparen_token;
4098     return 0;
4099 }
4100
4101 /** \generated */
4102 unsigned TypeofSpecifierAST::lastToken() const
4103 {
4104     if (rparen_token)
4105         return rparen_token + 1;
4106     if (expression)
4107         if (unsigned candidate = expression->lastToken())
4108             return candidate;
4109     if (lparen_token)
4110         return lparen_token + 1;
4111     if (typeof_token)
4112         return typeof_token + 1;
4113     return 1;
4114 }
4115
4116 /** \generated */
4117 unsigned UnaryExpressionAST::firstToken() const
4118 {
4119     if (unary_op_token)
4120         return unary_op_token;
4121     if (expression)
4122         if (unsigned candidate = expression->firstToken())
4123             return candidate;
4124     return 0;
4125 }
4126
4127 /** \generated */
4128 unsigned UnaryExpressionAST::lastToken() const
4129 {
4130     if (expression)
4131         if (unsigned candidate = expression->lastToken())
4132             return candidate;
4133     if (unary_op_token)
4134         return unary_op_token + 1;
4135     return 1;
4136 }
4137
4138 /** \generated */
4139 unsigned UsingAST::firstToken() const
4140 {
4141     if (using_token)
4142         return using_token;
4143     if (typename_token)
4144         return typename_token;
4145     if (name)
4146         if (unsigned candidate = name->firstToken())
4147             return candidate;
4148     if (semicolon_token)
4149         return semicolon_token;
4150     return 0;
4151 }
4152
4153 /** \generated */
4154 unsigned UsingAST::lastToken() const
4155 {
4156     if (semicolon_token)
4157         return semicolon_token + 1;
4158     if (name)
4159         if (unsigned candidate = name->lastToken())
4160             return candidate;
4161     if (typename_token)
4162         return typename_token + 1;
4163     if (using_token)
4164         return using_token + 1;
4165     return 1;
4166 }
4167
4168 /** \generated */
4169 unsigned UsingDirectiveAST::firstToken() const
4170 {
4171     if (using_token)
4172         return using_token;
4173     if (namespace_token)
4174         return namespace_token;
4175     if (name)
4176         if (unsigned candidate = name->firstToken())
4177             return candidate;
4178     if (semicolon_token)
4179         return semicolon_token;
4180     return 0;
4181 }
4182
4183 /** \generated */
4184 unsigned UsingDirectiveAST::lastToken() const
4185 {
4186     if (semicolon_token)
4187         return semicolon_token + 1;
4188     if (name)
4189         if (unsigned candidate = name->lastToken())
4190             return candidate;
4191     if (namespace_token)
4192         return namespace_token + 1;
4193     if (using_token)
4194         return using_token + 1;
4195     return 1;
4196 }
4197
4198 /** \generated */
4199 unsigned WhileStatementAST::firstToken() const
4200 {
4201     if (while_token)
4202         return while_token;
4203     if (lparen_token)
4204         return lparen_token;
4205     if (condition)
4206         if (unsigned candidate = condition->firstToken())
4207             return candidate;
4208     if (rparen_token)
4209         return rparen_token;
4210     if (statement)
4211         if (unsigned candidate = statement->firstToken())
4212             return candidate;
4213     return 0;
4214 }
4215
4216 /** \generated */
4217 unsigned WhileStatementAST::lastToken() const
4218 {
4219     if (statement)
4220         if (unsigned candidate = statement->lastToken())
4221             return candidate;
4222     if (rparen_token)
4223         return rparen_token + 1;
4224     if (condition)
4225         if (unsigned candidate = condition->lastToken())
4226             return candidate;
4227     if (lparen_token)
4228         return lparen_token + 1;
4229     if (while_token)
4230         return while_token + 1;
4231     return 1;
4232 }
4233
4234 /** \generated */
4235 unsigned AttributeSpecifierAST::lastToken() const
4236 {
4237     if (second_rparen_token)
4238         return second_rparen_token + 1;
4239     if (first_rparen_token)
4240         return first_rparen_token + 1;
4241     if (attribute_list)
4242         if (unsigned candidate = attribute_list->lastToken())
4243             return candidate;
4244     if (second_lparen_token)
4245         return second_lparen_token + 1;
4246     if (first_lparen_token)
4247         return first_lparen_token + 1;
4248     if (attribute_token)
4249         return attribute_token + 1;
4250     return 1;
4251 }
4252