@@ -29,11 +29,22 @@ public void parseLight(IElementType root_, PsiBuilder builder_) {
29
29
result_ = parse_root_ (root_ , builder_ , 0 );
30
30
}
31
31
else {
32
- result_ = false ;
32
+ result_ = parse_extra_roots_ ( root_ , builder_ , 0 ) ;
33
33
}
34
34
exit_section_ (builder_ , 0 , marker_ , root_ , result_ , true , TRUE_CONDITION );
35
35
}
36
36
37
+ static boolean parse_extra_roots_ (IElementType root_ , PsiBuilder builder_ , int level_ ) {
38
+ boolean result_ ;
39
+ if (root_ == EXTRA_ROOT ) {
40
+ result_ = ExternalRules2 .extra_root (builder_ , level_ + 1 );
41
+ }
42
+ else {
43
+ result_ = false ;
44
+ }
45
+ return result_ ;
46
+ }
47
+
37
48
protected boolean parse_root_ (IElementType root_ , PsiBuilder builder_ , int level_ ) {
38
49
return root (builder_ , level_ + 1 );
39
50
}
@@ -96,7 +107,7 @@ private static boolean comma_list_1_0(PsiBuilder builder_, int level_, Parser pa
96
107
if (!recursion_guard_ (builder_ , level_ , "comma_list_1_0" )) return false ;
97
108
boolean result_ ;
98
109
Marker marker_ = enter_section_ (builder_ );
99
- result_ = consumeToken (builder_ , "," );
110
+ result_ = consumeToken (builder_ , COMMA );
100
111
result_ = result_ && param .parse (builder_ , level_ );
101
112
exit_section_ (builder_ , marker_ , null , result_ );
102
113
return result_ ;
@@ -143,15 +154,54 @@ private static boolean comma_list_pinned_2_0(PsiBuilder builder_, int level_, Pa
143
154
// ',' <<param>>
144
155
public static boolean comma_list_tail (PsiBuilder builder_ , int level_ , Parser param ) {
145
156
if (!recursion_guard_ (builder_ , level_ , "comma_list_tail" )) return false ;
157
+ if (!nextTokenIs (builder_ , COMMA )) return false ;
146
158
boolean result_ , pinned_ ;
147
159
Marker marker_ = enter_section_ (builder_ , level_ , _NONE_ , COMMA_LIST_TAIL , null );
148
- result_ = consumeToken (builder_ , "," );
160
+ result_ = consumeToken (builder_ , COMMA );
149
161
pinned_ = result_ ; // pin = 1
150
162
result_ = result_ && param .parse (builder_ , level_ );
151
163
exit_section_ (builder_ , level_ , marker_ , result_ , pinned_ , null );
152
164
return result_ || pinned_ ;
153
165
}
154
166
167
+ /* ********************************************************** */
168
+ // '(' <<param>> (',' <<param>>) * ')'
169
+ static boolean comma_paren_list (PsiBuilder builder_ , int level_ , Parser param ) {
170
+ if (!recursion_guard_ (builder_ , level_ , "comma_paren_list" )) return false ;
171
+ if (!nextTokenIs (builder_ , PAREN1 )) return false ;
172
+ boolean result_ , pinned_ ;
173
+ Marker marker_ = enter_section_ (builder_ , level_ , _NONE_ );
174
+ result_ = consumeToken (builder_ , PAREN1 );
175
+ pinned_ = result_ ; // pin = 1
176
+ result_ = result_ && report_error_ (builder_ , param .parse (builder_ , level_ ));
177
+ result_ = pinned_ && report_error_ (builder_ , comma_paren_list_2 (builder_ , level_ + 1 , param )) && result_ ;
178
+ result_ = pinned_ && consumeToken (builder_ , PAREN2 ) && result_ ;
179
+ exit_section_ (builder_ , level_ , marker_ , result_ , pinned_ , null );
180
+ return result_ || pinned_ ;
181
+ }
182
+
183
+ // (',' <<param>>) *
184
+ private static boolean comma_paren_list_2 (PsiBuilder builder_ , int level_ , Parser param ) {
185
+ if (!recursion_guard_ (builder_ , level_ , "comma_paren_list_2" )) return false ;
186
+ while (true ) {
187
+ int pos_ = current_position_ (builder_ );
188
+ if (!comma_paren_list_2_0 (builder_ , level_ + 1 , param )) break ;
189
+ if (!empty_element_parsed_guard_ (builder_ , "comma_paren_list_2" , pos_ )) break ;
190
+ }
191
+ return true ;
192
+ }
193
+
194
+ // ',' <<param>>
195
+ private static boolean comma_paren_list_2_0 (PsiBuilder builder_ , int level_ , Parser param ) {
196
+ if (!recursion_guard_ (builder_ , level_ , "comma_paren_list_2_0" )) return false ;
197
+ boolean result_ ;
198
+ Marker marker_ = enter_section_ (builder_ );
199
+ result_ = consumeToken (builder_ , COMMA );
200
+ result_ = result_ && param .parse (builder_ , level_ );
201
+ exit_section_ (builder_ , marker_ , null , result_ );
202
+ return result_ ;
203
+ }
204
+
155
205
/* ********************************************************** */
156
206
// empty_external
157
207
static boolean empty_external_usage (PsiBuilder builder_ , int level_ ) {
@@ -180,9 +230,9 @@ private static boolean item_recover_0(PsiBuilder builder_, int level_) {
180
230
if (!recursion_guard_ (builder_ , level_ , "item_recover_0" )) return false ;
181
231
boolean result_ ;
182
232
Marker marker_ = enter_section_ (builder_ );
183
- result_ = consumeToken (builder_ , "," );
233
+ result_ = consumeToken (builder_ , COMMA );
184
234
if (!result_ ) result_ = consumeToken (builder_ , ";" );
185
- if (!result_ ) result_ = consumeToken (builder_ , ")" );
235
+ if (!result_ ) result_ = consumeToken (builder_ , PAREN2 );
186
236
exit_section_ (builder_ , marker_ , null , result_ );
187
237
return result_ ;
188
238
}
@@ -633,6 +683,48 @@ static boolean perc_re_list2(PsiBuilder builder_, int level_) {
633
683
return listOf (builder_ , level_ + 1 , perc_re_list2_0_0_parser_ );
634
684
}
635
685
686
+ /* ********************************************************** */
687
+ // <<comma_paren_list (ref | '(' one ')')>>
688
+ public static boolean public_paren_list (PsiBuilder builder_ , int level_ ) {
689
+ if (!recursion_guard_ (builder_ , level_ , "public_paren_list" )) return false ;
690
+ if (!nextTokenIs (builder_ , PAREN1 )) return false ;
691
+ boolean result_ ;
692
+ Marker marker_ = enter_section_ (builder_ );
693
+ result_ = comma_paren_list (builder_ , level_ + 1 , public_paren_list_0_0_parser_ );
694
+ exit_section_ (builder_ , marker_ , PUBLIC_PAREN_LIST , result_ );
695
+ return result_ ;
696
+ }
697
+
698
+ // ref | '(' one ')'
699
+ private static boolean public_paren_list_0_0 (PsiBuilder builder_ , int level_ ) {
700
+ if (!recursion_guard_ (builder_ , level_ , "public_paren_list_0_0" )) return false ;
701
+ boolean result_ ;
702
+ Marker marker_ = enter_section_ (builder_ );
703
+ result_ = parseRef (builder_ , level_ + 1 );
704
+ if (!result_ ) result_ = public_paren_list_0_0_1 (builder_ , level_ + 1 );
705
+ exit_section_ (builder_ , marker_ , null , result_ );
706
+ return result_ ;
707
+ }
708
+
709
+ // '(' one ')'
710
+ private static boolean public_paren_list_0_0_1 (PsiBuilder builder_ , int level_ ) {
711
+ if (!recursion_guard_ (builder_ , level_ , "public_paren_list_0_0_1" )) return false ;
712
+ boolean result_ ;
713
+ Marker marker_ = enter_section_ (builder_ );
714
+ result_ = consumeToken (builder_ , PAREN1 );
715
+ result_ = result_ && one (builder_ , level_ + 1 );
716
+ result_ = result_ && consumeToken (builder_ , PAREN2 );
717
+ exit_section_ (builder_ , marker_ , null , result_ );
718
+ return result_ ;
719
+ }
720
+
721
+ /* ********************************************************** */
722
+ public static boolean public_paren_list2 (PsiBuilder builder_ , int level_ ) {
723
+ Marker marker_ = enter_section_ (builder_ );
724
+ exit_section_ (builder_ , marker_ , PUBLIC_PAREN_LIST , true );
725
+ return true ;
726
+ }
727
+
636
728
/* ********************************************************** */
637
729
// <<param>>
638
730
static boolean recoverable_item (PsiBuilder builder_ , int level_ , Parser param ) {
@@ -799,6 +891,11 @@ public boolean parse(PsiBuilder builder_, int level_) {
799
891
}
800
892
};
801
893
static final Parser perc_re_list2_0_0_parser_ = PERC_RE_parser_ ;
894
+ static final Parser public_paren_list_0_0_parser_ = new Parser () {
895
+ public boolean parse (PsiBuilder builder_ , int level_ ) {
896
+ return public_paren_list_0_0 (builder_ , level_ + 1 );
897
+ }
898
+ };
802
899
static final Parser statement_parser_ = new Parser () {
803
900
public boolean parse (PsiBuilder builder_ , int level_ ) {
804
901
return statement (builder_ , level_ + 1 );
@@ -828,6 +925,13 @@ public boolean parse(PsiBuilder builder_, int level_) {
828
925
@ SuppressWarnings ({"SimplifiableIfStatement" , "UnusedAssignment" })
829
926
public class ExternalRules2 {
830
927
928
+ /* ********************************************************** */
929
+ public static boolean extra_root (PsiBuilder builder_ , int level_ ) {
930
+ Marker marker_ = enter_section_ (builder_ );
931
+ exit_section_ (builder_ , marker_ , EXTRA_ROOT , true );
932
+ return true ;
933
+ }
934
+
831
935
/* ********************************************************** */
832
936
// <<comma_list <<main_class_meta some>>>>
833
937
static boolean main_class_meta_usage_from_second (PsiBuilder builder_ , int level_ ) {
0 commit comments