|
|
|
|
@@ -51,43 +51,98 @@ public class JaiParser implements PsiParser, LightPsiParser {
|
|
|
|
|
};
|
|
|
|
|
|
|
|
|
|
/* ********************************************************** */
|
|
|
|
|
// argument ((',' | ',,') argument)* [',']
|
|
|
|
|
// ',,' argument ((',' | ',,') argument)*
|
|
|
|
|
// | argument ((',' | ',,') argument)* [',']
|
|
|
|
|
static boolean argList(PsiBuilder builder_, int level_) {
|
|
|
|
|
if (!recursion_guard_(builder_, level_, "argList")) return false;
|
|
|
|
|
boolean result_;
|
|
|
|
|
Marker marker_ = enter_section_(builder_);
|
|
|
|
|
result_ = argument(builder_, level_ + 1);
|
|
|
|
|
result_ = result_ && argList_1(builder_, level_ + 1);
|
|
|
|
|
result_ = result_ && argList_2(builder_, level_ + 1);
|
|
|
|
|
result_ = argList_0(builder_, level_ + 1);
|
|
|
|
|
if (!result_) result_ = argList_1(builder_, level_ + 1);
|
|
|
|
|
exit_section_(builder_, marker_, null, result_);
|
|
|
|
|
return result_;
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
// ',,' argument ((',' | ',,') argument)*
|
|
|
|
|
private static boolean argList_0(PsiBuilder builder_, int level_) {
|
|
|
|
|
if (!recursion_guard_(builder_, level_, "argList_0")) return false;
|
|
|
|
|
boolean result_;
|
|
|
|
|
Marker marker_ = enter_section_(builder_);
|
|
|
|
|
result_ = consumeToken(builder_, DOUBLE_COMMA);
|
|
|
|
|
result_ = result_ && argument(builder_, level_ + 1);
|
|
|
|
|
result_ = result_ && argList_0_2(builder_, level_ + 1);
|
|
|
|
|
exit_section_(builder_, marker_, null, result_);
|
|
|
|
|
return result_;
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
// ((',' | ',,') argument)*
|
|
|
|
|
private static boolean argList_1(PsiBuilder builder_, int level_) {
|
|
|
|
|
if (!recursion_guard_(builder_, level_, "argList_1")) return false;
|
|
|
|
|
private static boolean argList_0_2(PsiBuilder builder_, int level_) {
|
|
|
|
|
if (!recursion_guard_(builder_, level_, "argList_0_2")) return false;
|
|
|
|
|
while (true) {
|
|
|
|
|
int pos_ = current_position_(builder_);
|
|
|
|
|
if (!argList_1_0(builder_, level_ + 1)) break;
|
|
|
|
|
if (!empty_element_parsed_guard_(builder_, "argList_1", pos_)) break;
|
|
|
|
|
if (!argList_0_2_0(builder_, level_ + 1)) break;
|
|
|
|
|
if (!empty_element_parsed_guard_(builder_, "argList_0_2", pos_)) break;
|
|
|
|
|
}
|
|
|
|
|
return true;
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
// (',' | ',,') argument
|
|
|
|
|
private static boolean argList_1_0(PsiBuilder builder_, int level_) {
|
|
|
|
|
if (!recursion_guard_(builder_, level_, "argList_1_0")) return false;
|
|
|
|
|
private static boolean argList_0_2_0(PsiBuilder builder_, int level_) {
|
|
|
|
|
if (!recursion_guard_(builder_, level_, "argList_0_2_0")) return false;
|
|
|
|
|
boolean result_;
|
|
|
|
|
Marker marker_ = enter_section_(builder_);
|
|
|
|
|
result_ = argList_1_0_0(builder_, level_ + 1);
|
|
|
|
|
result_ = argList_0_2_0_0(builder_, level_ + 1);
|
|
|
|
|
result_ = result_ && argument(builder_, level_ + 1);
|
|
|
|
|
exit_section_(builder_, marker_, null, result_);
|
|
|
|
|
return result_;
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
// ',' | ',,'
|
|
|
|
|
private static boolean argList_1_0_0(PsiBuilder builder_, int level_) {
|
|
|
|
|
if (!recursion_guard_(builder_, level_, "argList_1_0_0")) return false;
|
|
|
|
|
private static boolean argList_0_2_0_0(PsiBuilder builder_, int level_) {
|
|
|
|
|
if (!recursion_guard_(builder_, level_, "argList_0_2_0_0")) return false;
|
|
|
|
|
boolean result_;
|
|
|
|
|
result_ = consumeToken(builder_, COMMA);
|
|
|
|
|
if (!result_) result_ = consumeToken(builder_, DOUBLE_COMMA);
|
|
|
|
|
return result_;
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
// argument ((',' | ',,') argument)* [',']
|
|
|
|
|
private static boolean argList_1(PsiBuilder builder_, int level_) {
|
|
|
|
|
if (!recursion_guard_(builder_, level_, "argList_1")) return false;
|
|
|
|
|
boolean result_;
|
|
|
|
|
Marker marker_ = enter_section_(builder_);
|
|
|
|
|
result_ = argument(builder_, level_ + 1);
|
|
|
|
|
result_ = result_ && argList_1_1(builder_, level_ + 1);
|
|
|
|
|
result_ = result_ && argList_1_2(builder_, level_ + 1);
|
|
|
|
|
exit_section_(builder_, marker_, null, result_);
|
|
|
|
|
return result_;
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
// ((',' | ',,') argument)*
|
|
|
|
|
private static boolean argList_1_1(PsiBuilder builder_, int level_) {
|
|
|
|
|
if (!recursion_guard_(builder_, level_, "argList_1_1")) return false;
|
|
|
|
|
while (true) {
|
|
|
|
|
int pos_ = current_position_(builder_);
|
|
|
|
|
if (!argList_1_1_0(builder_, level_ + 1)) break;
|
|
|
|
|
if (!empty_element_parsed_guard_(builder_, "argList_1_1", pos_)) break;
|
|
|
|
|
}
|
|
|
|
|
return true;
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
// (',' | ',,') argument
|
|
|
|
|
private static boolean argList_1_1_0(PsiBuilder builder_, int level_) {
|
|
|
|
|
if (!recursion_guard_(builder_, level_, "argList_1_1_0")) return false;
|
|
|
|
|
boolean result_;
|
|
|
|
|
Marker marker_ = enter_section_(builder_);
|
|
|
|
|
result_ = argList_1_1_0_0(builder_, level_ + 1);
|
|
|
|
|
result_ = result_ && argument(builder_, level_ + 1);
|
|
|
|
|
exit_section_(builder_, marker_, null, result_);
|
|
|
|
|
return result_;
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
// ',' | ',,'
|
|
|
|
|
private static boolean argList_1_1_0_0(PsiBuilder builder_, int level_) {
|
|
|
|
|
if (!recursion_guard_(builder_, level_, "argList_1_1_0_0")) return false;
|
|
|
|
|
boolean result_;
|
|
|
|
|
result_ = consumeToken(builder_, COMMA);
|
|
|
|
|
if (!result_) result_ = consumeToken(builder_, DOUBLE_COMMA);
|
|
|
|
|
@@ -95,8 +150,8 @@ public class JaiParser implements PsiParser, LightPsiParser {
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
// [',']
|
|
|
|
|
private static boolean argList_2(PsiBuilder builder_, int level_) {
|
|
|
|
|
if (!recursion_guard_(builder_, level_, "argList_2")) return false;
|
|
|
|
|
private static boolean argList_1_2(PsiBuilder builder_, int level_) {
|
|
|
|
|
if (!recursion_guard_(builder_, level_, "argList_1_2")) return false;
|
|
|
|
|
consumeToken(builder_, COMMA);
|
|
|
|
|
return true;
|
|
|
|
|
}
|
|
|
|
|
@@ -1510,6 +1565,35 @@ public class JaiParser implements PsiParser, LightPsiParser {
|
|
|
|
|
return true;
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
/* ********************************************************** */
|
|
|
|
|
// ('break' | 'continue' | 'remove') [expr]
|
|
|
|
|
static boolean jumpArgument_(PsiBuilder builder_, int level_) {
|
|
|
|
|
if (!recursion_guard_(builder_, level_, "jumpArgument_")) return false;
|
|
|
|
|
boolean result_;
|
|
|
|
|
Marker marker_ = enter_section_(builder_);
|
|
|
|
|
result_ = jumpArgument__0(builder_, level_ + 1);
|
|
|
|
|
result_ = result_ && jumpArgument__1(builder_, level_ + 1);
|
|
|
|
|
exit_section_(builder_, marker_, null, result_);
|
|
|
|
|
return result_;
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
// 'break' | 'continue' | 'remove'
|
|
|
|
|
private static boolean jumpArgument__0(PsiBuilder builder_, int level_) {
|
|
|
|
|
if (!recursion_guard_(builder_, level_, "jumpArgument__0")) return false;
|
|
|
|
|
boolean result_;
|
|
|
|
|
result_ = consumeToken(builder_, KW_BREAK);
|
|
|
|
|
if (!result_) result_ = consumeToken(builder_, KW_CONTINUE);
|
|
|
|
|
if (!result_) result_ = consumeToken(builder_, KW_REMOVE);
|
|
|
|
|
return result_;
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
// [expr]
|
|
|
|
|
private static boolean jumpArgument__1(PsiBuilder builder_, int level_) {
|
|
|
|
|
if (!recursion_guard_(builder_, level_, "jumpArgument__1")) return false;
|
|
|
|
|
expr(builder_, level_ + 1, -1);
|
|
|
|
|
return true;
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
/* ********************************************************** */
|
|
|
|
|
// 'if' | 'for' | 'case' | 'enum' | 'cast' | 'union' | 'struct'
|
|
|
|
|
// | 'remove' | 'inline' | 'context' | 'operator' | 'interface'
|
|
|
|
|
@@ -1576,7 +1660,7 @@ public class JaiParser implements PsiParser, LightPsiParser {
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
/* ********************************************************** */
|
|
|
|
|
// <<isNamedArgumentAhead>> memberName '=' (block | expr)
|
|
|
|
|
// <<isNamedArgumentAhead>> memberName '=' (block | jumpArgument_ | expr)
|
|
|
|
|
public static boolean namedArgument(PsiBuilder builder_, int level_) {
|
|
|
|
|
if (!recursion_guard_(builder_, level_, "namedArgument")) return false;
|
|
|
|
|
boolean result_;
|
|
|
|
|
@@ -1589,11 +1673,12 @@ public class JaiParser implements PsiParser, LightPsiParser {
|
|
|
|
|
return result_;
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
// block | expr
|
|
|
|
|
// block | jumpArgument_ | expr
|
|
|
|
|
private static boolean namedArgument_3(PsiBuilder builder_, int level_) {
|
|
|
|
|
if (!recursion_guard_(builder_, level_, "namedArgument_3")) return false;
|
|
|
|
|
boolean result_;
|
|
|
|
|
result_ = block(builder_, level_ + 1);
|
|
|
|
|
if (!result_) result_ = jumpArgument_(builder_, level_ + 1);
|
|
|
|
|
if (!result_) result_ = expr(builder_, level_ + 1, -1);
|
|
|
|
|
return result_;
|
|
|
|
|
}
|
|
|
|
|
@@ -1636,7 +1721,7 @@ public class JaiParser implements PsiParser, LightPsiParser {
|
|
|
|
|
// | '&' | '|' | '^' | '~' | '<<' | '>>' | '<<<' | '>>>'
|
|
|
|
|
// | '+=' | '-=' | '*=' | '/=' | '%=' | '&=' | '|=' | '^='
|
|
|
|
|
// | '<<=' | '>>=' | '<<<=' | '>>>='
|
|
|
|
|
// | '[' ']' '=' | '[' ']'
|
|
|
|
|
// | '*' '[' ']' | '[' ']' '=' | '[' ']'
|
|
|
|
|
public static boolean operatorSymbol(PsiBuilder builder_, int level_) {
|
|
|
|
|
if (!recursion_guard_(builder_, level_, "operatorSymbol")) return false;
|
|
|
|
|
boolean result_;
|
|
|
|
|
@@ -1672,6 +1757,7 @@ public class JaiParser implements PsiParser, LightPsiParser {
|
|
|
|
|
if (!result_) result_ = consumeToken(builder_, SHR_EQ);
|
|
|
|
|
if (!result_) result_ = consumeToken(builder_, ROL_EQ);
|
|
|
|
|
if (!result_) result_ = consumeToken(builder_, ROR_EQ);
|
|
|
|
|
if (!result_) result_ = parseTokens(builder_, 0, STAR, LBRACKET, RBRACKET);
|
|
|
|
|
if (!result_) result_ = parseTokens(builder_, 0, LBRACKET, RBRACKET, EQ);
|
|
|
|
|
if (!result_) result_ = parseTokens(builder_, 0, LBRACKET, RBRACKET);
|
|
|
|
|
exit_section_(builder_, level_, marker_, result_, false, null);
|
|
|
|
|
@@ -2176,6 +2262,18 @@ public class JaiParser implements PsiParser, LightPsiParser {
|
|
|
|
|
return true;
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
/* ********************************************************** */
|
|
|
|
|
// '---' | <<exprNoAssign>>
|
|
|
|
|
static boolean returnDefault_(PsiBuilder builder_, int level_) {
|
|
|
|
|
if (!recursion_guard_(builder_, level_, "returnDefault_")) return false;
|
|
|
|
|
boolean result_;
|
|
|
|
|
Marker marker_ = enter_section_(builder_);
|
|
|
|
|
result_ = consumeToken(builder_, TRIPLE_MINUS);
|
|
|
|
|
if (!result_) result_ = exprNoAssign(builder_, level_ + 1);
|
|
|
|
|
exit_section_(builder_, marker_, null, result_);
|
|
|
|
|
return result_;
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
/* ********************************************************** */
|
|
|
|
|
// '(' [returnItem (',' returnItem)*] ')'
|
|
|
|
|
public static boolean returnGroup(PsiBuilder builder_, int level_) {
|
|
|
|
|
@@ -2231,31 +2329,85 @@ public class JaiParser implements PsiParser, LightPsiParser {
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
/* ********************************************************** */
|
|
|
|
|
// [<<isParamNameAhead>> IDENT ':'] <<exprNoAssign>>
|
|
|
|
|
// <<isParamNameAhead>> IDENT (':' [<<exprNoAssign>>] ['=' returnDefault_] | ':=' returnDefault_)
|
|
|
|
|
// | <<exprNoAssign>>
|
|
|
|
|
public static boolean returnItem(PsiBuilder builder_, int level_) {
|
|
|
|
|
if (!recursion_guard_(builder_, level_, "returnItem")) return false;
|
|
|
|
|
boolean result_;
|
|
|
|
|
Marker marker_ = enter_section_(builder_, level_, _NONE_, RETURN_ITEM, "<return item>");
|
|
|
|
|
result_ = returnItem_0(builder_, level_ + 1);
|
|
|
|
|
result_ = result_ && exprNoAssign(builder_, level_ + 1);
|
|
|
|
|
if (!result_) result_ = exprNoAssign(builder_, level_ + 1);
|
|
|
|
|
exit_section_(builder_, level_, marker_, result_, false, null);
|
|
|
|
|
return result_;
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
// [<<isParamNameAhead>> IDENT ':']
|
|
|
|
|
// <<isParamNameAhead>> IDENT (':' [<<exprNoAssign>>] ['=' returnDefault_] | ':=' returnDefault_)
|
|
|
|
|
private static boolean returnItem_0(PsiBuilder builder_, int level_) {
|
|
|
|
|
if (!recursion_guard_(builder_, level_, "returnItem_0")) return false;
|
|
|
|
|
returnItem_0_0(builder_, level_ + 1);
|
|
|
|
|
return true;
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
// <<isParamNameAhead>> IDENT ':'
|
|
|
|
|
private static boolean returnItem_0_0(PsiBuilder builder_, int level_) {
|
|
|
|
|
if (!recursion_guard_(builder_, level_, "returnItem_0_0")) return false;
|
|
|
|
|
boolean result_;
|
|
|
|
|
Marker marker_ = enter_section_(builder_);
|
|
|
|
|
result_ = isParamNameAhead(builder_, level_ + 1);
|
|
|
|
|
result_ = result_ && consumeTokens(builder_, 0, IDENT, COLON);
|
|
|
|
|
result_ = result_ && consumeToken(builder_, IDENT);
|
|
|
|
|
result_ = result_ && returnItem_0_2(builder_, level_ + 1);
|
|
|
|
|
exit_section_(builder_, marker_, null, result_);
|
|
|
|
|
return result_;
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
// ':' [<<exprNoAssign>>] ['=' returnDefault_] | ':=' returnDefault_
|
|
|
|
|
private static boolean returnItem_0_2(PsiBuilder builder_, int level_) {
|
|
|
|
|
if (!recursion_guard_(builder_, level_, "returnItem_0_2")) return false;
|
|
|
|
|
boolean result_;
|
|
|
|
|
Marker marker_ = enter_section_(builder_);
|
|
|
|
|
result_ = returnItem_0_2_0(builder_, level_ + 1);
|
|
|
|
|
if (!result_) result_ = returnItem_0_2_1(builder_, level_ + 1);
|
|
|
|
|
exit_section_(builder_, marker_, null, result_);
|
|
|
|
|
return result_;
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
// ':' [<<exprNoAssign>>] ['=' returnDefault_]
|
|
|
|
|
private static boolean returnItem_0_2_0(PsiBuilder builder_, int level_) {
|
|
|
|
|
if (!recursion_guard_(builder_, level_, "returnItem_0_2_0")) return false;
|
|
|
|
|
boolean result_;
|
|
|
|
|
Marker marker_ = enter_section_(builder_);
|
|
|
|
|
result_ = consumeToken(builder_, COLON);
|
|
|
|
|
result_ = result_ && returnItem_0_2_0_1(builder_, level_ + 1);
|
|
|
|
|
result_ = result_ && returnItem_0_2_0_2(builder_, level_ + 1);
|
|
|
|
|
exit_section_(builder_, marker_, null, result_);
|
|
|
|
|
return result_;
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
// [<<exprNoAssign>>]
|
|
|
|
|
private static boolean returnItem_0_2_0_1(PsiBuilder builder_, int level_) {
|
|
|
|
|
if (!recursion_guard_(builder_, level_, "returnItem_0_2_0_1")) return false;
|
|
|
|
|
exprNoAssign(builder_, level_ + 1);
|
|
|
|
|
return true;
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
// ['=' returnDefault_]
|
|
|
|
|
private static boolean returnItem_0_2_0_2(PsiBuilder builder_, int level_) {
|
|
|
|
|
if (!recursion_guard_(builder_, level_, "returnItem_0_2_0_2")) return false;
|
|
|
|
|
returnItem_0_2_0_2_0(builder_, level_ + 1);
|
|
|
|
|
return true;
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
// '=' returnDefault_
|
|
|
|
|
private static boolean returnItem_0_2_0_2_0(PsiBuilder builder_, int level_) {
|
|
|
|
|
if (!recursion_guard_(builder_, level_, "returnItem_0_2_0_2_0")) return false;
|
|
|
|
|
boolean result_;
|
|
|
|
|
Marker marker_ = enter_section_(builder_);
|
|
|
|
|
result_ = consumeToken(builder_, EQ);
|
|
|
|
|
result_ = result_ && returnDefault_(builder_, level_ + 1);
|
|
|
|
|
exit_section_(builder_, marker_, null, result_);
|
|
|
|
|
return result_;
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
// ':=' returnDefault_
|
|
|
|
|
private static boolean returnItem_0_2_1(PsiBuilder builder_, int level_) {
|
|
|
|
|
if (!recursion_guard_(builder_, level_, "returnItem_0_2_1")) return false;
|
|
|
|
|
boolean result_;
|
|
|
|
|
Marker marker_ = enter_section_(builder_);
|
|
|
|
|
result_ = consumeToken(builder_, COLON_EQ);
|
|
|
|
|
result_ = result_ && returnDefault_(builder_, level_ + 1);
|
|
|
|
|
exit_section_(builder_, marker_, null, result_);
|
|
|
|
|
return result_;
|
|
|
|
|
}
|
|
|
|
|
@@ -2672,7 +2824,7 @@ public class JaiParser implements PsiParser, LightPsiParser {
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
/* ********************************************************** */
|
|
|
|
|
// 'using' [directiveFlag_ ['(' [argList] ')']]
|
|
|
|
|
// 'using' [directiveFlag_ [<<exprNoAssign>>]]
|
|
|
|
|
static boolean usingModifier_(PsiBuilder builder_, int level_) {
|
|
|
|
|
if (!recursion_guard_(builder_, level_, "usingModifier_")) return false;
|
|
|
|
|
if (!nextTokenIs(builder_, KW_USING)) return false;
|
|
|
|
|
@@ -2684,14 +2836,14 @@ public class JaiParser implements PsiParser, LightPsiParser {
|
|
|
|
|
return result_;
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
// [directiveFlag_ ['(' [argList] ')']]
|
|
|
|
|
// [directiveFlag_ [<<exprNoAssign>>]]
|
|
|
|
|
private static boolean usingModifier__1(PsiBuilder builder_, int level_) {
|
|
|
|
|
if (!recursion_guard_(builder_, level_, "usingModifier__1")) return false;
|
|
|
|
|
usingModifier__1_0(builder_, level_ + 1);
|
|
|
|
|
return true;
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
// directiveFlag_ ['(' [argList] ')']
|
|
|
|
|
// directiveFlag_ [<<exprNoAssign>>]
|
|
|
|
|
private static boolean usingModifier__1_0(PsiBuilder builder_, int level_) {
|
|
|
|
|
if (!recursion_guard_(builder_, level_, "usingModifier__1_0")) return false;
|
|
|
|
|
boolean result_;
|
|
|
|
|
@@ -2702,29 +2854,10 @@ public class JaiParser implements PsiParser, LightPsiParser {
|
|
|
|
|
return result_;
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
// ['(' [argList] ')']
|
|
|
|
|
// [<<exprNoAssign>>]
|
|
|
|
|
private static boolean usingModifier__1_0_1(PsiBuilder builder_, int level_) {
|
|
|
|
|
if (!recursion_guard_(builder_, level_, "usingModifier__1_0_1")) return false;
|
|
|
|
|
usingModifier__1_0_1_0(builder_, level_ + 1);
|
|
|
|
|
return true;
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
// '(' [argList] ')'
|
|
|
|
|
private static boolean usingModifier__1_0_1_0(PsiBuilder builder_, int level_) {
|
|
|
|
|
if (!recursion_guard_(builder_, level_, "usingModifier__1_0_1_0")) return false;
|
|
|
|
|
boolean result_;
|
|
|
|
|
Marker marker_ = enter_section_(builder_);
|
|
|
|
|
result_ = consumeToken(builder_, LPAREN);
|
|
|
|
|
result_ = result_ && usingModifier__1_0_1_0_1(builder_, level_ + 1);
|
|
|
|
|
result_ = result_ && consumeToken(builder_, RPAREN);
|
|
|
|
|
exit_section_(builder_, marker_, null, result_);
|
|
|
|
|
return result_;
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
// [argList]
|
|
|
|
|
private static boolean usingModifier__1_0_1_0_1(PsiBuilder builder_, int level_) {
|
|
|
|
|
if (!recursion_guard_(builder_, level_, "usingModifier__1_0_1_0_1")) return false;
|
|
|
|
|
argList(builder_, level_ + 1);
|
|
|
|
|
exprNoAssign(builder_, level_ + 1);
|
|
|
|
|
return true;
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
|