// ---- JFlexParser.java -----------------
// license.txt
package org.intellij.jflex.parser;
import com.intellij.lang.PsiBuilder;
import com.intellij.lang.PsiBuilder.Marker;
import static org.intellij.jflex.psi.JFlexTypes.*;
import static org.intellij.jflex.parser.JFlexParserUtil.*;
import com.intellij.psi.tree.IElementType;
import com.intellij.lang.ASTNode;
import com.intellij.psi.tree.TokenSet;
import com.intellij.lang.PsiParser;
import com.intellij.lang.LightPsiParser;
@SuppressWarnings({"SimplifiableIfStatement", "UnusedAssignment"})
public class JFlexParser implements PsiParser, LightPsiParser {
public ASTNode parse(IElementType type, PsiBuilder builder) {
parseLight(type, builder);
return builder.getTreeBuilt();
}
public void parseLight(IElementType type, PsiBuilder builder) {
boolean result;
builder = adapt_builder_(type, builder, this, EXTENDS_SETS_);
Marker marker = enter_section_(builder, 0, _COLLAPSE_, null);
if (type == FLEX_CHAR_RANGE) {
result = char_range(builder, 0);
}
else if (type == FLEX_DECLARATIONS_SECTION) {
result = declarations_section(builder, 0);
}
else if (type == FLEX_EXPRESSION) {
result = expression(builder, 0, -1);
}
else if (type == FLEX_JAVA_CODE) {
result = java_code(builder, 0);
}
else if (type == FLEX_JAVA_TYPE) {
result = java_type(builder, 0);
}
else if (type == FLEX_LEXICAL_RULES_SECTION) {
result = lexical_rules_section(builder, 0);
}
else if (type == FLEX_LOOK_AHEAD) {
result = look_ahead(builder, 0);
}
else if (type == FLEX_MACRO_DEFINITION) {
result = macro_definition(builder, 0);
}
else if (type == FLEX_MACRO_REFERENCE) {
result = macro_reference(builder, 0);
}
else if (type == FLEX_OPTION) {
result = option(builder, 0);
}
else if (type == FLEX_RULE) {
result = rule(builder, 0);
}
else if (type == FLEX_STATE_DECLARATION) {
result = state_declaration(builder, 0);
}
else if (type == FLEX_STATE_DEFINITION) {
result = state_definition(builder, 0);
}
else if (type == FLEX_STATE_LIST) {
result = state_list(builder, 0);
}
else if (type == FLEX_STATE_REFERENCE) {
result = state_reference(builder, 0);
}
else if (type == FLEX_USER_CODE_SECTION) {
result = user_code_section(builder, 0);
}
else if (type == FLEX_USER_VALUE) {
result = user_value(builder, 0);
}
else {
result = parse_root_(type, builder, 0);
}
exit_section_(builder, 0, marker, type, result, true, TRUE_CONDITION);
}
protected boolean parse_root_(IElementType type, PsiBuilder builder, int level) {
return flex_file(builder, level + 1);
}
public static final TokenSet[] EXTENDS_SETS_ = new TokenSet[] {
create_token_set_(FLEX_DECLARATIONS_SECTION, FLEX_LEXICAL_RULES_SECTION, FLEX_USER_CODE_SECTION),
create_token_set_(FLEX_CHAR_RANGE, FLEX_CHOICE_EXPRESSION, FLEX_CLASS_EXPRESSION, FLEX_EXPRESSION,
FLEX_LITERAL_EXPRESSION, FLEX_MACRO_REF_EXPRESSION, FLEX_NOT_EXPRESSION, FLEX_PAREN_EXPRESSION,
FLEX_PREDEFINED_CLASS_EXPRESSION, FLEX_QUANTIFIER_EXPRESSION, FLEX_SEQUENCE_EXPRESSION),
};
/* ********************************************************** */
// '{' raw? '}' | '|'
public static boolean action(PsiBuilder builder, int level) {
if (!recursion_guard_(builder, level, "action")) return false;
if (!nextTokenIs(builder, "<action>", FLEX_BRACE1, FLEX_BAR)) return false;
boolean result;
Marker marker = enter_section_(builder, level, _NONE_, FLEX_JAVA_CODE, "<action>");
result = action_0(builder, level + 1);
if (!result) result = consumeToken(builder, FLEX_BAR);
exit_section_(builder, level, marker, result, false, null);
return result;
}
// '{' raw? '}'
private static boolean action_0(PsiBuilder builder, int level) {
if (!recursion_guard_(builder, level, "action_0")) return false;
boolean result, pinned;
Marker marker = enter_section_(builder, level, _NONE_);
result = consumeToken(builder, FLEX_BRACE1);
pinned = result; // pin = 1
result = result && report_error_(builder, action_0_1(builder, level + 1));
result = pinned && consumeToken(builder, FLEX_BRACE2) && result;
exit_section_(builder, level, marker, result, pinned, null);
return result || pinned;
}
// raw?
private static boolean action_0_1(PsiBuilder builder, int level) {
if (!recursion_guard_(builder, level, "action_0_1")) return false;
consumeToken(builder, FLEX_RAW);
return true;
}
/* ********************************************************** */
// string | char_class | char_or_esc
static boolean char_class_atom(PsiBuilder builder, int level) {
if (!recursion_guard_(builder, level, "char_class_atom")) return false;
boolean result;
Marker marker = enter_section_(builder, level, _NONE_, null, "<char>");
result = consumeToken(builder, FLEX_STRING);
if (!result) result = consumeToken(builder, FLEX_CHAR_CLASS);
if (!result) result = char_or_esc(builder, level + 1);
exit_section_(builder, level, marker, result, false, null);
return result;
}
/* ********************************************************** */
// char_range | class_expression | macro_ref_expression | char_class_atom
static boolean char_class_item(PsiBuilder builder, int level) {
if (!recursion_guard_(builder, level, "char_class_item")) return false;
boolean result;
Marker marker = enter_section_(builder, level, _NONE_, null, "<char>");
result = char_range(builder, level + 1);
if (!result) result = class_expression(builder, level + 1);
if (!result) result = macro_ref_expression(builder, level + 1);
if (!result) result = char_class_atom(builder, level + 1);
exit_section_(builder, level, marker, result, false, null);
return result;
}
/* ********************************************************** */
// '&&' | '||' | '~~' | '--'
static boolean char_class_op(PsiBuilder builder, int level) {
if (!recursion_guard_(builder, level, "char_class_op")) return false;
boolean result;
Marker marker = enter_section_(builder, level, _NONE_, null, "<char>");
result = consumeToken(builder, FLEX_AMPAMP);
if (!result) result = consumeToken(builder, FLEX_BARBAR);
if (!result) result = consumeToken(builder, FLEX_TILDETILDE);
if (!result) result = consumeToken(builder, FLEX_DASHDASH);
exit_section_(builder, level, marker, result, false, null);
return result;
}
/* ********************************************************** */
// char | char_esc
static boolean char_or_esc(PsiBuilder builder, int level) {
if (!recursion_guard_(builder, level, "char_or_esc")) return false;
if (!nextTokenIs(builder, "", FLEX_CHAR, FLEX_CHAR_ESC)) return false;
boolean result;
Marker marker = enter_section_(builder);
result = consumeToken(builder, FLEX_CHAR);
if (!result) result = consumeToken(builder, FLEX_CHAR_ESC);
exit_section_(builder, marker, null, result);
return result;
}
/* ********************************************************** */
// char_or_esc '-' char_or_esc
public static boolean char_range(PsiBuilder builder, int level) {
if (!recursion_guard_(builder, level, "char_range")) return false;
if (!nextTokenIs(builder, "<char>", FLEX_CHAR, FLEX_CHAR_ESC)) return false;
boolean result;
Marker marker = enter_section_(builder, level, _NONE_, FLEX_CHAR_RANGE, "<char>");
result = char_or_esc(builder, level + 1);
result = result && consumeToken(builder, FLEX_DASH);
result = result && char_or_esc(builder, level + 1);
exit_section_(builder, level, marker, result, false, null);
return result;
}
/* ********************************************************** */
// macro_definition | state_declaration | option
static boolean declaration(PsiBuilder builder, int level) {
if (!recursion_guard_(builder, level, "declaration")) return false;
boolean result;
Marker marker = enter_section_(builder, level, _NONE_);
result = macro_definition(builder, level + 1);
if (!result) result = state_declaration(builder, level + 1);
if (!result) result = option(builder, level + 1);
exit_section_(builder, level, marker, result, false, declaration_recover_parser_);
return result;
}
/* ********************************************************** */
// !(<<is_percent>> | id '=') section_recover
static boolean declaration_recover(PsiBuilder builder, int level) {
if (!recursion_guard_(builder, level, "declaration_recover")) return false;
boolean result;
Marker marker = enter_section_(builder);
result = declaration_recover_0(builder, level + 1);
result = result && section_recover(builder, level + 1);
exit_section_(builder, marker, null, result);
return result;
}
// !(<<is_percent>> | id '=')
private static boolean declaration_recover_0(PsiBuilder builder, int level) {
if (!recursion_guard_(builder, level, "declaration_recover_0")) return false;
boolean result;
Marker marker = enter_section_(builder, level, _NOT_);
result = !declaration_recover_0_0(builder, level + 1);
exit_section_(builder, level, marker, result, false, null);
return result;
}
// <<is_percent>> | id '='
private static boolean declaration_recover_0_0(PsiBuilder builder, int level) {
if (!recursion_guard_(builder, level, "declaration_recover_0_0")) return false;
boolean result;
Marker marker = enter_section_(builder);
result = is_percent(builder, level + 1);
if (!result) result = parseTokens(builder, 0, FLEX_ID, FLEX_EQ);
exit_section_(builder, marker, null, result);
return result;
}
/* ********************************************************** */
// [] (declaration) *
public static boolean declarations_section(PsiBuilder builder, int level) {
if (!recursion_guard_(builder, level, "declarations_section")) return false;
boolean result, pinned;
Marker marker = enter_section_(builder, level, _NONE_, FLEX_DECLARATIONS_SECTION, "<declarations section>");
result = declarations_section_0(builder, level + 1);
pinned = result; // pin = 1
result = result && declarations_section_1(builder, level + 1);
exit_section_(builder, level, marker, result, pinned, section_recover_parser_);
return result || pinned;
}
// []
private static boolean declarations_section_0(PsiBuilder builder, int level) {
return true;
}
// (declaration) *
private static boolean declarations_section_1(PsiBuilder builder, int level) {
if (!recursion_guard_(builder, level, "declarations_section_1")) return false;
int pos = current_position_(builder);
while (true) {
if (!declarations_section_1_0(builder, level + 1)) break;
if (!empty_element_parsed_guard_(builder, "declarations_section_1", pos)) break;
pos = current_position_(builder);
}
return true;
}
// (declaration)
private static boolean declarations_section_1_0(PsiBuilder builder, int level) {
if (!recursion_guard_(builder, level, "declarations_section_1_0")) return false;
boolean result;
Marker marker = enter_section_(builder);
result = declaration(builder, level + 1);
exit_section_(builder, marker, null, result);
return result;
}
/* ********************************************************** */
// []
// user_code_section
// section_div
// declarations_section
// section_div
// lexical_rules_section
static boolean flex_file(PsiBuilder builder, int level) {
if (!recursion_guard_(builder, level, "flex_file")) return false;
boolean result, pinned;
Marker marker = enter_section_(builder, level, _NONE_);
result = flex_file_0(builder, level + 1);
pinned = result; // pin = 1
result = result && report_error_(builder, user_code_section(builder, level + 1));
result = pinned && report_error_(builder, section_div(builder, level + 1)) && result;
result = pinned && report_error_(builder, declarations_section(builder, level + 1)) && result;
result = pinned && report_error_(builder, section_div(builder, level + 1)) && result;
result = pinned && lexical_rules_section(builder, level + 1) && result;
exit_section_(builder, level, marker, result, pinned, null);
return result || pinned;
}
// []
private static boolean flex_file_0(PsiBuilder builder, int level) {
return true;
}
/* ********************************************************** */
// raw?
public static boolean java_code(PsiBuilder builder, int level) {
if (!recursion_guard_(builder, level, "java_code")) return false;
Marker marker = enter_section_(builder, level, _NONE_, FLEX_JAVA_CODE, "<java code>");
consumeToken(builder, FLEX_RAW);
exit_section_(builder, level, marker, true, false, null);
return true;
}
/* ********************************************************** */
// id ( safe_dot id ) *
public static boolean java_type(PsiBuilder builder, int level) {
if (!recursion_guard_(builder, level, "java_type")) return false;
if (!nextTokenIs(builder, FLEX_ID)) return false;
boolean result, pinned;
Marker marker = enter_section_(builder, level, _NONE_, FLEX_JAVA_TYPE, null);
result = consumeToken(builder, FLEX_ID);
pinned = result; // pin = 1
result = result && java_type_1(builder, level + 1);
exit_section_(builder, level, marker, result, pinned, null);
return result || pinned;
}
// ( safe_dot id ) *
private static boolean java_type_1(PsiBuilder builder, int level) {
if (!recursion_guard_(builder, level, "java_type_1")) return false;
int pos = current_position_(builder);
while (true) {
if (!java_type_1_0(builder, level + 1)) break;
if (!empty_element_parsed_guard_(builder, "java_type_1", pos)) break;
pos = current_position_(builder);
}
return true;
}
// safe_dot id
private static boolean java_type_1_0(PsiBuilder builder, int level) {
if (!recursion_guard_(builder, level, "java_type_1_0")) return false;
boolean result, pinned;
Marker marker = enter_section_(builder, level, _NONE_);
result = safe_dot(builder, level + 1);
pinned = result; // pin = 1
result = result && consumeToken(builder, FLEX_ID);
exit_section_(builder, level, marker, result, pinned, null);
return result || pinned;
}
/* ********************************************************** */
// [java_type (',' java_type) *]
static boolean java_type_list(PsiBuilder builder, int level) {
if (!recursion_guard_(builder, level, "java_type_list")) return false;
Marker marker = enter_section_(builder, level, _NONE_);
java_type_list_0(builder, level + 1);
exit_section_(builder, level, marker, true, false, declaration_recover_parser_);
return true;
}
// java_type (',' java_type) *
private static boolean java_type_list_0(PsiBuilder builder, int level) {
if (!recursion_guard_(builder, level, "java_type_list_0")) return false;
boolean result, pinned;
Marker marker = enter_section_(builder, level, _NONE_);
result = java_type(builder, level + 1);
pinned = result; // pin = 1
result = result && java_type_list_0_1(builder, level + 1);
exit_section_(builder, level, marker, result, pinned, null);
return result || pinned;
}
// (',' java_type) *
private static boolean java_type_list_0_1(PsiBuilder builder, int level) {
if (!recursion_guard_(builder, level, "java_type_list_0_1")) return false;
int pos = current_position_(builder);
while (true) {
if (!java_type_list_0_1_0(builder, level + 1)) break;
if (!empty_element_parsed_guard_(builder, "java_type_list_0_1", pos)) break;
pos = current_position_(builder);
}
return true;
}
// ',' java_type
private static boolean java_type_list_0_1_0(PsiBuilder builder, int level) {
if (!recursion_guard_(builder, level, "java_type_list_0_1_0")) return false;
boolean result, pinned;
Marker marker = enter_section_(builder, level, _NONE_);
result = consumeToken(builder, FLEX_COMMA);
pinned = result; // pin = 1
result = result && java_type(builder, level + 1);
exit_section_(builder, level, marker, result, pinned, null);
return result || pinned;
}
/* ********************************************************** */
// [] rule_group_item +
public static boolean lexical_rules_section(PsiBuilder builder, int level) {
if (!recursion_guard_(builder, level, "lexical_rules_section")) return false;
boolean result, pinned;
Marker marker = enter_section_(builder, level, _NONE_, FLEX_LEXICAL_RULES_SECTION, "<lexical rules section>");
result = lexical_rules_section_0(builder, level + 1);
pinned = result; // pin = 1
result = result && lexical_rules_section_1(builder, level + 1);
exit_section_(builder, level, marker, result, pinned, section_recover_parser_);
return result || pinned;
}
// []
private static boolean lexical_rules_section_0(PsiBuilder builder, int level) {
return true;
}
// rule_group_item +
private static boolean lexical_rules_section_1(PsiBuilder builder, int level) {
if (!recursion_guard_(builder, level, "lexical_rules_section_1")) return false;
boolean result;
Marker marker = enter_section_(builder);
result = rule_group_item(builder, level + 1);
int pos = current_position_(builder);
while (result) {
if (!rule_group_item(builder, level + 1)) break;
if (!empty_element_parsed_guard_(builder, "lexical_rules_section_1", pos)) break;
pos = current_position_(builder);
}
exit_section_(builder, marker, null, result);
return result;
}
/* ********************************************************** */
// new_line <<p>> new_line
static boolean line(PsiBuilder builder, int level, Parser aP) {
if (!recursion_guard_(builder, level, "line")) return false;
boolean result, pinned;
Marker marker = enter_section_(builder, level, _NONE_);
result = new_line(builder, level + 1);
result = result && aP.parse(builder, level);
pinned = result; // pin = 2
result = result && new_line(builder, level + 1);
exit_section_(builder, level, marker, result, pinned, null);
return result || pinned;
}
/* ********************************************************** */
// '$' | '/' expression
public static boolean look_ahead(PsiBuilder builder, int level) {
if (!recursion_guard_(builder, level, "look_ahead")) return false;
if (!nextTokenIs(builder, "<look ahead>", FLEX_DOLLAR, FLEX_FSLASH)) return false;
boolean result;
Marker marker = enter_section_(builder, level, _NONE_, FLEX_LOOK_AHEAD, "<look ahead>");
result = consumeToken(builder, FLEX_DOLLAR);
if (!result) result = look_ahead_1(builder, level + 1);
exit_section_(builder, level, marker, result, false, null);
return result;
}
// '/' expression
private static boolean look_ahead_1(PsiBuilder builder, int level) {
if (!recursion_guard_(builder, level, "look_ahead_1")) return false;
boolean result;
Marker marker = enter_section_(builder);
result = consumeToken(builder, FLEX_FSLASH);
result = result && expression(builder, level + 1, -1);
exit_section_(builder, marker, null, result);
return result;
}
/* ********************************************************** */
// new_line id '=' expression
public static boolean macro_definition(PsiBuilder builder, int level) {
if (!recursion_guard_(builder, level, "macro_definition")) return false;
boolean result, pinned;
Marker marker = enter_section_(builder, level, _NONE_, FLEX_MACRO_DEFINITION, "<macro definition>");
result = new_line(builder, level + 1);
result = result && consumeTokens(builder, 2, FLEX_ID, FLEX_EQ);
pinned = result; // pin = 3
result = result && expression(builder, level + 1, -1);
exit_section_(builder, level, marker, result, pinned, macro_definition_recover_parser_);
return result || pinned;
}
/* ********************************************************** */
// !(new_line id '=' | '%%' | <<is_percent>>)
static boolean macro_definition_recover(PsiBuilder builder, int level) {
if (!recursion_guard_(builder, level, "macro_definition_recover")) return false;
boolean result;
Marker marker = enter_section_(builder, level, _NOT_);
result = !macro_definition_recover_0(builder, level + 1);
exit_section_(builder, level, marker, result, false, null);
return result;
}
// new_line id '=' | '%%' | <<is_percent>>
private static boolean macro_definition_recover_0(PsiBuilder builder, int level) {
if (!recursion_guard_(builder, level, "macro_definition_recover_0")) return false;
boolean result;
Marker marker = enter_section_(builder);
result = macro_definition_recover_0_0(builder, level + 1);
if (!result) result = consumeToken(builder, FLEX_TWO_PERCS);
if (!result) result = is_percent(builder, level + 1);
exit_section_(builder, marker, null, result);
return result;
}
// new_line id '='
private static boolean macro_definition_recover_0_0(PsiBuilder builder, int level) {
if (!recursion_guard_(builder, level, "macro_definition_recover_0_0")) return false;
boolean result;
Marker marker = enter_section_(builder);
result = new_line(builder, level + 1);
result = result && consumeTokens(builder, 0, FLEX_ID, FLEX_EQ);
exit_section_(builder, marker, null, result);
return result;
}
/* ********************************************************** */
// id
public static boolean macro_reference(PsiBuilder builder, int level) {
if (!recursion_guard_(builder, level, "macro_reference")) return false;
if (!nextTokenIs(builder, FLEX_ID)) return false;
boolean result;
Marker marker = enter_section_(builder);
result = consumeToken(builder, FLEX_ID);
exit_section_(builder, marker, FLEX_MACRO_REFERENCE, result);
return result;
}
/* ********************************************************** */
// &<<is_new_line>>
static boolean new_line(PsiBuilder builder, int level) {
if (!recursion_guard_(builder, level, "new_line")) return false;
boolean result;
Marker marker = enter_section_(builder, level, _AND_);
result = is_new_line(builder, level + 1);
exit_section_(builder, level, marker, result, false, null);
return result;
}
/* ********************************************************** */
// option_class
// | option_implements
// | option_extends
// | option_public
// | option_final
// | option_abstract
// | option_api_private
// | option_user_code
// | option_init
// | option_init_throw
// | option_ctor_arg
// | option_scan_error
// | option_buffer_size
// | option_include
// | option_function
// | option_integer
// | option_intwrap
// | option_type
// | option_yylexthrow
// | option_eof_val
// | option_eof
// | option_eof_throw
// | option_eof_close
// | option_debug
// | option_standalone
// | option_cup
// | option_cup_sym
// | option_cup_debug
// | option_byacc
// | option_switch
// | option_table
// | option_7bit
// | option_16bit
// | option_full
// | option_unicode
// | option_ignore_case
// | option_count_char
// | option_count_line
// | option_count_column
// | option_obsolete
public static boolean option(PsiBuilder builder, int level) {
if (!recursion_guard_(builder, level, "option")) return false;
boolean result;
Marker marker = enter_section_(builder, level, _COLLAPSE_, FLEX_OPTION, "<option>");
result = option_class(builder, level + 1);
if (!result) result = option_implements(builder, level + 1);
if (!result) result = option_extends(builder, level + 1);
if (!result) result = option_public(builder, level + 1);
if (!result) result = option_final(builder, level + 1);
if (!result) result = option_abstract(builder, level + 1);
if (!result) result = option_api_private(builder, level + 1);
if (!result) result = option_user_code(builder, level + 1);
if (!result) result = option_init(builder, level + 1);
if (!result) result = option_init_throw(builder, level + 1);
if (!result) result = option_ctor_arg(builder, level + 1);
if (!result) result = option_scan_error(builder, level + 1);
if (!result) result = option_buffer_size(builder, level + 1);
if (!result) result = option_include(builder, level + 1);
if (!result) result = option_function(builder, level + 1);
if (!result) result = option_integer(builder, level + 1);
if (!result) result = option_intwrap(builder, level + 1);
if (!result) result = option_type(builder, level + 1);
if (!result) result = option_yylexthrow(builder, level + 1);
if (!result) result = option_eof_val(builder, level + 1);
if (!result) result = option_eof(builder, level + 1);
if (!result) result = option_eof_throw(builder, level + 1);
if (!result) result = option_eof_close(builder, level + 1);
if (!result) result = option_debug(builder, level + 1);
if (!result) result = option_standalone(builder, level + 1);
if (!result) result = option_cup(builder, level + 1);
if (!result) result = option_cup_sym(builder, level + 1);
if (!result) result = option_cup_debug(builder, level + 1);
if (!result) result = option_byacc(builder, level + 1);
if (!result) result = option_switch(builder, level + 1);
if (!result) result = option_table(builder, level + 1);
if (!result) result = option_7bit(builder, level + 1);
if (!result) result = option_16bit(builder, level + 1);
if (!result) result = option_full(builder, level + 1);
if (!result) result = option_unicode(builder, level + 1);
if (!result) result = option_ignore_case(builder, level + 1);
if (!result) result = option_count_char(builder, level + 1);
if (!result) result = option_count_line(builder, level + 1);
if (!result) result = option_count_column(builder, level + 1);
if (!result) result = option_obsolete(builder, level + 1);
exit_section_(builder, level, marker, result, false, null);
return result;
}
/* ********************************************************** */
// '%16bit'
public static boolean option_16bit(PsiBuilder builder, int level) {
if (!recursion_guard_(builder, level, "option_16bit")) return false;
if (!nextTokenIs(builder, FLEX_OPT16BIT)) return false;
boolean result;
Marker marker = enter_section_(builder, level, _NONE_, FLEX_OPTION, "<option>");
result = consumeToken(builder, FLEX_OPT16BIT);
exit_section_(builder, level, marker, result, false, null);
return result;
}
/* ********************************************************** */
// '%7bit'
public static boolean option_7bit(PsiBuilder builder, int level) {
if (!recursion_guard_(builder, level, "option_7bit")) return false;
if (!nextTokenIs(builder, FLEX_OPT_7BIT)) return false;
boolean result;
Marker marker = enter_section_(builder, level, _NONE_, FLEX_OPTION, "<option>");
result = consumeToken(builder, FLEX_OPT_7BIT);
exit_section_(builder, level, marker, result, false, null);
return result;
}
/* ********************************************************** */
// '%abstract'
public static boolean option_abstract(PsiBuilder builder, int level) {
if (!recursion_guard_(builder, level, "option_abstract")) return false;
if (!nextTokenIs(builder, FLEX_OPT_ABSTRACT)) return false;
boolean result;
Marker marker = enter_section_(builder, level, _NONE_, FLEX_OPTION, "<option>");
result = consumeToken(builder, FLEX_OPT_ABSTRACT);
exit_section_(builder, level, marker, result, false, null);
return result;
}
/* ********************************************************** */
// '%apiprivate'
public static boolean option_api_private(PsiBuilder builder, int level) {
if (!recursion_guard_(builder, level, "option_api_private")) return false;
if (!nextTokenIs(builder, FLEX_OPT_APIPRIVATE)) return false;
boolean result;
Marker marker = enter_section_(builder, level, _NONE_, FLEX_OPTION, "<option>");
result = consumeToken(builder, FLEX_OPT_APIPRIVATE);
exit_section_(builder, level, marker, result, false, null);
return result;
}
/* ********************************************************** */
// '%buffer' number
public static boolean option_buffer_size(PsiBuilder builder, int level) {
if (!recursion_guard_(builder, level, "option_buffer_size")) return false;
if (!nextTokenIs(builder, FLEX_OPT_BUFFER)) return false;
boolean result, pinned;
Marker marker = enter_section_(builder, level, _NONE_, FLEX_OPTION, "<option>");
result = consumeTokens(builder, 1, FLEX_OPT_BUFFER, FLEX_NUMBER);
pinned = result; // pin = 1
exit_section_(builder, level, marker, result, pinned, null);
return result || pinned;
}
/* ********************************************************** */
// '%byacc'
public static boolean option_byacc(PsiBuilder builder, int level) {
if (!recursion_guard_(builder, level, "option_byacc")) return false;
boolean result;
Marker marker = enter_section_(builder, level, _NONE_, FLEX_OPTION, "<option>");
result = consumeToken(builder, "%byacc");
exit_section_(builder, level, marker, result, false, null);
return result;
}
/* ********************************************************** */
// '%class' java_type
public static boolean option_class(PsiBuilder builder, int level) {
if (!recursion_guard_(builder, level, "option_class")) return false;
if (!nextTokenIs(builder, FLEX_OPT_CLASS)) return false;
boolean result, pinned;
Marker marker = enter_section_(builder, level, _NONE_, FLEX_OPTION, "<option>");
result = consumeToken(builder, FLEX_OPT_CLASS);
pinned = result; // pin = 1
result = result && java_type(builder, level + 1);
exit_section_(builder, level, marker, result, pinned, null);
return result || pinned;
}
/* ********************************************************** */
// '%char'
public static boolean option_count_char(PsiBuilder builder, int level) {
if (!recursion_guard_(builder, level, "option_count_char")) return false;
if (!nextTokenIs(builder, FLEX_OPT_CHAR)) return false;
boolean result;
Marker marker = enter_section_(builder, level, _NONE_, FLEX_OPTION, "<option>");
result = consumeToken(builder, FLEX_OPT_CHAR);
exit_section_(builder, level, marker, result, false, null);
return result;
}
/* ********************************************************** */
// '%column'
public static boolean option_count_column(PsiBuilder builder, int level) {
if (!recursion_guard_(builder, level, "option_count_column")) return false;
if (!nextTokenIs(builder, FLEX_OPT_COLUMN)) return false;
boolean result;
Marker marker = enter_section_(builder, level, _NONE_, FLEX_OPTION, "<option>");
result = consumeToken(builder, FLEX_OPT_COLUMN);
exit_section_(builder, level, marker, result, false, null);
return result;
}
/* ********************************************************** */
// '%line'
public static boolean option_count_line(PsiBuilder builder, int level) {
if (!recursion_guard_(builder, level, "option_count_line")) return false;
if (!nextTokenIs(builder, FLEX_OPT_LINE)) return false;
boolean result;
Marker marker = enter_section_(builder, level, _NONE_, FLEX_OPTION, "<option>");
result = consumeToken(builder, FLEX_OPT_LINE);
exit_section_(builder, level, marker, result, false, null);
return result;
}
/* ********************************************************** */
// '%ctorarg' java_type id
public static boolean option_ctor_arg(PsiBuilder builder, int level) {
if (!recursion_guard_(builder, level, "option_ctor_arg")) return false;
if (!nextTokenIs(builder, FLEX_OPT_CTORARG)) return false;
boolean result, pinned;
Marker marker = enter_section_(builder, level, _NONE_, FLEX_OPTION, "<option>");
result = consumeToken(builder, FLEX_OPT_CTORARG);
pinned = result; // pin = 1
result = result && report_error_(builder, java_type(builder, level + 1));
result = pinned && consumeToken(builder, FLEX_ID) && result;
exit_section_(builder, level, marker, result, pinned, null);
return result || pinned;
}
/* ********************************************************** */
// '%cup'
public static boolean option_cup(PsiBuilder builder, int level) {
if (!recursion_guard_(builder, level, "option_cup")) return false;
if (!nextTokenIs(builder, FLEX_OPT_CUP)) return false;
boolean result;
Marker marker = enter_section_(builder, level, _NONE_, FLEX_OPTION, "<option>");
result = consumeToken(builder, FLEX_OPT_CUP);
exit_section_(builder, level, marker, result, false, null);
return result;
}
/* ********************************************************** */
// '%cupdebug'
public static boolean option_cup_debug(PsiBuilder builder, int level) {
if (!recursion_guard_(builder, level, "option_cup_debug")) return false;
if (!nextTokenIs(builder, FLEX_OPT_CUPDEBUG)) return false;
boolean result;
Marker marker = enter_section_(builder, level, _NONE_, FLEX_OPTION, "<option>");
result = consumeToken(builder, FLEX_OPT_CUPDEBUG);
exit_section_(builder, level, marker, result, false, null);
return result;
}
/* ********************************************************** */
// '%cupsym' java_type
public static boolean option_cup_sym(PsiBuilder builder, int level) {
if (!recursion_guard_(builder, level, "option_cup_sym")) return false;
if (!nextTokenIs(builder, FLEX_OPT_CUPSYM)) return false;
boolean result, pinned;
Marker marker = enter_section_(builder, level, _NONE_, FLEX_OPTION, "<option>");
result = consumeToken(builder, FLEX_OPT_CUPSYM);
pinned = result; // pin = 1
result = result && java_type(builder, level + 1);
exit_section_(builder, level, marker, result, pinned, null);
return result || pinned;
}
/* ********************************************************** */
// '%debug'
public static boolean option_debug(PsiBuilder builder, int level) {
if (!recursion_guard_(builder, level, "option_debug")) return false;
if (!nextTokenIs(builder, FLEX_OPT_DEBUG)) return false;
boolean result;
Marker marker = enter_section_(builder, level, _NONE_, FLEX_OPTION, "<option>");
result = consumeToken(builder, FLEX_OPT_DEBUG);
exit_section_(builder, level, marker, result, false, null);
return result;
}
/* ********************************************************** */
// <<line '%eof{'>> java_code <<line '%eof}'>>
public static boolean option_eof(PsiBuilder builder, int level) {
if (!recursion_guard_(builder, level, "option_eof")) return false;
boolean result, pinned;
Marker marker = enter_section_(builder, level, _NONE_, FLEX_OPTION, "<option>");
result = line(builder, level + 1, opt_eof1_parser_);
pinned = result; // pin = 1
result = result && report_error_(builder, java_code(builder, level + 1));
result = pinned && line(builder, level + 1, opt_eof2_parser_) && result;
exit_section_(builder, level, marker, result, pinned, null);
return result || pinned;
}
/* ********************************************************** */
// '%eofclose' ['false']
public static boolean option_eof_close(PsiBuilder builder, int level) {
if (!recursion_guard_(builder, level, "option_eof_close")) return false;
if (!nextTokenIs(builder, FLEX_OPT_EOFCLOSE)) return false;
boolean result, pinned;
Marker marker = enter_section_(builder, level, _NONE_, FLEX_OPTION, "<option>");
result = consumeToken(builder, FLEX_OPT_EOFCLOSE);
pinned = result; // pin = 1
result = result && option_eof_close_1(builder, level + 1);
exit_section_(builder, level, marker, result, pinned, null);
return result || pinned;
}
// ['false']
private static boolean option_eof_close_1(PsiBuilder builder, int level) {
if (!recursion_guard_(builder, level, "option_eof_close_1")) return false;
consumeToken(builder, "false");
return true;
}
/* ********************************************************** */
// '%eofthrow' java_type_list | <<line '%eofthrow{'>> java_type_list <<line '%eofthrow}'>>
public static boolean option_eof_throw(PsiBuilder builder, int level) {
if (!recursion_guard_(builder, level, "option_eof_throw")) return false;
boolean result;
Marker marker = enter_section_(builder, level, _NONE_, FLEX_OPTION, "<option>");
result = option_eof_throw_0(builder, level + 1);
if (!result) result = option_eof_throw_1(builder, level + 1);
exit_section_(builder, level, marker, result, false, null);
return result;
}
// '%eofthrow' java_type_list
private static boolean option_eof_throw_0(PsiBuilder builder, int level) {
if (!recursion_guard_(builder, level, "option_eof_throw_0")) return false;
boolean result, pinned;
Marker marker = enter_section_(builder, level, _NONE_);
result = consumeToken(builder, FLEX_OPT_EOFTHROW);
pinned = result; // pin = 1
result = result && java_type_list(builder, level + 1);
exit_section_(builder, level, marker, result, pinned, null);
return result || pinned;
}
// <<line '%eofthrow{'>> java_type_list <<line '%eofthrow}'>>
private static boolean option_eof_throw_1(PsiBuilder builder, int level) {
if (!recursion_guard_(builder, level, "option_eof_throw_1")) return false;
boolean result, pinned;
Marker marker = enter_section_(builder, level, _NONE_);
result = line(builder, level + 1, opt_eofthrow1_parser_);
pinned = result; // pin = 1
result = result && report_error_(builder, java_type_list(builder, level + 1));
result = pinned && line(builder, level + 1, opt_eofthrow2_parser_) && result;
exit_section_(builder, level, marker, result, pinned, null);
return result || pinned;
}
/* ********************************************************** */
// <<line '%eofval{'>> java_code <<line '%eofval}'>>
public static boolean option_eof_val(PsiBuilder builder, int level) {
if (!recursion_guard_(builder, level, "option_eof_val")) return false;
boolean result, pinned;
Marker marker = enter_section_(builder, level, _NONE_, FLEX_OPTION, "<option>");
result = line(builder, level + 1, opt_eofval1_parser_);
pinned = result; // pin = 1
result = result && report_error_(builder, java_code(builder, level + 1));
result = pinned && line(builder, level + 1, opt_eofval2_parser_) && result;
exit_section_(builder, level, marker, result, pinned, null);
return result || pinned;
}
/* ********************************************************** */
// '%extends' java_type
public static boolean option_extends(PsiBuilder builder, int level) {
if (!recursion_guard_(builder, level, "option_extends")) return false;
if (!nextTokenIs(builder, FLEX_OPT_EXTENDS)) return false;
boolean result, pinned;
Marker marker = enter_section_(builder, level, _NONE_, FLEX_OPTION, "<option>");
result = consumeToken(builder, FLEX_OPT_EXTENDS);
pinned = result; // pin = 1
result = result && java_type(builder, level + 1);
exit_section_(builder, level, marker, result, pinned, null);
return result || pinned;
}
/* ********************************************************** */
// '%final'
public static boolean option_final(PsiBuilder builder, int level) {
if (!recursion_guard_(builder, level, "option_final")) return false;
if (!nextTokenIs(builder, FLEX_OPT_FINAL)) return false;
boolean result;
Marker marker = enter_section_(builder, level, _NONE_, FLEX_OPTION, "<option>");
result = consumeToken(builder, FLEX_OPT_FINAL);
exit_section_(builder, level, marker, result, false, null);
return result;
}
/* ********************************************************** */
// '%full' | '%8bit'
public static boolean option_full(PsiBuilder builder, int level) {
if (!recursion_guard_(builder, level, "option_full")) return false;
if (!nextTokenIs(builder, "<option>", FLEX_OPT_8BIT, FLEX_OPT_FULL)) return false;
boolean result;
Marker marker = enter_section_(builder, level, _NONE_, FLEX_OPTION, "<option>");
result = consumeToken(builder, FLEX_OPT_FULL);
if (!result) result = consumeToken(builder, FLEX_OPT_8BIT);
exit_section_(builder, level, marker, result, false, null);
return result;
}
/* ********************************************************** */
// '%function' id
public static boolean option_function(PsiBuilder builder, int level) {
if (!recursion_guard_(builder, level, "option_function")) return false;
if (!nextTokenIs(builder, FLEX_OPT_FUNCTION)) return false;
boolean result, pinned;
Marker marker = enter_section_(builder, level, _NONE_, FLEX_OPTION, "<option>");
result = consumeTokens(builder, 1, FLEX_OPT_FUNCTION, FLEX_ID);
pinned = result; // pin = 1
exit_section_(builder, level, marker, result, pinned, null);
return result || pinned;
}
/* ********************************************************** */
// '%caseless' | '%ignorecase'
public static boolean option_ignore_case(PsiBuilder builder, int level) {
if (!recursion_guard_(builder, level, "option_ignore_case")) return false;
if (!nextTokenIs(builder, "<option>", FLEX_OPT_CASELESS, FLEX_OPT_IGNORECASE)) return false;
boolean result;
Marker marker = enter_section_(builder, level, _NONE_, FLEX_OPTION, "<option>");
result = consumeToken(builder, FLEX_OPT_CASELESS);
if (!result) result = consumeToken(builder, FLEX_OPT_IGNORECASE);
exit_section_(builder, level, marker, result, false, null);
return result;
}
/* ********************************************************** */
// '%implements' java_type_list
public static boolean option_implements(PsiBuilder builder, int level) {
if (!recursion_guard_(builder, level, "option_implements")) return false;
if (!nextTokenIs(builder, FLEX_OPT_IMPLEMENTS)) return false;
boolean result, pinned;
Marker marker = enter_section_(builder, level, _NONE_, FLEX_OPTION, "<option>");
result = consumeToken(builder, FLEX_OPT_IMPLEMENTS);
pinned = result; // pin = 1
result = result && java_type_list(builder, level + 1);
exit_section_(builder, level, marker, result, pinned, null);
return result || pinned;
}
/* ********************************************************** */
// '%include' user_value
public static boolean option_include(PsiBuilder builder, int level) {
if (!recursion_guard_(builder, level, "option_include")) return false;
if (!nextTokenIs(builder, FLEX_OPT_INCLUDE)) return false;
boolean result, pinned;
Marker marker = enter_section_(builder, level, _NONE_, FLEX_OPTION, "<option>");
result = consumeToken(builder, FLEX_OPT_INCLUDE);
pinned = result; // pin = 1
result = result && user_value(builder, level + 1);
exit_section_(builder, level, marker, result, pinned, null);
return result || pinned;
}
/* ********************************************************** */
// <<line '%init{'>> java_code <<line '%init}'>>
public static boolean option_init(PsiBuilder builder, int level) {
if (!recursion_guard_(builder, level, "option_init")) return false;
boolean result, pinned;
Marker marker = enter_section_(builder, level, _NONE_, FLEX_OPTION, "<option>");
result = line(builder, level + 1, opt_init1_parser_);
pinned = result; // pin = 1
result = result && report_error_(builder, java_code(builder, level + 1));
result = pinned && line(builder, level + 1, opt_init2_parser_) && result;
exit_section_(builder, level, marker, result, pinned, null);
return result || pinned;
}
/* ********************************************************** */
// '%initthrow' java_type_list | <<line '%initthrow{'>> java_type_list <<line '%initthrow}'>>
public static boolean option_init_throw(PsiBuilder builder, int level) {
if (!recursion_guard_(builder, level, "option_init_throw")) return false;
boolean result;
Marker marker = enter_section_(builder, level, _NONE_, FLEX_OPTION, "<option>");
result = option_init_throw_0(builder, level + 1);
if (!result) result = option_init_throw_1(builder, level + 1);
exit_section_(builder, level, marker, result, false, null);
return result;
}
// '%initthrow' java_type_list
private static boolean option_init_throw_0(PsiBuilder builder, int level) {
if (!recursion_guard_(builder, level, "option_init_throw_0")) return false;
boolean result, pinned;
Marker marker = enter_section_(builder, level, _NONE_);
result = consumeToken(builder, FLEX_OPT_INITTHROW);
pinned = result; // pin = 1
result = result && java_type_list(builder, level + 1);
exit_section_(builder, level, marker, result, pinned, null);
return result || pinned;
}
// <<line '%initthrow{'>> java_type_list <<line '%initthrow}'>>
private static boolean option_init_throw_1(PsiBuilder builder, int level) {
if (!recursion_guard_(builder, level, "option_init_throw_1")) return false;
boolean result, pinned;
Marker marker = enter_section_(builder, level, _NONE_);
result = line(builder, level + 1, opt_initthrow1_parser_);
pinned = result; // pin = 1
result = result && report_error_(builder, java_type_list(builder, level + 1));
result = pinned && line(builder, level + 1, opt_initthrow2_parser_) && result;
exit_section_(builder, level, marker, result, pinned, null);
return result || pinned;
}
/* ********************************************************** */
// '%integer' | '%int'
public static boolean option_integer(PsiBuilder builder, int level) {
if (!recursion_guard_(builder, level, "option_integer")) return false;
if (!nextTokenIs(builder, "<option>", FLEX_OPT_INT, FLEX_OPT_INTEGER)) return false;
boolean result;
Marker marker = enter_section_(builder, level, _NONE_, FLEX_OPTION, "<option>");
result = consumeToken(builder, FLEX_OPT_INTEGER);
if (!result) result = consumeToken(builder, FLEX_OPT_INT);
exit_section_(builder, level, marker, result, false, null);
return result;
}
/* ********************************************************** */
// '%intwrap'
public static boolean option_intwrap(PsiBuilder builder, int level) {
if (!recursion_guard_(builder, level, "option_intwrap")) return false;
if (!nextTokenIs(builder, FLEX_OPT_INTWRAP)) return false;
boolean result;
Marker marker = enter_section_(builder, level, _NONE_, FLEX_OPTION, "<option>");
result = consumeToken(builder, FLEX_OPT_INTWRAP);
exit_section_(builder, level, marker, result, false, null);
return result;
}
/* ********************************************************** */
// '%notunix' | '%yyeof'
public static boolean option_obsolete(PsiBuilder builder, int level) {
if (!recursion_guard_(builder, level, "option_obsolete")) return false;
if (!nextTokenIs(builder, "<option>", FLEX_OPT_NOTUNIX, FLEX_OPT_YYEOF)) return false;
boolean result;
Marker marker = enter_section_(builder, level, _NONE_, FLEX_OPTION, "<option>");
result = consumeToken(builder, FLEX_OPT_NOTUNIX);
if (!result) result = consumeToken(builder, FLEX_OPT_YYEOF);
exit_section_(builder, level, marker, result, false, null);
return result;
}
/* ********************************************************** */
// '%public'
public static boolean option_public(PsiBuilder builder, int level) {
if (!recursion_guard_(builder, level, "option_public")) return false;
if (!nextTokenIs(builder, FLEX_OPT_PUBLIC)) return false;
boolean result;
Marker marker = enter_section_(builder, level, _NONE_, FLEX_OPTION, "<option>");
result = consumeToken(builder, FLEX_OPT_PUBLIC);
exit_section_(builder, level, marker, result, false, null);
return result;
}
/* ********************************************************** */
// '%scanerror' java_type
public static boolean option_scan_error(PsiBuilder builder, int level) {
if (!recursion_guard_(builder, level, "option_scan_error")) return false;
if (!nextTokenIs(builder, FLEX_OPT_SCANERROR)) return false;
boolean result, pinned;
Marker marker = enter_section_(builder, level, _NONE_, FLEX_OPTION, "<option>");
result = consumeToken(builder, FLEX_OPT_SCANERROR);
pinned = result; // pin = 1
result = result && java_type(builder, level + 1);
exit_section_(builder, level, marker, result, pinned, null);
return result || pinned;
}
/* ********************************************************** */
// '%standalone'
public static boolean option_standalone(PsiBuilder builder, int level) {
if (!recursion_guard_(builder, level, "option_standalone")) return false;
if (!nextTokenIs(builder, FLEX_OPT_STANDALONE)) return false;
boolean result;
Marker marker = enter_section_(builder, level, _NONE_, FLEX_OPTION, "<option>");
result = consumeToken(builder, FLEX_OPT_STANDALONE);
exit_section_(builder, level, marker, result, false, null);
return result;
}
/* ********************************************************** */
// '%switch'
public static boolean option_switch(PsiBuilder builder, int level) {
if (!recursion_guard_(builder, level, "option_switch")) return false;
boolean result;
Marker marker = enter_section_(builder, level, _NONE_, FLEX_OPTION, "<option>");
result = consumeToken(builder, "%switch");
exit_section_(builder, level, marker, result, false, null);
return result;
}
/* ********************************************************** */
// '%table'
public static boolean option_table(PsiBuilder builder, int level) {
if (!recursion_guard_(builder, level, "option_table")) return false;
boolean result;
Marker marker = enter_section_(builder, level, _NONE_, FLEX_OPTION, "<option>");
result = consumeToken(builder, "%table");
exit_section_(builder, level, marker, result, false, null);
return result;
}
/* ********************************************************** */
// '%type' java_type
public static boolean option_type(PsiBuilder builder, int level) {
if (!recursion_guard_(builder, level, "option_type")) return false;
if (!nextTokenIs(builder, FLEX_OPT_TYPE)) return false;
boolean result, pinned;
Marker marker = enter_section_(builder, level, _NONE_, FLEX_OPTION, "<option>");
result = consumeToken(builder, FLEX_OPT_TYPE);
pinned = result; // pin = 1
result = result && java_type(builder, level + 1);
exit_section_(builder, level, marker, result, pinned, null);
return result || pinned;
}
/* ********************************************************** */
// '%unicode' [number | version]
public static boolean option_unicode(PsiBuilder builder, int level) {
if (!recursion_guard_(builder, level, "option_unicode")) return false;
if (!nextTokenIs(builder, FLEX_OPT_UNICODE)) return false;
boolean result, pinned;
Marker marker = enter_section_(builder, level, _NONE_, FLEX_OPTION, "<option>");
result = consumeToken(builder, FLEX_OPT_UNICODE);
pinned = result; // pin = 1
result = result && option_unicode_1(builder, level + 1);
exit_section_(builder, level, marker, result, pinned, null);
return result || pinned;
}
// [number | version]
private static boolean option_unicode_1(PsiBuilder builder, int level) {
if (!recursion_guard_(builder, level, "option_unicode_1")) return false;
option_unicode_1_0(builder, level + 1);
return true;
}
// number | version
private static boolean option_unicode_1_0(PsiBuilder builder, int level) {
if (!recursion_guard_(builder, level, "option_unicode_1_0")) return false;
boolean result;
Marker marker = enter_section_(builder);
result = consumeToken(builder, FLEX_NUMBER);
if (!result) result = consumeToken(builder, FLEX_VERSION);
exit_section_(builder, marker, null, result);
return result;
}
/* ********************************************************** */
// <<line '%{'>> java_code <<line '%}'>>
public static boolean option_user_code(PsiBuilder builder, int level) {
if (!recursion_guard_(builder, level, "option_user_code")) return false;
boolean result, pinned;
Marker marker = enter_section_(builder, level, _NONE_, FLEX_OPTION, "<option>");
result = line(builder, level + 1, opt_code1_parser_);
pinned = result; // pin = 1
result = result && report_error_(builder, java_code(builder, level + 1));
result = pinned && line(builder, level + 1, opt_code2_parser_) && result;
exit_section_(builder, level, marker, result, pinned, null);
return result || pinned;
}
/* ********************************************************** */
// '%yylexthrow' java_type_list | <<line '%yylexthrow{'>> java_type_list <<line '%yylexthrow}'>>
public static boolean option_yylexthrow(PsiBuilder builder, int level) {
if (!recursion_guard_(builder, level, "option_yylexthrow")) return false;
boolean result;
Marker marker = enter_section_(builder, level, _NONE_, FLEX_OPTION, "<option>");
result = option_yylexthrow_0(builder, level + 1);
if (!result) result = option_yylexthrow_1(builder, level + 1);
exit_section_(builder, level, marker, result, false, null);
return result;
}
// '%yylexthrow' java_type_list
private static boolean option_yylexthrow_0(PsiBuilder builder, int level) {
if (!recursion_guard_(builder, level, "option_yylexthrow_0")) return false;
boolean result, pinned;
Marker marker = enter_section_(builder, level, _NONE_);
result = consumeToken(builder, FLEX_OPT_YYLEXTHROW);
pinned = result; // pin = 1
result = result && java_type_list(builder, level + 1);
exit_section_(builder, level, marker, result, pinned, null);
return result || pinned;
}
// <<line '%yylexthrow{'>> java_type_list <<line '%yylexthrow}'>>
private static boolean option_yylexthrow_1(PsiBuilder builder, int level) {
if (!recursion_guard_(builder, level, "option_yylexthrow_1")) return false;
boolean result, pinned;
Marker marker = enter_section_(builder, level, _NONE_);
result = line(builder, level + 1, opt_yylexthrow1_parser_);
pinned = result; // pin = 1
result = result && report_error_(builder, java_type_list(builder, level + 1));
result = pinned && line(builder, level + 1, opt_yylexthrow2_parser_) && result;
exit_section_(builder, level, marker, result, pinned, null);
return result || pinned;
}
/* ********************************************************** */
// state_list (rule_group | rule_tail ) | rule_tail
public static boolean rule(PsiBuilder builder, int level) {
if (!recursion_guard_(builder, level, "rule")) return false;
boolean result;
Marker marker = enter_section_(builder, level, _NONE_, FLEX_RULE, "<rule>");
result = rule_0(builder, level + 1);
if (!result) result = rule_tail(builder, level + 1);
exit_section_(builder, level, marker, result, false, null);
return result;
}
// state_list (rule_group | rule_tail )
private static boolean rule_0(PsiBuilder builder, int level) {
if (!recursion_guard_(builder, level, "rule_0")) return false;
boolean result, pinned;
Marker marker = enter_section_(builder, level, _NONE_);
result = state_list(builder, level + 1);
pinned = result; // pin = 1
result = result && rule_0_1(builder, level + 1);
exit_section_(builder, level, marker, result, pinned, null);
return result || pinned;
}
// rule_group | rule_tail
private static boolean rule_0_1(PsiBuilder builder, int level) {
if (!recursion_guard_(builder, level, "rule_0_1")) return false;
boolean result;
Marker marker = enter_section_(builder);
result = rule_group(builder, level + 1);
if (!result) result = rule_tail(builder, level + 1);
exit_section_(builder, marker, null, result);
return result;
}
/* ********************************************************** */
// !('{' id '}') '{' rule_group_item + '}'
static boolean rule_group(PsiBuilder builder, int level) {
if (!recursion_guard_(builder, level, "rule_group")) return false;
if (!nextTokenIs(builder, FLEX_BRACE1)) return false;
boolean result, pinned;
Marker marker = enter_section_(builder, level, _NONE_);
result = rule_group_0(builder, level + 1);
result = result && consumeToken(builder, FLEX_BRACE1);
pinned = result; // pin = 2
result = result && report_error_(builder, rule_group_2(builder, level + 1));
result = pinned && consumeToken(builder, FLEX_BRACE2) && result;
exit_section_(builder, level, marker, result, pinned, null);
return result || pinned;
}
// !('{' id '}')
private static boolean rule_group_0(PsiBuilder builder, int level) {
if (!recursion_guard_(builder, level, "rule_group_0")) return false;
boolean result;
Marker marker = enter_section_(builder, level, _NOT_);
result = !rule_group_0_0(builder, level + 1);
exit_section_(builder, level, marker, result, false, null);
return result;
}
// '{' id '}'
private static boolean rule_group_0_0(PsiBuilder builder, int level) {
if (!recursion_guard_(builder, level, "rule_group_0_0")) return false;
boolean result;
Marker marker = enter_section_(builder);
result = consumeTokens(builder, 0, FLEX_BRACE1, FLEX_ID, FLEX_BRACE2);
exit_section_(builder, marker, null, result);
return result;
}
// rule_group_item +
private static boolean rule_group_2(PsiBuilder builder, int level) {
if (!recursion_guard_(builder, level, "rule_group_2")) return false;
boolean result;
Marker marker = enter_section_(builder);
result = rule_group_item(builder, level + 1);
int pos = current_position_(builder);
while (result) {
if (!rule_group_item(builder, level + 1)) break;
if (!empty_element_parsed_guard_(builder, "rule_group_2", pos)) break;
pos = current_position_(builder);
}
exit_section_(builder, marker, null, result);
return result;
}
/* ********************************************************** */
// option_include | rule
static boolean rule_group_item(PsiBuilder builder, int level) {
if (!recursion_guard_(builder, level, "rule_group_item")) return false;
boolean result;
Marker marker = enter_section_(builder, level, _NONE_);
result = option_include(builder, level + 1);
if (!result) result = rule(builder, level + 1);
exit_section_(builder, level, marker, result, false, rule_recover_parser_);
return result;
}
/* ********************************************************** */
// !('}' | '.' | '<' | '<<EOF>>' | '^'| new_line | atom_group)
static boolean rule_recover(PsiBuilder builder, int level) {
if (!recursion_guard_(builder, level, "rule_recover")) return false;
boolean result;
Marker marker = enter_section_(builder, level, _NOT_);
result = !rule_recover_0(builder, level + 1);
exit_section_(builder, level, marker, result, false, null);
return result;
}
// '}' | '.' | '<' | '<<EOF>>' | '^'| new_line | atom_group
private static boolean rule_recover_0(PsiBuilder builder, int level) {
if (!recursion_guard_(builder, level, "rule_recover_0")) return false;
boolean result;
Marker marker = enter_section_(builder);
result = consumeToken(builder, FLEX_BRACE2);
if (!result) result = consumeToken(builder, FLEX_DOT);
if (!result) result = consumeToken(builder, FLEX_ANGLE1);
if (!result) result = consumeToken(builder, FLEX_EOF);
if (!result) result = consumeToken(builder, FLEX_HAT);
if (!result) result = new_line(builder, level + 1);
if (!result) result = expression(builder, level + 1, 4);
exit_section_(builder, marker, null, result);
return result;
}
/* ********************************************************** */
// rule_tail1 | rule_tail2
static boolean rule_tail(PsiBuilder builder, int level) {
if (!recursion_guard_(builder, level, "rule_tail")) return false;
boolean result;
Marker marker = enter_section_(builder);
result = rule_tail1(builder, level + 1);
if (!result) result = rule_tail2(builder, level + 1);
exit_section_(builder, marker, null, result);
return result;
}
/* ********************************************************** */
// '<<EOF>>' action
static boolean rule_tail1(PsiBuilder builder, int level) {
if (!recursion_guard_(builder, level, "rule_tail1")) return false;
if (!nextTokenIs(builder, FLEX_EOF)) return false;
boolean result, pinned;
Marker marker = enter_section_(builder, level, _NONE_);
result = consumeToken(builder, FLEX_EOF);
pinned = result; // pin = 1
result = result && action(builder, level + 1);
exit_section_(builder, level, marker, result, pinned, null);
return result || pinned;
}
/* ********************************************************** */
// ['^'] expression look_ahead? action
static boolean rule_tail2(PsiBuilder builder, int level) {
if (!recursion_guard_(builder, level, "rule_tail2")) return false;
boolean result, pinned;
Marker marker = enter_section_(builder, level, _NONE_);
result = rule_tail2_0(builder, level + 1);
result = result && expression(builder, level + 1, -1);
pinned = result; // pin = 2
result = result && report_error_(builder, rule_tail2_2(builder, level + 1));
result = pinned && action(builder, level + 1) && result;
exit_section_(builder, level, marker, result, pinned, null);
return result || pinned;
}
// ['^']
private static boolean rule_tail2_0(PsiBuilder builder, int level) {
if (!recursion_guard_(builder, level, "rule_tail2_0")) return false;
consumeToken(builder, FLEX_HAT);
return true;
}
// look_ahead?
private static boolean rule_tail2_2(PsiBuilder builder, int level) {
if (!recursion_guard_(builder, level, "rule_tail2_2")) return false;
look_ahead(builder, level + 1);
return true;
}
/* ********************************************************** */
// '.' !'*'
static boolean safe_dot(PsiBuilder builder, int level) {
if (!recursion_guard_(builder, level, "safe_dot")) return false;
if (!nextTokenIs(builder, FLEX_DOT)) return false;
boolean result;
Marker marker = enter_section_(builder);
result = consumeToken(builder, FLEX_DOT);
result = result && safe_dot_1(builder, level + 1);
exit_section_(builder, marker, null, result);
return result;
}
// !'*'
private static boolean safe_dot_1(PsiBuilder builder, int level) {
if (!recursion_guard_(builder, level, "safe_dot_1")) return false;
boolean result;
Marker marker = enter_section_(builder, level, _NOT_);
result = !consumeToken(builder, FLEX_STAR);
exit_section_(builder, level, marker, result, false, null);
return result;
}
/* ********************************************************** */
// <<line '%%'>>
static boolean section_div(PsiBuilder builder, int level) {
return line(builder, level + 1, two_percs_parser_);
}
/* ********************************************************** */
// !'%%'
static boolean section_recover(PsiBuilder builder, int level) {
if (!recursion_guard_(builder, level, "section_recover")) return false;
boolean result;
Marker marker = enter_section_(builder, level, _NOT_);
result = !consumeToken(builder, FLEX_TWO_PERCS);
exit_section_(builder, level, marker, result, false, null);
return result;
}
/* ********************************************************** */
// &('!' | '(' | '.' | '[' | '~'
// | char_or_esc | char_class | number | string
// | '{' id | !new_line id )
static boolean sequence_op(PsiBuilder builder, int level) {
if (!recursion_guard_(builder, level, "sequence_op")) return false;
boolean result;
Marker marker = enter_section_(builder, level, _AND_, null, "<expression>");
result = sequence_op_0(builder, level + 1);
exit_section_(builder, level, marker, result, false, null);
return result;
}
// '!' | '(' | '.' | '[' | '~'
// | char_or_esc | char_class | number | string
// | '{' id | !new_line id
private static boolean sequence_op_0(PsiBuilder builder, int level) {
if (!recursion_guard_(builder, level, "sequence_op_0")) return false;
boolean result;
Marker marker = enter_section_(builder);
result = consumeToken(builder, FLEX_BANG);
if (!result) result = consumeToken(builder, FLEX_PAREN1);
if (!result) result = consumeToken(builder, FLEX_DOT);
if (!result) result = consumeToken(builder, FLEX_BRACK1);
if (!result) result = consumeToken(builder, FLEX_TILDE);
if (!result) result = char_or_esc(builder, level + 1);
if (!result) result = consumeToken(builder, FLEX_CHAR_CLASS);
if (!result) result = consumeToken(builder, FLEX_NUMBER);
if (!result) result = consumeToken(builder, FLEX_STRING);
if (!result) result = parseTokens(builder, 0, FLEX_BRACE1, FLEX_ID);
if (!result) result = sequence_op_0_10(builder, level + 1);
exit_section_(builder, marker, null, result);
return result;
}
// !new_line id
private static boolean sequence_op_0_10(PsiBuilder builder, int level) {
if (!recursion_guard_(builder, level, "sequence_op_0_10")) return false;
boolean result;
Marker marker = enter_section_(builder);
result = sequence_op_0_10_0(builder, level + 1);
result = result && consumeToken(builder, FLEX_ID);
exit_section_(builder, marker, null, result);
return result;
}
// !new_line
private static boolean sequence_op_0_10_0(PsiBuilder builder, int level) {
if (!recursion_guard_(builder, level, "sequence_op_0_10_0")) return false;
boolean result;
Marker marker = enter_section_(builder, level, _NOT_);
result = !new_line(builder, level + 1);
exit_section_(builder, level, marker, result, false, null);
return result;
}
/* ********************************************************** */
// ('%state' | '%xstate') state_definition ((','? !(id '=')) state_definition) * ','?
public static boolean state_declaration(PsiBuilder builder, int level) {
if (!recursion_guard_(builder, level, "state_declaration")) return false;
if (!nextTokenIs(builder, "<state declaration>", FLEX_OPT_STATE, FLEX_OPT_XSTATE)) return false;
boolean result, pinned;
Marker marker = enter_section_(builder, level, _NONE_, FLEX_STATE_DECLARATION, "<state declaration>");
result = state_declaration_0(builder, level + 1);
pinned = result; // pin = 1
result = result && report_error_(builder, state_definition(builder, level + 1));
result = pinned && report_error_(builder, state_declaration_2(builder, level + 1)) && result;
result = pinned && state_declaration_3(builder, level + 1) && result;
exit_section_(builder, level, marker, result, pinned, null);
return result || pinned;
}
// '%state' | '%xstate'
private static boolean state_declaration_0(PsiBuilder builder, int level) {
if (!recursion_guard_(builder, level, "state_declaration_0")) return false;
boolean result;
Marker marker = enter_section_(builder);
result = consumeToken(builder, FLEX_OPT_STATE);
if (!result) result = consumeToken(builder, FLEX_OPT_XSTATE);
exit_section_(builder, marker, null, result);
return result;
}
// ((','? !(id '=')) state_definition) *
private static boolean state_declaration_2(PsiBuilder builder, int level) {
if (!recursion_guard_(builder, level, "state_declaration_2")) return false;
int pos = current_position_(builder);
while (true) {
if (!state_declaration_2_0(builder, level + 1)) break;
if (!empty_element_parsed_guard_(builder, "state_declaration_2", pos)) break;
pos = current_position_(builder);
}
return true;
}
// (','? !(id '=')) state_definition
private static boolean state_declaration_2_0(PsiBuilder builder, int level) {
if (!recursion_guard_(builder, level, "state_declaration_2_0")) return false;
boolean result;
Marker marker = enter_section_(builder);
result = state_declaration_2_0_0(builder, level + 1);
result = result && state_definition(builder, level + 1);
exit_section_(builder, marker, null, result);
return result;
}
// ','? !(id '=')
private static boolean state_declaration_2_0_0(PsiBuilder builder, int level) {
if (!recursion_guard_(builder, level, "state_declaration_2_0_0")) return false;
boolean result;
Marker marker = enter_section_(builder);
result = state_declaration_2_0_0_0(builder, level + 1);
result = result && state_declaration_2_0_0_1(builder, level + 1);
exit_section_(builder, marker, null, result);
return result;
}
// ','?
private static boolean state_declaration_2_0_0_0(PsiBuilder builder, int level) {
if (!recursion_guard_(builder, level, "state_declaration_2_0_0_0")) return false;
consumeToken(builder, FLEX_COMMA);
return true;
}
// !(id '=')
private static boolean state_declaration_2_0_0_1(PsiBuilder builder, int level) {
if (!recursion_guard_(builder, level, "state_declaration_2_0_0_1")) return false;
boolean result;
Marker marker = enter_section_(builder, level, _NOT_);
result = !state_declaration_2_0_0_1_0(builder, level + 1);
exit_section_(builder, level, marker, result, false, null);
return result;
}
// id '='
private static boolean state_declaration_2_0_0_1_0(PsiBuilder builder, int level) {
if (!recursion_guard_(builder, level, "state_declaration_2_0_0_1_0")) return false;
boolean result;
Marker marker = enter_section_(builder);
result = consumeTokens(builder, 0, FLEX_ID, FLEX_EQ);
exit_section_(builder, marker, null, result);
return result;
}
// ','?
private static boolean state_declaration_3(PsiBuilder builder, int level) {
if (!recursion_guard_(builder, level, "state_declaration_3")) return false;
consumeToken(builder, FLEX_COMMA);
return true;
}
/* ********************************************************** */
// id
public static boolean state_definition(PsiBuilder builder, int level) {
if (!recursion_guard_(builder, level, "state_definition")) return false;
if (!nextTokenIs(builder, FLEX_ID)) return false;
boolean result;
Marker marker = enter_section_(builder);
result = consumeToken(builder, FLEX_ID);
exit_section_(builder, marker, FLEX_STATE_DEFINITION, result);
return result;
}
/* ********************************************************** */
// '<' state_reference (',' state_reference) * '>'
public static boolean state_list(PsiBuilder builder, int level) {
if (!recursion_guard_(builder, level, "state_list")) return false;
if (!nextTokenIs(builder, FLEX_ANGLE1)) return false;
boolean result, pinned;
Marker marker = enter_section_(builder, level, _NONE_, FLEX_STATE_LIST, null);
result = consumeToken(builder, FLEX_ANGLE1);
pinned = result; // pin = 1
result = result && report_error_(builder, state_reference(builder, level + 1));
result = pinned && report_error_(builder, state_list_2(builder, level + 1)) && result;
result = pinned && consumeToken(builder, FLEX_ANGLE2) && result;
exit_section_(builder, level, marker, result, pinned, null);
return result || pinned;
}
// (',' state_reference) *
private static boolean state_list_2(PsiBuilder builder, int level) {
if (!recursion_guard_(builder, level, "state_list_2")) return false;
int pos = current_position_(builder);
while (true) {
if (!state_list_2_0(builder, level + 1)) break;
if (!empty_element_parsed_guard_(builder, "state_list_2", pos)) break;
pos = current_position_(builder);
}
return true;
}
// ',' state_reference
private static boolean state_list_2_0(PsiBuilder builder, int level) {
if (!recursion_guard_(builder, level, "state_list_2_0")) return false;
boolean result, pinned;
Marker marker = enter_section_(builder, level, _NONE_);
result = consumeToken(builder, FLEX_COMMA);
pinned = result; // pin = 1
result = result && state_reference(builder, level + 1);
exit_section_(builder, level, marker, result, pinned, null);
return result || pinned;
}
/* ********************************************************** */
// id
public static boolean state_reference(PsiBuilder builder, int level) {
if (!recursion_guard_(builder, level, "state_reference")) return false;
if (!nextTokenIs(builder, FLEX_ID)) return false;
boolean result;
Marker marker = enter_section_(builder);
result = consumeToken(builder, FLEX_ID);
exit_section_(builder, marker, FLEX_STATE_REFERENCE, result);
return result;
}
/* ********************************************************** */
// [] java_code
public static boolean user_code_section(PsiBuilder builder, int level) {
if (!recursion_guard_(builder, level, "user_code_section")) return false;
boolean result, pinned;
Marker marker = enter_section_(builder, level, _NONE_, FLEX_USER_CODE_SECTION, "<user code section>");
result = user_code_section_0(builder, level + 1);
pinned = result; // pin = 1
result = result && java_code(builder, level + 1);
exit_section_(builder, level, marker, result, pinned, section_recover_parser_);
return result || pinned;
}
// []
private static boolean user_code_section_0(PsiBuilder builder, int level) {
return true;
}
/* ********************************************************** */
// <<anything2 !new_line>>
public static boolean user_value(PsiBuilder builder, int level) {
if (!recursion_guard_(builder, level, "user_value")) return false;
boolean result;
Marker marker = enter_section_(builder, level, _NONE_, FLEX_USER_VALUE, "<user value>");
result = anything2(builder, level + 1, user_value_0_0_parser_);
exit_section_(builder, level, marker, result, false, null);
return result;
}
// !new_line
private static boolean user_value_0_0(PsiBuilder builder, int level) {
if (!recursion_guard_(builder, level, "user_value_0_0")) return false;
boolean result;
Marker marker = enter_section_(builder, level, _NOT_);
result = !new_line(builder, level + 1);
exit_section_(builder, level, marker, result, false, null);
return result;
}
/* ********************************************************** */
// Expression root: expression
// Operator priority table:
// 0: N_ARY(choice_expression)
// 1: N_ARY(sequence_expression)
// 2: ATOM(paren_expression)
// 3: PREFIX(not_expression)
// 4: POSTFIX(quantifier_expression)
// 5: ATOM(class_expression) ATOM(predefined_class_expression) ATOM(macro_ref_expression) ATOM(literal_expression)
public static boolean expression(PsiBuilder builder, int level, int priority) {
if (!recursion_guard_(builder, level, "expression")) return false;
addVariant(builder, "<expression>");
boolean result, pinned;
Marker marker = enter_section_(builder, level, _NONE_, "<expression>");
result = paren_expression(builder, level + 1);
if (!result) result = not_expression(builder, level + 1);
if (!result) result = class_expression(builder, level + 1);
if (!result) result = predefined_class_expression(builder, level + 1);
if (!result) result = macro_ref_expression(builder, level + 1);
if (!result) result = literal_expression(builder, level + 1);
pinned = result;
result = result && expression_0(builder, level + 1, priority);
exit_section_(builder, level, marker, null, result, pinned, null);
return result || pinned;
}
public static boolean expression_0(PsiBuilder builder, int level, int priority) {
if (!recursion_guard_(builder, level, "expression_0")) return false;
boolean result = true;
while (true) {
Marker marker = enter_section_(builder, level, _LEFT_, null);
if (priority < 0 && consumeTokenSmart(builder, FLEX_BAR)) {
while (true) {
result = report_error_(builder, expression(builder, level, 0));
if (!consumeTokenSmart(builder, FLEX_BAR)) break;
}
exit_section_(builder, level, marker, FLEX_CHOICE_EXPRESSION, result, true, null);
}
else if (priority < 1 && sequence_op(builder, level + 1)) {
int pos = current_position_(builder);
while (true) {
result = report_error_(builder, expression(builder, level, 1));
if (!sequence_op(builder, level + 1)) break;
if (!empty_element_parsed_guard_(builder, "sequence_expression", pos)) break;
pos = current_position_(builder);
}
exit_section_(builder, level, marker, FLEX_SEQUENCE_EXPRESSION, result, true, null);
}
else if (priority < 4 && quantifier_expression_0(builder, level + 1)) {
result = true;
exit_section_(builder, level, marker, FLEX_QUANTIFIER_EXPRESSION, result, true, null);
}
else {
exit_section_(builder, level, marker, null, false, false, null);
break;
}
}
return result;
}
// '(' expression ')'
public static boolean paren_expression(PsiBuilder builder, int level) {
if (!recursion_guard_(builder, level, "paren_expression")) return false;
if (!nextTokenIsSmart(builder, FLEX_PAREN1)) return false;
boolean result, pinned;
Marker marker = enter_section_(builder, level, _NONE_, FLEX_PAREN_EXPRESSION, "<expression>");
result = consumeTokenSmart(builder, FLEX_PAREN1);
pinned = result; // pin = 1
result = result && report_error_(builder, expression(builder, level + 1, -1));
result = pinned && consumeToken(builder, FLEX_PAREN2) && result;
exit_section_(builder, level, marker, result, pinned, null);
return result || pinned;
}
public static boolean not_expression(PsiBuilder builder, int level) {
if (!recursion_guard_(builder, level, "not_expression")) return false;
if (!nextTokenIsSmart(builder, FLEX_BANG, FLEX_TILDE)) return false;
boolean result, pinned;
Marker marker = enter_section_(builder, level, _NONE_, null);
result = not_expression_0(builder, level + 1);
pinned = result;
result = pinned && expression(builder, level, 3);
exit_section_(builder, level, marker, FLEX_NOT_EXPRESSION, result, pinned, null);
return result || pinned;
}
// '!'|'~'
private static boolean not_expression_0(PsiBuilder builder, int level) {
if (!recursion_guard_(builder, level, "not_expression_0")) return false;
boolean result;
Marker marker = enter_section_(builder);
result = consumeTokenSmart(builder, FLEX_BANG);
if (!result) result = consumeTokenSmart(builder, FLEX_TILDE);
exit_section_(builder, marker, null, result);
return result;
}
// '*' | '+' | '?' | '{' number [ ',' number] '}'
private static boolean quantifier_expression_0(PsiBuilder builder, int level) {
if (!recursion_guard_(builder, level, "quantifier_expression_0")) return false;
boolean result;
Marker marker = enter_section_(builder);
result = consumeTokenSmart(builder, FLEX_STAR);
if (!result) result = consumeTokenSmart(builder, FLEX_PLUS);
if (!result) result = consumeTokenSmart(builder, FLEX_QUESTION);
if (!result) result = quantifier_expression_0_3(builder, level + 1);
exit_section_(builder, marker, null, result);
return result;
}
// '{' number [ ',' number] '}'
private static boolean quantifier_expression_0_3(PsiBuilder builder, int level) {
if (!recursion_guard_(builder, level, "quantifier_expression_0_3")) return false;
boolean result;
Marker marker = enter_section_(builder);
result = consumeTokensSmart(builder, 0, FLEX_BRACE1, FLEX_NUMBER);
result = result && quantifier_expression_0_3_2(builder, level + 1);
result = result && consumeToken(builder, FLEX_BRACE2);
exit_section_(builder, marker, null, result);
return result;
}
// [ ',' number]
private static boolean quantifier_expression_0_3_2(PsiBuilder builder, int level) {
if (!recursion_guard_(builder, level, "quantifier_expression_0_3_2")) return false;
parseTokensSmart(builder, 0, FLEX_COMMA, FLEX_NUMBER);
return true;
}
// '[' '^'? (char_class_item (char_class_op char_class_item)* )* ']'
public static boolean class_expression(PsiBuilder builder, int level) {
if (!recursion_guard_(builder, level, "class_expression")) return false;
if (!nextTokenIsSmart(builder, FLEX_BRACK1)) return false;
boolean result, pinned;
Marker marker = enter_section_(builder, level, _NONE_, FLEX_CLASS_EXPRESSION, "<expression>");
result = consumeTokenSmart(builder, FLEX_BRACK1);
pinned = result; // pin = 1
result = result && report_error_(builder, class_expression_1(builder, level + 1));
result = pinned && report_error_(builder, class_expression_2(builder, level + 1)) && result;
result = pinned && consumeToken(builder, FLEX_BRACK2) && result;
exit_section_(builder, level, marker, result, pinned, null);
return result || pinned;
}
// '^'?
private static boolean class_expression_1(PsiBuilder builder, int level) {
if (!recursion_guard_(builder, level, "class_expression_1")) return false;
consumeTokenSmart(builder, FLEX_HAT);
return true;
}
// (char_class_item (char_class_op char_class_item)* )*
private static boolean class_expression_2(PsiBuilder builder, int level) {
if (!recursion_guard_(builder, level, "class_expression_2")) return false;
int pos = current_position_(builder);
while (true) {
if (!class_expression_2_0(builder, level + 1)) break;
if (!empty_element_parsed_guard_(builder, "class_expression_2", pos)) break;
pos = current_position_(builder);
}
return true;
}
// char_class_item (char_class_op char_class_item)*
private static boolean class_expression_2_0(PsiBuilder builder, int level) {
if (!recursion_guard_(builder, level, "class_expression_2_0")) return false;
boolean result, pinned;
Marker marker = enter_section_(builder, level, _NONE_);
result = char_class_item(builder, level + 1);
pinned = result; // pin = 1
result = result && class_expression_2_0_1(builder, level + 1);
exit_section_(builder, level, marker, result, pinned, null);
return result || pinned;
}
// (char_class_op char_class_item)*
private static boolean class_expression_2_0_1(PsiBuilder builder, int level) {
if (!recursion_guard_(builder, level, "class_expression_2_0_1")) return false;
int pos = current_position_(builder);
while (true) {
if (!class_expression_2_0_1_0(builder, level + 1)) break;
if (!empty_element_parsed_guard_(builder, "class_expression_2_0_1", pos)) break;
pos = current_position_(builder);
}
return true;
}
// char_class_op char_class_item
private static boolean class_expression_2_0_1_0(PsiBuilder builder, int level) {
if (!recursion_guard_(builder, level, "class_expression_2_0_1_0")) return false;
boolean result, pinned;
Marker marker = enter_section_(builder, level, _NONE_);
result = char_class_op(builder, level + 1);
pinned = result; // pin = 1
result = result && char_class_item(builder, level + 1);
exit_section_(builder, level, marker, result, pinned, null);
return result || pinned;
}
// char_class | '.'
public static boolean predefined_class_expression(PsiBuilder builder, int level) {
if (!recursion_guard_(builder, level, "predefined_class_expression")) return false;
if (!nextTokenIsSmart(builder, FLEX_DOT, FLEX_CHAR_CLASS)) return false;
boolean result;
Marker marker = enter_section_(builder, level, _NONE_, FLEX_PREDEFINED_CLASS_EXPRESSION, "<expression>");
result = consumeTokenSmart(builder, FLEX_CHAR_CLASS);
if (!result) result = consumeTokenSmart(builder, FLEX_DOT);
exit_section_(builder, level, marker, result, false, null);
return result;
}
// '{' macro_reference '}'
public static boolean macro_ref_expression(PsiBuilder builder, int level) {
if (!recursion_guard_(builder, level, "macro_ref_expression")) return false;
if (!nextTokenIsSmart(builder, FLEX_BRACE1)) return false;
boolean result;
Marker marker = enter_section_(builder, level, _NONE_, FLEX_MACRO_REF_EXPRESSION, "<expression>");
result = consumeTokenSmart(builder, FLEX_BRACE1);
result = result && macro_reference(builder, level + 1);
result = result && consumeToken(builder, FLEX_BRACE2);
exit_section_(builder, level, marker, result, false, null);
return result;
}
// string | id | char_or_esc | number
public static boolean literal_expression(PsiBuilder builder, int level) {
if (!recursion_guard_(builder, level, "literal_expression")) return false;
boolean result;
Marker marker = enter_section_(builder, level, _NONE_, FLEX_LITERAL_EXPRESSION, "<expression>");
result = consumeTokenSmart(builder, FLEX_STRING);
if (!result) result = consumeTokenSmart(builder, FLEX_ID);
if (!result) result = char_or_esc(builder, level + 1);
if (!result) result = consumeTokenSmart(builder, FLEX_NUMBER);
exit_section_(builder, level, marker, result, false, null);
return result;
}
final static Parser declaration_recover_parser_ = new Parser() {
public boolean parse(PsiBuilder builder, int level) {
return declaration_recover(builder, level + 1);
}
};
final static Parser macro_definition_recover_parser_ = new Parser() {
public boolean parse(PsiBuilder builder, int level) {
return macro_definition_recover(builder, level + 1);
}
};
final static Parser opt_code1_parser_ = new Parser() {
public boolean parse(PsiBuilder builder, int level) {
return consumeToken(builder, FLEX_OPT_CODE1);
}
};
final static Parser opt_code2_parser_ = new Parser() {
public boolean parse(PsiBuilder builder, int level) {
return consumeToken(builder, FLEX_OPT_CODE2);
}
};
final static Parser opt_eof1_parser_ = new Parser() {
public boolean parse(PsiBuilder builder, int level) {
return consumeToken(builder, FLEX_OPT_EOF1);
}
};
final static Parser opt_eof2_parser_ = new Parser() {
public boolean parse(PsiBuilder builder, int level) {
return consumeToken(builder, FLEX_OPT_EOF2);
}
};
final static Parser opt_eofthrow1_parser_ = new Parser() {
public boolean parse(PsiBuilder builder, int level) {
return consumeToken(builder, FLEX_OPT_EOFTHROW1);
}
};
final static Parser opt_eofthrow2_parser_ = new Parser() {
public boolean parse(PsiBuilder builder, int level) {
return consumeToken(builder, FLEX_OPT_EOFTHROW2);
}
};
final static Parser opt_eofval1_parser_ = new Parser() {
public boolean parse(PsiBuilder builder, int level) {
return consumeToken(builder, FLEX_OPT_EOFVAL1);
}
};
final static Parser opt_eofval2_parser_ = new Parser() {
public boolean parse(PsiBuilder builder, int level) {
return consumeToken(builder, FLEX_OPT_EOFVAL2);
}
};
final static Parser opt_init1_parser_ = new Parser() {
public boolean parse(PsiBuilder builder, int level) {
return consumeToken(builder, FLEX_OPT_INIT1);
}
};
final static Parser opt_init2_parser_ = new Parser() {
public boolean parse(PsiBuilder builder, int level) {
return consumeToken(builder, FLEX_OPT_INIT2);
}
};
final static Parser opt_initthrow1_parser_ = new Parser() {
public boolean parse(PsiBuilder builder, int level) {
return consumeToken(builder, FLEX_OPT_INITTHROW1);
}
};
final static Parser opt_initthrow2_parser_ = new Parser() {
public boolean parse(PsiBuilder builder, int level) {
return consumeToken(builder, FLEX_OPT_INITTHROW2);
}
};
final static Parser opt_yylexthrow1_parser_ = new Parser() {
public boolean parse(PsiBuilder builder, int level) {
return consumeToken(builder, FLEX_OPT_YYLEXTHROW1);
}
};
final static Parser opt_yylexthrow2_parser_ = new Parser() {
public boolean parse(PsiBuilder builder, int level) {
return consumeToken(builder, FLEX_OPT_YYLEXTHROW2);
}
};
final static Parser rule_recover_parser_ = new Parser() {
public boolean parse(PsiBuilder builder, int level) {
return rule_recover(builder, level + 1);
}
};
final static Parser section_recover_parser_ = new Parser() {
public boolean parse(PsiBuilder builder, int level) {
return section_recover(builder, level + 1);
}
};
final static Parser two_percs_parser_ = new Parser() {
public boolean parse(PsiBuilder builder, int level) {
return consumeToken(builder, FLEX_TWO_PERCS);
}
};
final static Parser user_value_0_0_parser_ = new Parser() {
public boolean parse(PsiBuilder builder, int level) {
return user_value_0_0(builder, level + 1);
}
};
}