// This is a generated file. Not intended for manual editing.
package org.intellij.erlang.parser;
import com.intellij.lang.PsiBuilder;
import com.intellij.lang.PsiBuilder.Marker;
import static org.intellij.erlang.ErlangTypes.*;
import static org.intellij.erlang.parser.ErlangParserUtil.*;
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 ErlangParser implements PsiParser, LightPsiParser {
public ASTNode parse(IElementType t, PsiBuilder b) {
parseLight(t, b);
return b.getTreeBuilt();
}
public void parseLight(IElementType t, PsiBuilder b) {
boolean r;
b = adapt_builder_(t, b, this, EXTENDS_SETS_);
Marker m = enter_section_(b, 0, _COLLAPSE_, null);
if (t == ERL_AFTER_CLAUSE_BODY) {
r = after_clause_body(b, 0);
}
else if (t == ERL_ARGUMENT_DEFINITION) {
r = argument_definition(b, 0);
}
else if (t == ERL_ARGUMENT_DEFINITION_LIST) {
r = argument_definition_list(b, 0);
}
else if (t == ERL_ARGUMENT_LIST) {
r = argument_list(b, 0);
}
else if (t == ERL_ATOM) {
r = atom(b, 0);
}
else if (t == ERL_ATOM_ATTRIBUTE) {
r = atom_attribute(b, 0);
}
else if (t == ERL_ATTR_VAL) {
r = attr_val(b, 0);
}
else if (t == ERL_ATTRIBUTE) {
r = attribute(b, 0);
}
else if (t == ERL_BEGIN_END_BODY) {
r = begin_end_body(b, 0);
}
else if (t == ERL_BEGIN_END_EXPRESSION) {
r = begin_end_expression(b, 0);
}
else if (t == ERL_BEHAVIOUR) {
r = behaviour(b, 0);
}
else if (t == ERL_BIN_BASE_TYPE) {
r = bin_base_type(b, 0);
}
else if (t == ERL_BIN_ELEMENT) {
r = bin_element(b, 0);
}
else if (t == ERL_BIN_UNIT_TYPE) {
r = bin_unit_type(b, 0);
}
else if (t == ERL_BINARY_EXPRESSION) {
r = binary_expression(b, 0);
}
else if (t == ERL_BINARY_TYPE) {
r = binary_type(b, 0);
}
else if (t == ERL_BIT_TYPE) {
r = bit_type(b, 0);
}
else if (t == ERL_CALLBACK_FUNCTION) {
r = callback_function(b, 0);
}
else if (t == ERL_CALLBACK_SPEC) {
r = callback_spec(b, 0);
}
else if (t == ERL_CASE_EXPRESSION) {
r = case_expression(b, 0);
}
else if (t == ERL_CLAUSE_BODY) {
r = clause_body(b, 0);
}
else if (t == ERL_CLAUSE_GUARD) {
r = clause_guard(b, 0);
}
else if (t == ERL_CONFIG_CALL_EXPRESSION) {
r = config_call_expression(b, 0);
}
else if (t == ERL_CONFIG_EXPRESSION) {
r = config_expression(b, 0);
}
else if (t == ERL_CR_CLAUSE) {
r = cr_clause(b, 0);
}
else if (t == ERL_EXPORT) {
r = export(b, 0);
}
else if (t == ERL_EXPORT_FUNCTION) {
r = export_function(b, 0);
}
else if (t == ERL_EXPORT_FUNCTIONS) {
r = export_functions(b, 0);
}
else if (t == ERL_EXPORT_TYPE) {
r = export_type(b, 0);
}
else if (t == ERL_EXPORT_TYPE_ATTRIBUTE) {
r = export_type_attribute(b, 0);
}
else if (t == ERL_EXPORT_TYPES) {
r = export_types(b, 0);
}
else if (t == ERL_EXPRESSION) {
r = expression(b, 0, -1);
}
else if (t == ERL_FIELD_TYPE) {
r = field_type(b, 0);
}
else if (t == ERL_FUN_CLAUSE) {
r = fun_clause(b, 0);
}
else if (t == ERL_FUN_CLAUSES) {
r = fun_clauses(b, 0);
}
else if (t == ERL_FUN_EXPRESSION) {
r = fun_expression(b, 0);
}
else if (t == ERL_FUN_TYPE) {
r = fun_type(b, 0);
}
else if (t == ERL_FUN_TYPE_100_T) {
r = fun_type_100_t(b, 0);
}
else if (t == ERL_FUN_TYPE_ARGUMENTS) {
r = fun_type_arguments(b, 0);
}
else if (t == ERL_FUN_TYPE_SIGS) {
r = fun_type_sigs(b, 0);
}
else if (t == ERL_FUN_TYPE_SIGS_BRACES) {
r = fun_type_sigs_braces(b, 0);
}
else if (t == ERL_FUNCTION) {
r = function(b, 0);
}
else if (t == ERL_FUNCTION_CLAUSE) {
r = function_clause(b, 0);
}
else if (t == ERL_FUNCTION_WITH_ARITY) {
r = function_with_arity(b, 0);
}
else if (t == ERL_FUNCTION_WITH_ARITY_VARIABLES) {
r = function_with_arity_variables(b, 0);
}
else if (t == ERL_GUARD) {
r = guard(b, 0);
}
else if (t == ERL_IF_CLAUSE) {
r = if_clause(b, 0);
}
else if (t == ERL_IF_EXPRESSION) {
r = if_expression(b, 0);
}
else if (t == ERL_IMPORT_DIRECTIVE) {
r = import_directive(b, 0);
}
else if (t == ERL_IMPORT_FUNCTION) {
r = import_function(b, 0);
}
else if (t == ERL_IMPORT_FUNCTIONS) {
r = import_functions(b, 0);
}
else if (t == ERL_INCLUDE) {
r = include(b, 0);
}
else if (t == ERL_INCLUDE_LIB) {
r = include_lib(b, 0);
}
else if (t == ERL_INCLUDE_STRING) {
r = include_string(b, 0);
}
else if (t == ERL_INT_TYPE) {
r = int_type(b, 0);
}
else if (t == ERL_LC_EXPRESSION) {
r = lc_expression(b, 0);
}
else if (t == ERL_LIST_COMPREHENSION) {
r = list_comprehension(b, 0);
}
else if (t == ERL_LIST_EXPRESSION) {
r = list_expression(b, 0);
}
else if (t == ERL_MACROS) {
r = macros(b, 0);
}
else if (t == ERL_MACROS_ARG) {
r = macros_arg(b, 0);
}
else if (t == ERL_MACROS_BODY) {
r = macros_body(b, 0);
}
else if (t == ERL_MACROS_CALL) {
r = macros_call(b, 0);
}
else if (t == ERL_MACROS_DEFINITION) {
r = macros_definition(b, 0);
}
else if (t == ERL_MACROS_NAME) {
r = macros_name(b, 0);
}
else if (t == ERL_MAP_ENTRY) {
r = map_entry(b, 0);
}
else if (t == ERL_MAP_ENTRY_TYPE) {
r = map_entry_type(b, 0);
}
else if (t == ERL_MAP_TUPLE) {
r = map_tuple(b, 0);
}
else if (t == ERL_MAP_TYPE) {
r = map_type(b, 0);
}
else if (t == ERL_MODEL_FIELD_LIST) {
r = model_field_list(b, 0);
}
else if (t == ERL_MODULE) {
r = module(b, 0);
}
else if (t == ERL_MODULE_REF) {
r = module_ref(b, 0);
}
else if (t == ERL_OPT_BIT_TYPE_LIST) {
r = opt_bit_type_list(b, 0);
}
else if (t == ERL_OPTIONAL_CALLBACK_FUNCTIONS) {
r = optional_callback_functions(b, 0);
}
else if (t == ERL_OPTIONAL_CALLBACKS) {
r = optional_callbacks(b, 0);
}
else if (t == ERL_Q_ATOM) {
r = q_atom(b, 0);
}
else if (t == ERL_Q_VAR) {
r = q_var(b, 0);
}
else if (t == ERL_RECEIVE_EXPRESSION) {
r = receive_expression(b, 0);
}
else if (t == ERL_RECORD_DEFINITION) {
r = record_definition(b, 0);
}
else if (t == ERL_RECORD_FIELD) {
r = record_field(b, 0);
}
else if (t == ERL_RECORD_LIKE_TYPE) {
r = record_like_type(b, 0);
}
else if (t == ERL_RECORD_REF) {
r = record_ref(b, 0);
}
else if (t == ERL_RECORD_TUPLE) {
r = record_tuple(b, 0);
}
else if (t == ERL_RULE) {
r = rule(b, 0);
}
else if (t == ERL_RULE_BODY) {
r = rule_body(b, 0);
}
else if (t == ERL_RULE_CLAUSE) {
r = rule_clause(b, 0);
}
else if (t == ERL_SPEC_FUN) {
r = spec_fun(b, 0);
}
else if (t == ERL_SPECIFICATION) {
r = specification(b, 0);
}
else if (t == ERL_STRING_LITERAL) {
r = string_literal(b, 0);
}
else if (t == ERL_TOP_TYPE) {
r = top_type(b, 0);
}
else if (t == ERL_TOP_TYPE_CLAUSE) {
r = top_type_clause(b, 0);
}
else if (t == ERL_TRY_CLAUSE) {
r = try_clause(b, 0);
}
else if (t == ERL_TRY_CLAUSES) {
r = try_clauses(b, 0);
}
else if (t == ERL_TRY_EXPRESSION) {
r = try_expression(b, 0);
}
else if (t == ERL_TRY_EXPRESSIONS_CLAUSE) {
r = try_expressions_clause(b, 0);
}
else if (t == ERL_TUPLE_EXPRESSION) {
r = tuple_expression(b, 0);
}
else if (t == ERL_TYPE) {
r = type(b, 0);
}
else if (t == ERL_TYPE_DEFINITION) {
r = type_definition(b, 0);
}
else if (t == ERL_TYPE_GUARD) {
r = type_guard(b, 0);
}
else if (t == ERL_TYPE_REF) {
r = type_ref(b, 0);
}
else if (t == ERL_TYPE_SIG) {
r = type_sig(b, 0);
}
else if (t == ERL_TYPE_SIG_GUARD) {
r = type_sig_guard(b, 0);
}
else if (t == ERL_TYPED_ATTR_VAL) {
r = typed_attr_val(b, 0);
}
else if (t == ERL_TYPED_EXPR) {
r = typed_expr(b, 0);
}
else if (t == ERL_TYPED_RECORD_FIELDS) {
r = typed_record_fields(b, 0);
}
else {
r = parse_root_(t, b, 0);
}
exit_section_(b, 0, m, t, r, true, TRUE_CONDITION);
}
protected boolean parse_root_(IElementType t, PsiBuilder b, int l) {
return forms(b, l + 1);
}
public static final TokenSet[] EXTENDS_SETS_ = new TokenSet[] {
create_token_set_(ERL_ADDITIVE_EXPRESSION, ERL_ANDALSO_EXPRESSION, ERL_ASSIGNMENT_EXPRESSION, ERL_COMP_OP_EXPRESSION,
ERL_LIST_OP_EXPRESSION, ERL_MULTIPLICATIVE_EXPRESSION, ERL_ORELSE_EXPRESSION, ERL_SEND_EXPRESSION),
create_token_set_(ERL_BINARY_TYPE, ERL_BIN_BASE_TYPE, ERL_BIN_UNIT_TYPE, ERL_BIT_TYPE,
ERL_EXPORT_TYPE, ERL_FIELD_TYPE, ERL_FUN_TYPE, ERL_FUN_TYPE_100_T,
ERL_INT_TYPE, ERL_MAP_ENTRY_TYPE, ERL_MAP_TYPE, ERL_RECORD_LIKE_TYPE,
ERL_TOP_TYPE, ERL_TYPE),
create_token_set_(ERL_ADDITIVE_EXPRESSION, ERL_ANDALSO_EXPRESSION, ERL_ANONYMOUS_CALL_EXPRESSION, ERL_ASSIGNMENT_EXPRESSION,
ERL_ATOM_WITH_ARITY_EXPRESSION, ERL_BEGIN_END_EXPRESSION, ERL_BINARY_EXPRESSION, ERL_CASE_EXPRESSION,
ERL_CATCH_EXPRESSION, ERL_COLON_QUALIFIED_EXPRESSION, ERL_COMP_OP_EXPRESSION, ERL_CONFIG_CALL_EXPRESSION,
ERL_CONFIG_EXPRESSION, ERL_EXPRESSION, ERL_FUNCTION_CALL_EXPRESSION, ERL_FUN_EXPRESSION,
ERL_GENERIC_FUNCTION_CALL_EXPRESSION, ERL_GLOBAL_FUNCTION_CALL_EXPRESSION, ERL_IF_EXPRESSION, ERL_LC_EXPRESSION,
ERL_LIST_COMPREHENSION, ERL_LIST_EXPRESSION, ERL_LIST_OP_EXPRESSION, ERL_MAP_EXPRESSION,
ERL_MAX_EXPRESSION, ERL_MULTIPLICATIVE_EXPRESSION, ERL_ORELSE_EXPRESSION, ERL_PARENTHESIZED_EXPRESSION,
ERL_PREFIX_EXPRESSION, ERL_QUALIFIED_EXPRESSION, ERL_RECEIVE_EXPRESSION, ERL_RECORD_EXPRESSION,
ERL_SEND_EXPRESSION, ERL_STRING_LITERAL, ERL_TRY_EXPRESSION, ERL_TUPLE_EXPRESSION),
};
/* ********************************************************** */
// '+' |'-' | bor | bxor | bsl | bsr | or | xor
static boolean add_op(PsiBuilder b, int l) {
if (!recursion_guard_(b, l, "add_op")) return false;
boolean r;
Marker m = enter_section_(b);
r = consumeToken(b, ERL_OP_PLUS);
if (!r) r = consumeToken(b, ERL_OP_MINUS);
if (!r) r = consumeToken(b, ERL_BOR);
if (!r) r = consumeToken(b, ERL_BXOR);
if (!r) r = consumeToken(b, ERL_BSL);
if (!r) r = consumeToken(b, ERL_BSR);
if (!r) r = consumeToken(b, ERL_OR);
if (!r) r = consumeToken(b, ERL_XOR);
exit_section_(b, m, null, r);
return r;
}
/* ********************************************************** */
// after after_clause_body
static boolean after_clause(PsiBuilder b, int l) {
if (!recursion_guard_(b, l, "after_clause")) return false;
if (!nextTokenIs(b, ERL_AFTER)) return false;
boolean r, p;
Marker m = enter_section_(b, l, _NONE_);
r = consumeToken(b, ERL_AFTER);
p = r; // pin = 1
r = r && after_clause_body(b, l + 1);
exit_section_(b, l, m, r, p, null);
return r || p;
}
/* ********************************************************** */
// <<guarded expression>> clause_body
public static boolean after_clause_body(PsiBuilder b, int l) {
if (!recursion_guard_(b, l, "after_clause_body")) return false;
boolean r, p;
Marker m = enter_section_(b, l, _NONE_, ERL_AFTER_CLAUSE_BODY, "<after clause body>");
r = guarded(b, l + 1, expression_parser_);
p = r; // pin = 1
r = r && clause_body(b, l + 1);
exit_section_(b, l, m, r, p, null);
return r || p;
}
/* ********************************************************** */
// q_atom
public static boolean app_atom(PsiBuilder b, int l) {
if (!recursion_guard_(b, l, "app_atom")) return false;
boolean r;
Marker m = enter_section_(b, l, _NONE_, ERL_CONFIG_EXPRESSION, "<app atom>");
r = q_atom(b, l + 1);
exit_section_(b, l, m, r, false, null);
return r;
}
/* ********************************************************** */
// &<<p>> app_atom
static boolean app_atom_named(PsiBuilder b, int l, final Parser _p) {
if (!recursion_guard_(b, l, "app_atom_named")) return false;
boolean r, p;
Marker m = enter_section_(b, l, _NONE_);
r = app_atom_named_0(b, l + 1, _p);
p = r; // pin = 1
r = r && app_atom(b, l + 1);
exit_section_(b, l, m, r, p, null);
return r || p;
}
// &<<p>>
private static boolean app_atom_named_0(PsiBuilder b, int l, final Parser _p) {
if (!recursion_guard_(b, l, "app_atom_named_0")) return false;
boolean r;
Marker m = enter_section_(b, l, _AND_);
r = _p.parse(b, l);
exit_section_(b, l, m, r, false, null);
return r;
}
/* ********************************************************** */
// '{' app_atom ',' config_expression '}'
public static boolean app_env_expression(PsiBuilder b, int l) {
if (!recursion_guard_(b, l, "app_env_expression")) return false;
if (!nextTokenIs(b, ERL_CURLY_LEFT)) return false;
boolean r, p;
Marker m = enter_section_(b, l, _NONE_, ERL_TUPLE_EXPRESSION, "<expression>");
r = consumeToken(b, ERL_CURLY_LEFT);
p = r; // pin = 1
r = r && report_error_(b, app_atom(b, l + 1));
r = p && report_error_(b, consumeToken(b, ERL_COMMA)) && r;
r = p && report_error_(b, config_expression(b, l + 1)) && r;
r = p && consumeToken(b, ERL_CURLY_RIGHT) && r;
exit_section_(b, l, m, r, p, null);
return r || p;
}
/* ********************************************************** */
// '{' <<app_atom_named ('application')>> ',' app_atom ',' <<list_of app_parameter>> '}'
public static boolean app_expression(PsiBuilder b, int l) {
if (!recursion_guard_(b, l, "app_expression")) return false;
if (!nextTokenIs(b, ERL_CURLY_LEFT)) return false;
boolean r, p;
Marker m = enter_section_(b, l, _NONE_, ERL_TUPLE_EXPRESSION, "<expression>");
r = consumeToken(b, ERL_CURLY_LEFT);
p = r; // pin = 1
r = r && report_error_(b, app_atom_named(b, l + 1, app_expression_1_0_parser_));
r = p && report_error_(b, consumeToken(b, ERL_COMMA)) && r;
r = p && report_error_(b, app_atom(b, l + 1)) && r;
r = p && report_error_(b, consumeToken(b, ERL_COMMA)) && r;
r = p && report_error_(b, list_of(b, l + 1, app_parameter_parser_)) && r;
r = p && consumeToken(b, ERL_CURLY_RIGHT) && r;
exit_section_(b, l, m, r, p, null);
return r || p;
}
// ('application')
private static boolean app_expression_1_0(PsiBuilder b, int l) {
if (!recursion_guard_(b, l, "app_expression_1_0")) return false;
boolean r;
Marker m = enter_section_(b);
r = consumeToken(b, "application");
exit_section_(b, m, null, r);
return r;
}
/* ********************************************************** */
// &integer atomic
public static boolean app_integer(PsiBuilder b, int l) {
if (!recursion_guard_(b, l, "app_integer")) return false;
if (!nextTokenIs(b, ERL_INTEGER)) return false;
boolean r, p;
Marker m = enter_section_(b, l, _COLLAPSE_, ERL_CONFIG_EXPRESSION, null);
r = app_integer_0(b, l + 1);
p = r; // pin = 1
r = r && atomic(b, l + 1);
exit_section_(b, l, m, r, p, null);
return r || p;
}
// &integer
private static boolean app_integer_0(PsiBuilder b, int l) {
if (!recursion_guard_(b, l, "app_integer_0")) return false;
boolean r;
Marker m = enter_section_(b, l, _AND_);
r = consumeToken(b, ERL_INTEGER);
exit_section_(b, l, m, r, false, null);
return r;
}
/* ********************************************************** */
// '{' app_module_expression ',' config_expression '}'
public static boolean app_mod(PsiBuilder b, int l) {
if (!recursion_guard_(b, l, "app_mod")) return false;
if (!nextTokenIs(b, ERL_CURLY_LEFT)) return false;
boolean r, p;
Marker m = enter_section_(b, l, _NONE_, ERL_TUPLE_EXPRESSION, null);
r = consumeToken(b, ERL_CURLY_LEFT);
p = r; // pin = 1
r = r && report_error_(b, app_module_expression(b, l + 1));
r = p && report_error_(b, consumeToken(b, ERL_COMMA)) && r;
r = p && report_error_(b, config_expression(b, l + 1)) && r;
r = p && consumeToken(b, ERL_CURLY_RIGHT) && r;
exit_section_(b, l, m, r, p, null);
return r || p;
}
/* ********************************************************** */
// module_ref
public static boolean app_module_expression(PsiBuilder b, int l) {
if (!recursion_guard_(b, l, "app_module_expression")) return false;
boolean r;
Marker m = enter_section_(b, l, _NONE_, ERL_CONFIG_EXPRESSION, "<expression>");
r = module_ref(b, l + 1);
exit_section_(b, l, m, r, false, null);
return r;
}
/* ********************************************************** */
// '{'
// (<<app_atom_named ('description')>> ',' string_literal
// | <<app_atom_named ('id')>> ',' string_literal
// | <<app_atom_named ('vsn')>> ',' string_literal
// | <<app_atom_named ('modules')>> ',' <<list_of app_module_expression>>
// | <<app_atom_named ('maxP')>> ',' app_integer
// | <<app_atom_named ('maxT')>> ',' app_integer
// | <<app_atom_named ('registered')>> ',' <<list_of app_module_expression>>
// | <<app_atom_named ('included_applications')>> ',' <<list_of app_atom>>
// | <<app_atom_named ('applications')>> ',' <<list_of app_atom>>
// | <<app_atom_named ('env')>> ',' <<list_of app_env_expression>>
// | <<app_atom_named ('mod')>> ',' app_mod
// | <<app_atom_named ('start_phases')>> ',' config_expression
// | <<app_atom_named ('runtime_dependencies')>> ',' app_runtime_deps
// | config_exprs)
// '}'
public static boolean app_parameter(PsiBuilder b, int l) {
if (!recursion_guard_(b, l, "app_parameter")) return false;
if (!nextTokenIs(b, ERL_CURLY_LEFT)) return false;
boolean r, p;
Marker m = enter_section_(b, l, _NONE_, ERL_TUPLE_EXPRESSION, null);
r = consumeToken(b, ERL_CURLY_LEFT);
p = r; // pin = 1
r = r && report_error_(b, app_parameter_1(b, l + 1));
r = p && consumeToken(b, ERL_CURLY_RIGHT) && r;
exit_section_(b, l, m, r, p, null);
return r || p;
}
// <<app_atom_named ('description')>> ',' string_literal
// | <<app_atom_named ('id')>> ',' string_literal
// | <<app_atom_named ('vsn')>> ',' string_literal
// | <<app_atom_named ('modules')>> ',' <<list_of app_module_expression>>
// | <<app_atom_named ('maxP')>> ',' app_integer
// | <<app_atom_named ('maxT')>> ',' app_integer
// | <<app_atom_named ('registered')>> ',' <<list_of app_module_expression>>
// | <<app_atom_named ('included_applications')>> ',' <<list_of app_atom>>
// | <<app_atom_named ('applications')>> ',' <<list_of app_atom>>
// | <<app_atom_named ('env')>> ',' <<list_of app_env_expression>>
// | <<app_atom_named ('mod')>> ',' app_mod
// | <<app_atom_named ('start_phases')>> ',' config_expression
// | <<app_atom_named ('runtime_dependencies')>> ',' app_runtime_deps
// | config_exprs
private static boolean app_parameter_1(PsiBuilder b, int l) {
if (!recursion_guard_(b, l, "app_parameter_1")) return false;
boolean r;
Marker m = enter_section_(b);
r = app_parameter_1_0(b, l + 1);
if (!r) r = app_parameter_1_1(b, l + 1);
if (!r) r = app_parameter_1_2(b, l + 1);
if (!r) r = app_parameter_1_3(b, l + 1);
if (!r) r = app_parameter_1_4(b, l + 1);
if (!r) r = app_parameter_1_5(b, l + 1);
if (!r) r = app_parameter_1_6(b, l + 1);
if (!r) r = app_parameter_1_7(b, l + 1);
if (!r) r = app_parameter_1_8(b, l + 1);
if (!r) r = app_parameter_1_9(b, l + 1);
if (!r) r = app_parameter_1_10(b, l + 1);
if (!r) r = app_parameter_1_11(b, l + 1);
if (!r) r = app_parameter_1_12(b, l + 1);
if (!r) r = config_exprs(b, l + 1);
exit_section_(b, m, null, r);
return r;
}
// <<app_atom_named ('description')>> ',' string_literal
private static boolean app_parameter_1_0(PsiBuilder b, int l) {
if (!recursion_guard_(b, l, "app_parameter_1_0")) return false;
boolean r, p;
Marker m = enter_section_(b, l, _NONE_);
r = app_atom_named(b, l + 1, app_parameter_1_0_0_0_parser_);
p = r; // pin = 1
r = r && report_error_(b, consumeToken(b, ERL_COMMA));
r = p && string_literal(b, l + 1) && r;
exit_section_(b, l, m, r, p, null);
return r || p;
}
// ('description')
private static boolean app_parameter_1_0_0_0(PsiBuilder b, int l) {
if (!recursion_guard_(b, l, "app_parameter_1_0_0_0")) return false;
boolean r;
Marker m = enter_section_(b);
r = consumeToken(b, "description");
exit_section_(b, m, null, r);
return r;
}
// <<app_atom_named ('id')>> ',' string_literal
private static boolean app_parameter_1_1(PsiBuilder b, int l) {
if (!recursion_guard_(b, l, "app_parameter_1_1")) return false;
boolean r, p;
Marker m = enter_section_(b, l, _NONE_);
r = app_atom_named(b, l + 1, app_parameter_1_1_0_0_parser_);
p = r; // pin = 1
r = r && report_error_(b, consumeToken(b, ERL_COMMA));
r = p && string_literal(b, l + 1) && r;
exit_section_(b, l, m, r, p, null);
return r || p;
}
// ('id')
private static boolean app_parameter_1_1_0_0(PsiBuilder b, int l) {
if (!recursion_guard_(b, l, "app_parameter_1_1_0_0")) return false;
boolean r;
Marker m = enter_section_(b);
r = consumeToken(b, "id");
exit_section_(b, m, null, r);
return r;
}
// <<app_atom_named ('vsn')>> ',' string_literal
private static boolean app_parameter_1_2(PsiBuilder b, int l) {
if (!recursion_guard_(b, l, "app_parameter_1_2")) return false;
boolean r, p;
Marker m = enter_section_(b, l, _NONE_);
r = app_atom_named(b, l + 1, app_parameter_1_2_0_0_parser_);
p = r; // pin = 1
r = r && report_error_(b, consumeToken(b, ERL_COMMA));
r = p && string_literal(b, l + 1) && r;
exit_section_(b, l, m, r, p, null);
return r || p;
}
// ('vsn')
private static boolean app_parameter_1_2_0_0(PsiBuilder b, int l) {
if (!recursion_guard_(b, l, "app_parameter_1_2_0_0")) return false;
boolean r;
Marker m = enter_section_(b);
r = consumeToken(b, "vsn");
exit_section_(b, m, null, r);
return r;
}
// <<app_atom_named ('modules')>> ',' <<list_of app_module_expression>>
private static boolean app_parameter_1_3(PsiBuilder b, int l) {
if (!recursion_guard_(b, l, "app_parameter_1_3")) return false;
boolean r, p;
Marker m = enter_section_(b, l, _NONE_);
r = app_atom_named(b, l + 1, app_parameter_1_3_0_0_parser_);
p = r; // pin = 1
r = r && report_error_(b, consumeToken(b, ERL_COMMA));
r = p && list_of(b, l + 1, app_module_expression_parser_) && r;
exit_section_(b, l, m, r, p, null);
return r || p;
}
// ('modules')
private static boolean app_parameter_1_3_0_0(PsiBuilder b, int l) {
if (!recursion_guard_(b, l, "app_parameter_1_3_0_0")) return false;
boolean r;
Marker m = enter_section_(b);
r = consumeToken(b, "modules");
exit_section_(b, m, null, r);
return r;
}
// <<app_atom_named ('maxP')>> ',' app_integer
private static boolean app_parameter_1_4(PsiBuilder b, int l) {
if (!recursion_guard_(b, l, "app_parameter_1_4")) return false;
boolean r, p;
Marker m = enter_section_(b, l, _NONE_);
r = app_atom_named(b, l + 1, app_parameter_1_4_0_0_parser_);
p = r; // pin = 1
r = r && report_error_(b, consumeToken(b, ERL_COMMA));
r = p && app_integer(b, l + 1) && r;
exit_section_(b, l, m, r, p, null);
return r || p;
}
// ('maxP')
private static boolean app_parameter_1_4_0_0(PsiBuilder b, int l) {
if (!recursion_guard_(b, l, "app_parameter_1_4_0_0")) return false;
boolean r;
Marker m = enter_section_(b);
r = consumeToken(b, "maxP");
exit_section_(b, m, null, r);
return r;
}
// <<app_atom_named ('maxT')>> ',' app_integer
private static boolean app_parameter_1_5(PsiBuilder b, int l) {
if (!recursion_guard_(b, l, "app_parameter_1_5")) return false;
boolean r, p;
Marker m = enter_section_(b, l, _NONE_);
r = app_atom_named(b, l + 1, app_parameter_1_5_0_0_parser_);
p = r; // pin = 1
r = r && report_error_(b, consumeToken(b, ERL_COMMA));
r = p && app_integer(b, l + 1) && r;
exit_section_(b, l, m, r, p, null);
return r || p;
}
// ('maxT')
private static boolean app_parameter_1_5_0_0(PsiBuilder b, int l) {
if (!recursion_guard_(b, l, "app_parameter_1_5_0_0")) return false;
boolean r;
Marker m = enter_section_(b);
r = consumeToken(b, "maxT");
exit_section_(b, m, null, r);
return r;
}
// <<app_atom_named ('registered')>> ',' <<list_of app_module_expression>>
private static boolean app_parameter_1_6(PsiBuilder b, int l) {
if (!recursion_guard_(b, l, "app_parameter_1_6")) return false;
boolean r, p;
Marker m = enter_section_(b, l, _NONE_);
r = app_atom_named(b, l + 1, app_parameter_1_6_0_0_parser_);
p = r; // pin = 1
r = r && report_error_(b, consumeToken(b, ERL_COMMA));
r = p && list_of(b, l + 1, app_module_expression_parser_) && r;
exit_section_(b, l, m, r, p, null);
return r || p;
}
// ('registered')
private static boolean app_parameter_1_6_0_0(PsiBuilder b, int l) {
if (!recursion_guard_(b, l, "app_parameter_1_6_0_0")) return false;
boolean r;
Marker m = enter_section_(b);
r = consumeToken(b, "registered");
exit_section_(b, m, null, r);
return r;
}
// <<app_atom_named ('included_applications')>> ',' <<list_of app_atom>>
private static boolean app_parameter_1_7(PsiBuilder b, int l) {
if (!recursion_guard_(b, l, "app_parameter_1_7")) return false;
boolean r, p;
Marker m = enter_section_(b, l, _NONE_);
r = app_atom_named(b, l + 1, app_parameter_1_7_0_0_parser_);
p = r; // pin = 1
r = r && report_error_(b, consumeToken(b, ERL_COMMA));
r = p && list_of(b, l + 1, app_atom_parser_) && r;
exit_section_(b, l, m, r, p, null);
return r || p;
}
// ('included_applications')
private static boolean app_parameter_1_7_0_0(PsiBuilder b, int l) {
if (!recursion_guard_(b, l, "app_parameter_1_7_0_0")) return false;
boolean r;
Marker m = enter_section_(b);
r = consumeToken(b, "included_applications");
exit_section_(b, m, null, r);
return r;
}
// <<app_atom_named ('applications')>> ',' <<list_of app_atom>>
private static boolean app_parameter_1_8(PsiBuilder b, int l) {
if (!recursion_guard_(b, l, "app_parameter_1_8")) return false;
boolean r, p;
Marker m = enter_section_(b, l, _NONE_);
r = app_atom_named(b, l + 1, app_parameter_1_8_0_0_parser_);
p = r; // pin = 1
r = r && report_error_(b, consumeToken(b, ERL_COMMA));
r = p && list_of(b, l + 1, app_atom_parser_) && r;
exit_section_(b, l, m, r, p, null);
return r || p;
}
// ('applications')
private static boolean app_parameter_1_8_0_0(PsiBuilder b, int l) {
if (!recursion_guard_(b, l, "app_parameter_1_8_0_0")) return false;
boolean r;
Marker m = enter_section_(b);
r = consumeToken(b, "applications");
exit_section_(b, m, null, r);
return r;
}
// <<app_atom_named ('env')>> ',' <<list_of app_env_expression>>
private static boolean app_parameter_1_9(PsiBuilder b, int l) {
if (!recursion_guard_(b, l, "app_parameter_1_9")) return false;
boolean r, p;
Marker m = enter_section_(b, l, _NONE_);
r = app_atom_named(b, l + 1, app_parameter_1_9_0_0_parser_);
p = r; // pin = 1
r = r && report_error_(b, consumeToken(b, ERL_COMMA));
r = p && list_of(b, l + 1, app_env_expression_parser_) && r;
exit_section_(b, l, m, r, p, null);
return r || p;
}
// ('env')
private static boolean app_parameter_1_9_0_0(PsiBuilder b, int l) {
if (!recursion_guard_(b, l, "app_parameter_1_9_0_0")) return false;
boolean r;
Marker m = enter_section_(b);
r = consumeToken(b, "env");
exit_section_(b, m, null, r);
return r;
}
// <<app_atom_named ('mod')>> ',' app_mod
private static boolean app_parameter_1_10(PsiBuilder b, int l) {
if (!recursion_guard_(b, l, "app_parameter_1_10")) return false;
boolean r, p;
Marker m = enter_section_(b, l, _NONE_);
r = app_atom_named(b, l + 1, app_parameter_1_10_0_0_parser_);
p = r; // pin = 1
r = r && report_error_(b, consumeToken(b, ERL_COMMA));
r = p && app_mod(b, l + 1) && r;
exit_section_(b, l, m, r, p, null);
return r || p;
}
// ('mod')
private static boolean app_parameter_1_10_0_0(PsiBuilder b, int l) {
if (!recursion_guard_(b, l, "app_parameter_1_10_0_0")) return false;
boolean r;
Marker m = enter_section_(b);
r = consumeToken(b, "mod");
exit_section_(b, m, null, r);
return r;
}
// <<app_atom_named ('start_phases')>> ',' config_expression
private static boolean app_parameter_1_11(PsiBuilder b, int l) {
if (!recursion_guard_(b, l, "app_parameter_1_11")) return false;
boolean r, p;
Marker m = enter_section_(b, l, _NONE_);
r = app_atom_named(b, l + 1, app_parameter_1_11_0_0_parser_);
p = r; // pin = 1
r = r && report_error_(b, consumeToken(b, ERL_COMMA));
r = p && config_expression(b, l + 1) && r;
exit_section_(b, l, m, r, p, null);
return r || p;
}
// ('start_phases')
private static boolean app_parameter_1_11_0_0(PsiBuilder b, int l) {
if (!recursion_guard_(b, l, "app_parameter_1_11_0_0")) return false;
boolean r;
Marker m = enter_section_(b);
r = consumeToken(b, "start_phases");
exit_section_(b, m, null, r);
return r;
}
// <<app_atom_named ('runtime_dependencies')>> ',' app_runtime_deps
private static boolean app_parameter_1_12(PsiBuilder b, int l) {
if (!recursion_guard_(b, l, "app_parameter_1_12")) return false;
boolean r, p;
Marker m = enter_section_(b, l, _NONE_);
r = app_atom_named(b, l + 1, app_parameter_1_12_0_0_parser_);
p = r; // pin = 1
r = r && report_error_(b, consumeToken(b, ERL_COMMA));
r = p && app_runtime_deps(b, l + 1) && r;
exit_section_(b, l, m, r, p, null);
return r || p;
}
// ('runtime_dependencies')
private static boolean app_parameter_1_12_0_0(PsiBuilder b, int l) {
if (!recursion_guard_(b, l, "app_parameter_1_12_0_0")) return false;
boolean r;
Marker m = enter_section_(b);
r = consumeToken(b, "runtime_dependencies");
exit_section_(b, m, null, r);
return r;
}
/* ********************************************************** */
// '[' string_literal? ']'
public static boolean app_runtime_deps(PsiBuilder b, int l) {
if (!recursion_guard_(b, l, "app_runtime_deps")) return false;
if (!nextTokenIs(b, ERL_BRACKET_LEFT)) return false;
boolean r, p;
Marker m = enter_section_(b, l, _NONE_, ERL_LIST_EXPRESSION, null);
r = consumeToken(b, ERL_BRACKET_LEFT);
p = r; // pin = 1
r = r && report_error_(b, app_runtime_deps_1(b, l + 1));
r = p && consumeToken(b, ERL_BRACKET_RIGHT) && r;
exit_section_(b, l, m, r, p, null);
return r || p;
}
// string_literal?
private static boolean app_runtime_deps_1(PsiBuilder b, int l) {
if (!recursion_guard_(b, l, "app_runtime_deps_1")) return false;
string_literal(b, l + 1);
return true;
}
/* ********************************************************** */
// is_app app_expression period
static boolean application_file_expression(PsiBuilder b, int l) {
if (!recursion_guard_(b, l, "application_file_expression")) return false;
boolean r, p;
Marker m = enter_section_(b, l, _NONE_, null, "<expression>");
r = is_app(b, l + 1);
r = r && app_expression(b, l + 1);
p = r; // pin = 2
r = r && period(b, l + 1);
exit_section_(b, l, m, r, p, form_recover_parser_);
return r || p;
}
/* ********************************************************** */
// expression
public static boolean argument_definition(PsiBuilder b, int l) {
if (!recursion_guard_(b, l, "argument_definition")) return false;
boolean r;
Marker m = enter_section_(b, l, _NONE_, ERL_ARGUMENT_DEFINITION, "<argument definition>");
r = expression(b, l + 1, -1);
exit_section_(b, l, m, r, false, null);
return r;
}
/* ********************************************************** */
// '(' argument_definition? (',' argument_definition)* ')'
public static boolean argument_definition_list(PsiBuilder b, int l) {
if (!recursion_guard_(b, l, "argument_definition_list")) return false;
if (!nextTokenIs(b, ERL_PAR_LEFT)) return false;
boolean r, p;
Marker m = enter_section_(b, l, _NONE_, ERL_ARGUMENT_DEFINITION_LIST, null);
r = consumeToken(b, ERL_PAR_LEFT);
p = r; // pin = 1
r = r && report_error_(b, argument_definition_list_1(b, l + 1));
r = p && report_error_(b, argument_definition_list_2(b, l + 1)) && r;
r = p && consumeToken(b, ERL_PAR_RIGHT) && r;
exit_section_(b, l, m, r, p, null);
return r || p;
}
// argument_definition?
private static boolean argument_definition_list_1(PsiBuilder b, int l) {
if (!recursion_guard_(b, l, "argument_definition_list_1")) return false;
argument_definition(b, l + 1);
return true;
}
// (',' argument_definition)*
private static boolean argument_definition_list_2(PsiBuilder b, int l) {
if (!recursion_guard_(b, l, "argument_definition_list_2")) return false;
int c = current_position_(b);
while (true) {
if (!argument_definition_list_2_0(b, l + 1)) break;
if (!empty_element_parsed_guard_(b, "argument_definition_list_2", c)) break;
c = current_position_(b);
}
return true;
}
// ',' argument_definition
private static boolean argument_definition_list_2_0(PsiBuilder b, int l) {
if (!recursion_guard_(b, l, "argument_definition_list_2_0")) return false;
boolean r, p;
Marker m = enter_section_(b, l, _NONE_);
r = consumeToken(b, ERL_COMMA);
p = r; // pin = 1
r = r && argument_definition(b, l + 1);
exit_section_(b, l, m, r, p, null);
return r || p;
}
/* ********************************************************** */
// '(' call_exprs? ')'
public static boolean argument_list(PsiBuilder b, int l) {
if (!recursion_guard_(b, l, "argument_list")) return false;
if (!nextTokenIs(b, ERL_PAR_LEFT)) return false;
boolean r, p;
Marker m = enter_section_(b, l, _NONE_, ERL_ARGUMENT_LIST, null);
r = consumeToken(b, ERL_PAR_LEFT);
p = r; // pin = 1
r = r && report_error_(b, argument_list_1(b, l + 1));
r = p && consumeToken(b, ERL_PAR_RIGHT) && r;
exit_section_(b, l, m, r, p, null);
return r || p;
}
// call_exprs?
private static boolean argument_list_1(PsiBuilder b, int l) {
if (!recursion_guard_(b, l, "argument_list_1")) return false;
call_exprs(b, l + 1);
return true;
}
/* ********************************************************** */
// atom_name | (single_quote atom_name single_quote)
public static boolean atom(PsiBuilder b, int l) {
if (!recursion_guard_(b, l, "atom")) return false;
if (!nextTokenIs(b, "<atom>", ERL_ATOM_NAME, ERL_SINGLE_QUOTE)) return false;
boolean r;
Marker m = enter_section_(b, l, _NONE_, ERL_ATOM, "<atom>");
r = consumeToken(b, ERL_ATOM_NAME);
if (!r) r = atom_1(b, l + 1);
exit_section_(b, l, m, r, false, null);
return r;
}
// single_quote atom_name single_quote
private static boolean atom_1(PsiBuilder b, int l) {
if (!recursion_guard_(b, l, "atom_1")) return false;
boolean r, p;
Marker m = enter_section_(b, l, _NONE_);
r = consumeTokens(b, 1, ERL_SINGLE_QUOTE, ERL_ATOM_NAME, ERL_SINGLE_QUOTE);
p = r; // pin = 1
exit_section_(b, l, m, r, p, null);
return r || p;
}
/* ********************************************************** */
// atom_name ['(' typed_attr_val ')' | typed_attr_val | attr_val]
public static boolean atom_attribute(PsiBuilder b, int l) {
if (!recursion_guard_(b, l, "atom_attribute")) return false;
if (!nextTokenIs(b, ERL_ATOM_NAME)) return false;
boolean r;
Marker m = enter_section_(b, l, _NONE_, ERL_ATOM_ATTRIBUTE, "<attribute>");
r = consumeToken(b, ERL_ATOM_NAME);
r = r && atom_attribute_1(b, l + 1);
exit_section_(b, l, m, r, false, null);
return r;
}
// ['(' typed_attr_val ')' | typed_attr_val | attr_val]
private static boolean atom_attribute_1(PsiBuilder b, int l) {
if (!recursion_guard_(b, l, "atom_attribute_1")) return false;
atom_attribute_1_0(b, l + 1);
return true;
}
// '(' typed_attr_val ')' | typed_attr_val | attr_val
private static boolean atom_attribute_1_0(PsiBuilder b, int l) {
if (!recursion_guard_(b, l, "atom_attribute_1_0")) return false;
boolean r;
Marker m = enter_section_(b);
r = atom_attribute_1_0_0(b, l + 1);
if (!r) r = typed_attr_val(b, l + 1);
if (!r) r = attr_val(b, l + 1);
exit_section_(b, m, null, r);
return r;
}
// '(' typed_attr_val ')'
private static boolean atom_attribute_1_0_0(PsiBuilder b, int l) {
if (!recursion_guard_(b, l, "atom_attribute_1_0_0")) return false;
boolean r;
Marker m = enter_section_(b);
r = consumeToken(b, ERL_PAR_LEFT);
r = r && typed_attr_val(b, l + 1);
r = r && consumeToken(b, ERL_PAR_RIGHT);
exit_section_(b, m, null, r);
return r;
}
/* ********************************************************** */
// q_atom !'(' | integer | (string_literal | macros)+ | float | char
static boolean atomic(PsiBuilder b, int l) {
if (!recursion_guard_(b, l, "atomic")) return false;
boolean r;
Marker m = enter_section_(b);
r = atomic_0(b, l + 1);
if (!r) r = consumeToken(b, ERL_INTEGER);
if (!r) r = atomic_2(b, l + 1);
if (!r) r = consumeToken(b, ERL_FLOAT);
if (!r) r = consumeToken(b, ERL_CHAR);
exit_section_(b, m, null, r);
return r;
}
// q_atom !'('
private static boolean atomic_0(PsiBuilder b, int l) {
if (!recursion_guard_(b, l, "atomic_0")) return false;
boolean r;
Marker m = enter_section_(b);
r = q_atom(b, l + 1);
r = r && atomic_0_1(b, l + 1);
exit_section_(b, m, null, r);
return r;
}
// !'('
private static boolean atomic_0_1(PsiBuilder b, int l) {
if (!recursion_guard_(b, l, "atomic_0_1")) return false;
boolean r;
Marker m = enter_section_(b, l, _NOT_);
r = !consumeToken(b, ERL_PAR_LEFT);
exit_section_(b, l, m, r, false, null);
return r;
}
// (string_literal | macros)+
private static boolean atomic_2(PsiBuilder b, int l) {
if (!recursion_guard_(b, l, "atomic_2")) return false;
boolean r;
Marker m = enter_section_(b);
r = atomic_2_0(b, l + 1);
int c = current_position_(b);
while (r) {
if (!atomic_2_0(b, l + 1)) break;
if (!empty_element_parsed_guard_(b, "atomic_2", c)) break;
c = current_position_(b);
}
exit_section_(b, m, null, r);
return r;
}
// string_literal | macros
private static boolean atomic_2_0(PsiBuilder b, int l) {
if (!recursion_guard_(b, l, "atomic_2_0")) return false;
boolean r;
Marker m = enter_section_(b);
r = string_literal(b, l + 1);
if (!r) r = macros(b, l + 1);
exit_section_(b, m, null, r);
return r;
}
/* ********************************************************** */
// '(' exprs ')' | exprs
public static boolean attr_val(PsiBuilder b, int l) {
if (!recursion_guard_(b, l, "attr_val")) return false;
boolean r;
Marker m = enter_section_(b, l, _NONE_, ERL_ATTR_VAL, "<attribute value>");
r = attr_val_0(b, l + 1);
if (!r) r = exprs(b, l + 1);
exit_section_(b, l, m, r, false, null);
return r;
}
// '(' exprs ')'
private static boolean attr_val_0(PsiBuilder b, int l) {
if (!recursion_guard_(b, l, "attr_val_0")) return false;
boolean r;
Marker m = enter_section_(b);
r = consumeToken(b, ERL_PAR_LEFT);
r = r && exprs(b, l + 1);
r = r && consumeToken(b, ERL_PAR_RIGHT);
exit_section_(b, m, null, r);
return r;
}
/* ********************************************************** */
// '-' (
// module
// | export
// | export_type_attribute
// | import_directive
// | specification
// | callback_spec
// | optional_callbacks
// | behaviour
// | on_load
// | ifdef_ifndef_undef_attribute
// | else_atom_attribute <<enterMode "ELSE">>
// | <<withOn "ATOM_ATTRIBUTE" atom_attribute>>
// )
public static boolean attribute(PsiBuilder b, int l) {
if (!recursion_guard_(b, l, "attribute")) return false;
if (!nextTokenIs(b, ERL_OP_MINUS)) return false;
boolean r, p;
Marker m = enter_section_(b, l, _NONE_, ERL_ATTRIBUTE, "<attribute>");
r = consumeToken(b, ERL_OP_MINUS);
p = r; // pin = 1
r = r && attribute_1(b, l + 1);
exit_section_(b, l, m, r, p, null);
return r || p;
}
// module
// | export
// | export_type_attribute
// | import_directive
// | specification
// | callback_spec
// | optional_callbacks
// | behaviour
// | on_load
// | ifdef_ifndef_undef_attribute
// | else_atom_attribute <<enterMode "ELSE">>
// | <<withOn "ATOM_ATTRIBUTE" atom_attribute>>
private static boolean attribute_1(PsiBuilder b, int l) {
if (!recursion_guard_(b, l, "attribute_1")) return false;
boolean r;
Marker m = enter_section_(b);
r = module(b, l + 1);
if (!r) r = export(b, l + 1);
if (!r) r = export_type_attribute(b, l + 1);
if (!r) r = import_directive(b, l + 1);
if (!r) r = specification(b, l + 1);
if (!r) r = callback_spec(b, l + 1);
if (!r) r = optional_callbacks(b, l + 1);
if (!r) r = behaviour(b, l + 1);
if (!r) r = on_load(b, l + 1);
if (!r) r = ifdef_ifndef_undef_attribute(b, l + 1);
if (!r) r = attribute_1_10(b, l + 1);
if (!r) r = withOn(b, l + 1, "ATOM_ATTRIBUTE", atom_attribute_parser_);
exit_section_(b, m, null, r);
return r;
}
// else_atom_attribute <<enterMode "ELSE">>
private static boolean attribute_1_10(PsiBuilder b, int l) {
if (!recursion_guard_(b, l, "attribute_1_10")) return false;
boolean r;
Marker m = enter_section_(b);
r = else_atom_attribute(b, l + 1);
r = r && enterMode(b, l + 1, "ELSE");
exit_section_(b, m, null, r);
return r;
}
/* ********************************************************** */
// !'(' <<p1>> | '(' <<p1>> ')'
static boolean attribute_tail(PsiBuilder b, int l, final Parser _p1) {
if (!recursion_guard_(b, l, "attribute_tail")) return false;
boolean r;
Marker m = enter_section_(b);
r = attribute_tail_0(b, l + 1, _p1);
if (!r) r = attribute_tail_1(b, l + 1, _p1);
exit_section_(b, m, null, r);
return r;
}
// !'(' <<p1>>
private static boolean attribute_tail_0(PsiBuilder b, int l, final Parser _p1) {
if (!recursion_guard_(b, l, "attribute_tail_0")) return false;
boolean r;
Marker m = enter_section_(b);
r = attribute_tail_0_0(b, l + 1);
r = r && _p1.parse(b, l);
exit_section_(b, m, null, r);
return r;
}
// !'('
private static boolean attribute_tail_0_0(PsiBuilder b, int l) {
if (!recursion_guard_(b, l, "attribute_tail_0_0")) return false;
boolean r;
Marker m = enter_section_(b, l, _NOT_);
r = !consumeToken(b, ERL_PAR_LEFT);
exit_section_(b, l, m, r, false, null);
return r;
}
// '(' <<p1>> ')'
private static boolean attribute_tail_1(PsiBuilder b, int l, final Parser _p1) {
if (!recursion_guard_(b, l, "attribute_tail_1")) return false;
boolean r;
Marker m = enter_section_(b);
r = consumeToken(b, ERL_PAR_LEFT);
r = r && _p1.parse(b, l);
r = r && consumeToken(b, ERL_PAR_RIGHT);
exit_section_(b, m, null, r);
return r;
}
/* ********************************************************** */
// exprs
public static boolean begin_end_body(PsiBuilder b, int l) {
if (!recursion_guard_(b, l, "begin_end_body")) return false;
boolean r;
Marker m = enter_section_(b, l, _NONE_, ERL_BEGIN_END_BODY, "<expression>");
r = exprs(b, l + 1);
exit_section_(b, l, m, r, false, null);
return r;
}
/* ********************************************************** */
// begin begin_end_body end
public static boolean begin_end_expression(PsiBuilder b, int l) {
if (!recursion_guard_(b, l, "begin_end_expression")) return false;
if (!nextTokenIs(b, ERL_BEGIN)) return false;
boolean r, p;
Marker m = enter_section_(b, l, _NONE_, ERL_BEGIN_END_EXPRESSION, "<expression>");
r = consumeToken(b, ERL_BEGIN);
p = r; // pin = 1
r = r && report_error_(b, begin_end_body(b, l + 1));
r = p && consumeToken(b, ERL_END) && r;
exit_section_(b, l, m, r, p, null);
return r || p;
}
/* ********************************************************** */
// ('behaviour'|'behavior') '(' module_ref ')'
public static boolean behaviour(PsiBuilder b, int l) {
if (!recursion_guard_(b, l, "behaviour")) return false;
boolean r, p;
Marker m = enter_section_(b, l, _NONE_, ERL_BEHAVIOUR, "<behaviour>");
r = behaviour_0(b, l + 1);
p = r; // pin = 1
r = r && report_error_(b, consumeToken(b, ERL_PAR_LEFT));
r = p && report_error_(b, module_ref(b, l + 1)) && r;
r = p && consumeToken(b, ERL_PAR_RIGHT) && r;
exit_section_(b, l, m, r, p, null);
return r || p;
}
// 'behaviour'|'behavior'
private static boolean behaviour_0(PsiBuilder b, int l) {
if (!recursion_guard_(b, l, "behaviour_0")) return false;
boolean r;
Marker m = enter_section_(b);
r = consumeToken(b, "behaviour");
if (!r) r = consumeToken(b, "behavior");
exit_section_(b, m, null, r);
return r;
}
/* ********************************************************** */
// q_var ':' integer
public static boolean bin_base_type(PsiBuilder b, int l) {
if (!recursion_guard_(b, l, "bin_base_type")) return false;
if (!nextTokenIs(b, ERL_VAR)) return false;
boolean r;
Marker m = enter_section_(b, l, _NONE_, ERL_BIN_BASE_TYPE, "<type>");
r = q_var(b, l + 1);
r = r && consumeToken(b, ERL_COLON);
r = r && consumeToken(b, ERL_INTEGER);
exit_section_(b, l, m, r, false, null);
return r;
}
/* ********************************************************** */
// bin_base_type ',' bin_unit_type
static boolean bin_base_type_list(PsiBuilder b, int l) {
if (!recursion_guard_(b, l, "bin_base_type_list")) return false;
if (!nextTokenIs(b, ERL_VAR)) return false;
boolean r, p;
Marker m = enter_section_(b, l, _NONE_);
r = bin_base_type(b, l + 1);
p = r; // pin = 1
r = r && report_error_(b, consumeToken(b, ERL_COMMA));
r = p && bin_unit_type(b, l + 1) && r;
exit_section_(b, l, m, r, p, null);
return r || p;
}
/* ********************************************************** */
// generic_function_call_expression
// | prefix_op? bin_expression [':' bin_expression] opt_bit_type_list?
public static boolean bin_element(PsiBuilder b, int l) {
if (!recursion_guard_(b, l, "bin_element")) return false;
boolean r;
Marker m = enter_section_(b, l, _NONE_, ERL_BIN_ELEMENT, "<binary element>");
r = generic_function_call_expression(b, l + 1);
if (!r) r = bin_element_1(b, l + 1);
exit_section_(b, l, m, r, false, null);
return r;
}
// prefix_op? bin_expression [':' bin_expression] opt_bit_type_list?
private static boolean bin_element_1(PsiBuilder b, int l) {
if (!recursion_guard_(b, l, "bin_element_1")) return false;
boolean r;
Marker m = enter_section_(b);
r = bin_element_1_0(b, l + 1);
r = r && bin_expression(b, l + 1);
r = r && bin_element_1_2(b, l + 1);
r = r && bin_element_1_3(b, l + 1);
exit_section_(b, m, null, r);
return r;
}
// prefix_op?
private static boolean bin_element_1_0(PsiBuilder b, int l) {
if (!recursion_guard_(b, l, "bin_element_1_0")) return false;
prefix_op(b, l + 1);
return true;
}
// [':' bin_expression]
private static boolean bin_element_1_2(PsiBuilder b, int l) {
if (!recursion_guard_(b, l, "bin_element_1_2")) return false;
bin_element_1_2_0(b, l + 1);
return true;
}
// ':' bin_expression
private static boolean bin_element_1_2_0(PsiBuilder b, int l) {
if (!recursion_guard_(b, l, "bin_element_1_2_0")) return false;
boolean r;
Marker m = enter_section_(b);
r = consumeToken(b, ERL_COLON);
r = r && bin_expression(b, l + 1);
exit_section_(b, m, null, r);
return r;
}
// opt_bit_type_list?
private static boolean bin_element_1_3(PsiBuilder b, int l) {
if (!recursion_guard_(b, l, "bin_element_1_3")) return false;
opt_bit_type_list(b, l + 1);
return true;
}
/* ********************************************************** */
// bin_element (',' bin_element)*
static boolean bin_element_list(PsiBuilder b, int l) {
if (!recursion_guard_(b, l, "bin_element_list")) return false;
boolean r, p;
Marker m = enter_section_(b, l, _NONE_);
r = bin_element(b, l + 1);
p = r; // pin = 1
r = r && bin_element_list_1(b, l + 1);
exit_section_(b, l, m, r, p, null);
return r || p;
}
// (',' bin_element)*
private static boolean bin_element_list_1(PsiBuilder b, int l) {
if (!recursion_guard_(b, l, "bin_element_list_1")) return false;
int c = current_position_(b);
while (true) {
if (!bin_element_list_1_0(b, l + 1)) break;
if (!empty_element_parsed_guard_(b, "bin_element_list_1", c)) break;
c = current_position_(b);
}
return true;
}
// ',' bin_element
private static boolean bin_element_list_1_0(PsiBuilder b, int l) {
if (!recursion_guard_(b, l, "bin_element_list_1_0")) return false;
boolean r, p;
Marker m = enter_section_(b, l, _NONE_);
r = consumeToken(b, ERL_COMMA);
p = r; // pin = 1
r = r && bin_element(b, l + 1);
exit_section_(b, l, m, r, p, null);
return r || p;
}
/* ********************************************************** */
// max_expression | parenthesized_expression
static boolean bin_expression(PsiBuilder b, int l) {
if (!recursion_guard_(b, l, "bin_expression")) return false;
boolean r;
Marker m = enter_section_(b, l, _NONE_, null, "<expression>");
r = max_expression(b, l + 1);
if (!r) r = parenthesized_expression(b, l + 1);
exit_section_(b, l, m, r, false, null);
return r;
}
/* ********************************************************** */
// q_var ':' q_var '*' integer
public static boolean bin_unit_type(PsiBuilder b, int l) {
if (!recursion_guard_(b, l, "bin_unit_type")) return false;
if (!nextTokenIs(b, ERL_VAR)) return false;
boolean r;
Marker m = enter_section_(b, l, _NONE_, ERL_BIN_UNIT_TYPE, "<type>");
r = q_var(b, l + 1);
r = r && consumeToken(b, ERL_COLON);
r = r && q_var(b, l + 1);
r = r && consumeToken(b, ERL_OP_AR_MUL);
r = r && consumeToken(b, ERL_INTEGER);
exit_section_(b, l, m, r, false, null);
return r;
}
/* ********************************************************** */
// '<<' <<comprehension_element binary_expression>> '||' lc_exprs '>>'
public static boolean binary_comprehension(PsiBuilder b, int l) {
if (!recursion_guard_(b, l, "binary_comprehension")) return false;
if (!nextTokenIs(b, ERL_BIN_START)) return false;
boolean r, p;
Marker m = enter_section_(b, l, _NONE_, ERL_LIST_COMPREHENSION, "<expression>");
r = consumeToken(b, ERL_BIN_START);
r = r && comprehension_element(b, l + 1, binary_expression_parser_);
r = r && consumeToken(b, ERL_OR_OR);
p = r; // pin = 3
r = r && report_error_(b, lc_exprs(b, l + 1));
r = p && consumeToken(b, ERL_BIN_END) && r;
exit_section_(b, l, m, r, p, null);
return r || p;
}
/* ********************************************************** */
// '<<' bin_element_list? '>>'
public static boolean binary_expression(PsiBuilder b, int l) {
if (!recursion_guard_(b, l, "binary_expression")) return false;
if (!nextTokenIs(b, ERL_BIN_START)) return false;
boolean r, p;
Marker m = enter_section_(b, l, _NONE_, ERL_BINARY_EXPRESSION, "<expression>");
r = consumeToken(b, ERL_BIN_START);
p = r; // pin = 1
r = r && report_error_(b, binary_expression_1(b, l + 1));
r = p && consumeToken(b, ERL_BIN_END) && r;
exit_section_(b, l, m, r, p, null);
return r || p;
}
// bin_element_list?
private static boolean binary_expression_1(PsiBuilder b, int l) {
if (!recursion_guard_(b, l, "binary_expression_1")) return false;
bin_element_list(b, l + 1);
return true;
}
/* ********************************************************** */
// '<<' [bin_base_type | bin_unit_type | bin_base_type_list] '>>'
public static boolean binary_type(PsiBuilder b, int l) {
if (!recursion_guard_(b, l, "binary_type")) return false;
if (!nextTokenIs(b, ERL_BIN_START)) return false;
boolean r, p;
Marker m = enter_section_(b, l, _NONE_, ERL_BINARY_TYPE, "<type>");
r = consumeToken(b, ERL_BIN_START);
p = r; // pin = 1
r = r && report_error_(b, binary_type_1(b, l + 1));
r = p && consumeToken(b, ERL_BIN_END) && r;
exit_section_(b, l, m, r, p, null);
return r || p;
}
// [bin_base_type | bin_unit_type | bin_base_type_list]
private static boolean binary_type_1(PsiBuilder b, int l) {
if (!recursion_guard_(b, l, "binary_type_1")) return false;
binary_type_1_0(b, l + 1);
return true;
}
// bin_base_type | bin_unit_type | bin_base_type_list
private static boolean binary_type_1_0(PsiBuilder b, int l) {
if (!recursion_guard_(b, l, "binary_type_1_0")) return false;
boolean r;
Marker m = enter_section_(b);
r = bin_base_type(b, l + 1);
if (!r) r = bin_unit_type(b, l + 1);
if (!r) r = bin_base_type_list(b, l + 1);
exit_section_(b, m, null, r);
return r;
}
/* ********************************************************** */
// q_atom [':' integer]
public static boolean bit_type(PsiBuilder b, int l) {
if (!recursion_guard_(b, l, "bit_type")) return false;
boolean r;
Marker m = enter_section_(b, l, _NONE_, ERL_BIT_TYPE, "<type>");
r = q_atom(b, l + 1);
r = r && bit_type_1(b, l + 1);
exit_section_(b, l, m, r, false, null);
return r;
}
// [':' integer]
private static boolean bit_type_1(PsiBuilder b, int l) {
if (!recursion_guard_(b, l, "bit_type_1")) return false;
bit_type_1_0(b, l + 1);
return true;
}
// ':' integer
private static boolean bit_type_1_0(PsiBuilder b, int l) {
if (!recursion_guard_(b, l, "bit_type_1_0")) return false;
boolean r;
Marker m = enter_section_(b);
r = consumeToken(b, ERL_COLON);
r = r && consumeToken(b, ERL_INTEGER);
exit_section_(b, m, null, r);
return r;
}
/* ********************************************************** */
// bit_type ('-' bit_type)*
static boolean bit_type_list(PsiBuilder b, int l) {
if (!recursion_guard_(b, l, "bit_type_list")) return false;
boolean r, p;
Marker m = enter_section_(b, l, _NONE_);
r = bit_type(b, l + 1);
p = r; // pin = 1
r = r && bit_type_list_1(b, l + 1);
exit_section_(b, l, m, r, p, null);
return r || p;
}
// ('-' bit_type)*
private static boolean bit_type_list_1(PsiBuilder b, int l) {
if (!recursion_guard_(b, l, "bit_type_list_1")) return false;
int c = current_position_(b);
while (true) {
if (!bit_type_list_1_0(b, l + 1)) break;
if (!empty_element_parsed_guard_(b, "bit_type_list_1", c)) break;
c = current_position_(b);
}
return true;
}
// '-' bit_type
private static boolean bit_type_list_1_0(PsiBuilder b, int l) {
if (!recursion_guard_(b, l, "bit_type_list_1_0")) return false;
boolean r, p;
Marker m = enter_section_(b, l, _NONE_);
r = consumeToken(b, ERL_OP_MINUS);
p = r; // pin = 1
r = r && bit_type(b, l + 1);
exit_section_(b, l, m, r, p, null);
return r || p;
}
/* ********************************************************** */
// expr_with_guard (',' expr_with_guard)*
static boolean call_exprs(PsiBuilder b, int l) {
if (!recursion_guard_(b, l, "call_exprs")) return false;
boolean r, p;
Marker m = enter_section_(b, l, _NONE_);
r = expr_with_guard(b, l + 1);
p = r; // pin = 1
r = r && call_exprs_1(b, l + 1);
exit_section_(b, l, m, r, p, null);
return r || p;
}
// (',' expr_with_guard)*
private static boolean call_exprs_1(PsiBuilder b, int l) {
if (!recursion_guard_(b, l, "call_exprs_1")) return false;
int c = current_position_(b);
while (true) {
if (!call_exprs_1_0(b, l + 1)) break;
if (!empty_element_parsed_guard_(b, "call_exprs_1", c)) break;
c = current_position_(b);
}
return true;
}
// ',' expr_with_guard
private static boolean call_exprs_1_0(PsiBuilder b, int l) {
if (!recursion_guard_(b, l, "call_exprs_1_0")) return false;
boolean r, p;
Marker m = enter_section_(b, l, _NONE_);
r = consumeToken(b, ERL_COMMA);
p = r; // pin = 1
r = r && expr_with_guard(b, l + 1);
exit_section_(b, l, m, r, p, null);
return r || p;
}
/* ********************************************************** */
// q_atom '/' integer
public static boolean callback_function(PsiBuilder b, int l) {
if (!recursion_guard_(b, l, "callback_function")) return false;
boolean r, p;
Marker m = enter_section_(b, l, _NONE_, ERL_CALLBACK_FUNCTION, "<callback function>");
r = q_atom(b, l + 1);
p = r; // pin = 1
r = r && report_error_(b, consumeToken(b, ERL_OP_AR_DIV));
r = p && consumeToken(b, ERL_INTEGER) && r;
exit_section_(b, l, m, r, p, null);
return r || p;
}
/* ********************************************************** */
// callback_function (',' callback_function)*
static boolean callback_function_list(PsiBuilder b, int l) {
if (!recursion_guard_(b, l, "callback_function_list")) return false;
boolean r, p;
Marker m = enter_section_(b, l, _NONE_);
r = callback_function(b, l + 1);
p = r; // pin = 1
r = r && callback_function_list_1(b, l + 1);
exit_section_(b, l, m, r, p, null);
return r || p;
}
// (',' callback_function)*
private static boolean callback_function_list_1(PsiBuilder b, int l) {
if (!recursion_guard_(b, l, "callback_function_list_1")) return false;
int c = current_position_(b);
while (true) {
if (!callback_function_list_1_0(b, l + 1)) break;
if (!empty_element_parsed_guard_(b, "callback_function_list_1", c)) break;
c = current_position_(b);
}
return true;
}
// ',' callback_function
private static boolean callback_function_list_1_0(PsiBuilder b, int l) {
if (!recursion_guard_(b, l, "callback_function_list_1_0")) return false;
boolean r, p;
Marker m = enter_section_(b, l, _NONE_);
r = consumeToken(b, ERL_COMMA);
p = r; // pin = 1
r = r && callback_function(b, l + 1);
exit_section_(b, l, m, r, p, null);
return r || p;
}
/* ********************************************************** */
// 'callback' type_spec
public static boolean callback_spec(PsiBuilder b, int l) {
if (!recursion_guard_(b, l, "callback_spec")) return false;
boolean r, p;
Marker m = enter_section_(b, l, _NONE_, ERL_CALLBACK_SPEC, "<callback spec>");
r = consumeToken(b, "callback");
p = r; // pin = 1
r = r && type_spec(b, l + 1);
exit_section_(b, l, m, r, p, null);
return r || p;
}
/* ********************************************************** */
// case expression of cr_clauses end
public static boolean case_expression(PsiBuilder b, int l) {
if (!recursion_guard_(b, l, "case_expression")) return false;
if (!nextTokenIs(b, ERL_CASE)) return false;
boolean r, p;
Marker m = enter_section_(b, l, _NONE_, ERL_CASE_EXPRESSION, "<expression>");
r = consumeToken(b, ERL_CASE);
p = r; // pin = 1
r = r && report_error_(b, expression(b, l + 1, -1));
r = p && report_error_(b, consumeToken(b, ERL_OF)) && r;
r = p && report_error_(b, cr_clauses(b, l + 1)) && r;
r = p && consumeToken(b, ERL_END) && r;
exit_section_(b, l, m, r, p, null);
return r || p;
}
/* ********************************************************** */
// '->' exprs
public static boolean clause_body(PsiBuilder b, int l) {
if (!recursion_guard_(b, l, "clause_body")) return false;
if (!nextTokenIs(b, ERL_ARROW)) return false;
boolean r, p;
Marker m = enter_section_(b, l, _NONE_, ERL_CLAUSE_BODY, null);
r = consumeToken(b, ERL_ARROW);
p = r; // pin = 1
r = r && exprs(b, l + 1);
exit_section_(b, l, m, r, p, null);
return r || p;
}
/* ********************************************************** */
// when <<guarded guard>>
public static boolean clause_guard(PsiBuilder b, int l) {
if (!recursion_guard_(b, l, "clause_guard")) return false;
if (!nextTokenIs(b, ERL_WHEN)) return false;
boolean r, p;
Marker m = enter_section_(b, l, _NONE_, ERL_CLAUSE_GUARD, null);
r = consumeToken(b, ERL_WHEN);
p = r; // pin = 1
r = r && guarded(b, l + 1, guard_parser_);
exit_section_(b, l, m, r, p, null);
return r || p;
}
/* ********************************************************** */
// '==' | '/=' |'=<' |'<' |'>=' |'>' |'=:=' |'=/='
static boolean comp_op(PsiBuilder b, int l) {
if (!recursion_guard_(b, l, "comp_op")) return false;
boolean r;
Marker m = enter_section_(b);
r = consumeToken(b, ERL_OP_EQ_EQ);
if (!r) r = consumeToken(b, ERL_OP_DIV_EQ);
if (!r) r = consumeToken(b, ERL_OP_EQ_LT);
if (!r) r = consumeToken(b, ERL_OP_LT);
if (!r) r = consumeToken(b, ERL_OP_GT_EQ);
if (!r) r = consumeToken(b, ERL_OP_GT);
if (!r) r = consumeToken(b, ERL_OP_EQ_COL_EQ);
if (!r) r = consumeToken(b, ERL_OP_EQ_DIV_EQ);
exit_section_(b, m, null, r);
return r;
}
/* ********************************************************** */
// (&('||'))? <<p1>>
static boolean comprehension_element(PsiBuilder b, int l, final Parser _p1) {
if (!recursion_guard_(b, l, "comprehension_element")) return false;
boolean r, p;
Marker m = enter_section_(b, l, _NONE_);
r = comprehension_element_0(b, l + 1);
p = r; // pin = 1
r = r && _p1.parse(b, l);
exit_section_(b, l, m, r, p, null);
return r || p;
}
// (&('||'))?
private static boolean comprehension_element_0(PsiBuilder b, int l) {
if (!recursion_guard_(b, l, "comprehension_element_0")) return false;
comprehension_element_0_0(b, l + 1);
return true;
}
// &('||')
private static boolean comprehension_element_0_0(PsiBuilder b, int l) {
if (!recursion_guard_(b, l, "comprehension_element_0_0")) return false;
boolean r;
Marker m = enter_section_(b, l, _AND_);
r = comprehension_element_0_0_0(b, l + 1);
exit_section_(b, l, m, r, false, null);
return r;
}
// ('||')
private static boolean comprehension_element_0_0_0(PsiBuilder b, int l) {
if (!recursion_guard_(b, l, "comprehension_element_0_0_0")) return false;
boolean r;
Marker m = enter_section_(b);
r = consumeToken(b, ERL_OR_OR);
exit_section_(b, m, null, r);
return r;
}
/* ********************************************************** */
// '(' config_exprs? ')'
public static boolean config_argument_list(PsiBuilder b, int l) {
if (!recursion_guard_(b, l, "config_argument_list")) return false;
if (!nextTokenIs(b, ERL_PAR_LEFT)) return false;
boolean r, p;
Marker m = enter_section_(b, l, _NONE_, ERL_ARGUMENT_LIST, null);
r = consumeToken(b, ERL_PAR_LEFT);
p = r; // pin = 1
r = r && report_error_(b, config_argument_list_1(b, l + 1));
r = p && consumeToken(b, ERL_PAR_RIGHT) && r;
exit_section_(b, l, m, r, p, null);
return r || p;
}
// config_exprs?
private static boolean config_argument_list_1(PsiBuilder b, int l) {
if (!recursion_guard_(b, l, "config_argument_list_1")) return false;
config_exprs(b, l + 1);
return true;
}
/* ********************************************************** */
// '<<' config_exprs? '>>'
public static boolean config_bin_list_expression(PsiBuilder b, int l) {
if (!recursion_guard_(b, l, "config_bin_list_expression")) return false;
if (!nextTokenIs(b, ERL_BIN_START)) return false;
boolean r, p;
Marker m = enter_section_(b, l, _NONE_, ERL_BINARY_EXPRESSION, "<expression>");
r = consumeToken(b, ERL_BIN_START);
p = r; // pin = 1
r = r && report_error_(b, config_bin_list_expression_1(b, l + 1));
r = p && consumeToken(b, ERL_BIN_END) && r;
exit_section_(b, l, m, r, p, null);
return r || p;
}
// config_exprs?
private static boolean config_bin_list_expression_1(PsiBuilder b, int l) {
if (!recursion_guard_(b, l, "config_bin_list_expression_1")) return false;
config_exprs(b, l + 1);
return true;
}
/* ********************************************************** */
// config_argument_list
public static boolean config_call_expression(PsiBuilder b, int l) {
if (!recursion_guard_(b, l, "config_call_expression")) return false;
if (!nextTokenIs(b, ERL_PAR_LEFT)) return false;
boolean r;
Marker m = enter_section_(b, l, _LEFT_, ERL_CONFIG_CALL_EXPRESSION, "<expression>");
r = config_argument_list(b, l + 1);
exit_section_(b, l, m, r, false, null);
return r;
}
/* ********************************************************** */
// !(')' | '>>' | ']' | '}')
static boolean config_expr_recover(PsiBuilder b, int l) {
if (!recursion_guard_(b, l, "config_expr_recover")) return false;
boolean r;
Marker m = enter_section_(b, l, _NOT_);
r = !config_expr_recover_0(b, l + 1);
exit_section_(b, l, m, r, false, null);
return r;
}
// ')' | '>>' | ']' | '}'
private static boolean config_expr_recover_0(PsiBuilder b, int l) {
if (!recursion_guard_(b, l, "config_expr_recover_0")) return false;
boolean r;
Marker m = enter_section_(b);
r = consumeToken(b, ERL_PAR_RIGHT);
if (!r) r = consumeToken(b, ERL_BIN_END);
if (!r) r = consumeToken(b, ERL_BRACKET_RIGHT);
if (!r) r = consumeToken(b, ERL_CURLY_RIGHT);
exit_section_(b, m, null, r);
return r;
}
/* ********************************************************** */
// config_tuple_expression
// | config_list_expression
// | config_bin_list_expression
// | config_qualified_or_call_expression
// | config_map_construct_expression
// | (prefix_op? atomic)
// | q_var
public static boolean config_expression(PsiBuilder b, int l) {
if (!recursion_guard_(b, l, "config_expression")) return false;
boolean r;
Marker m = enter_section_(b, l, _COLLAPSE_, ERL_CONFIG_EXPRESSION, "<expression>");
r = config_tuple_expression(b, l + 1);
if (!r) r = config_list_expression(b, l + 1);
if (!r) r = config_bin_list_expression(b, l + 1);
if (!r) r = config_qualified_or_call_expression(b, l + 1);
if (!r) r = config_map_construct_expression(b, l + 1);
if (!r) r = config_expression_5(b, l + 1);
if (!r) r = q_var(b, l + 1);
exit_section_(b, l, m, r, false, null);
return r;
}
// prefix_op? atomic
private static boolean config_expression_5(PsiBuilder b, int l) {
if (!recursion_guard_(b, l, "config_expression_5")) return false;
boolean r;
Marker m = enter_section_(b);
r = config_expression_5_0(b, l + 1);
r = r && atomic(b, l + 1);
exit_section_(b, m, null, r);
return r;
}
// prefix_op?
private static boolean config_expression_5_0(PsiBuilder b, int l) {
if (!recursion_guard_(b, l, "config_expression_5_0")) return false;
prefix_op(b, l + 1);
return true;
}
/* ********************************************************** */
// config_expression (',' config_expression)*
static boolean config_exprs(PsiBuilder b, int l) {
if (!recursion_guard_(b, l, "config_exprs")) return false;
boolean r, p;
Marker m = enter_section_(b, l, _NONE_);
r = config_expression(b, l + 1);
p = r; // pin = 1
r = r && config_exprs_1(b, l + 1);
exit_section_(b, l, m, r, p, config_expr_recover_parser_);
return r || p;
}
// (',' config_expression)*
private static boolean config_exprs_1(PsiBuilder b, int l) {
if (!recursion_guard_(b, l, "config_exprs_1")) return false;
int c = current_position_(b);
while (true) {
if (!config_exprs_1_0(b, l + 1)) break;
if (!empty_element_parsed_guard_(b, "config_exprs_1", c)) break;
c = current_position_(b);
}
return true;
}
// ',' config_expression
private static boolean config_exprs_1_0(PsiBuilder b, int l) {
if (!recursion_guard_(b, l, "config_exprs_1_0")) return false;
boolean r, p;
Marker m = enter_section_(b, l, _NONE_);
r = consumeToken(b, ERL_COMMA);
p = r; // pin = 1
r = r && config_expression(b, l + 1);
exit_section_(b, l, m, r, p, null);
return r || p;
}
/* ********************************************************** */
// '[' config_exprs? ']'
public static boolean config_list_expression(PsiBuilder b, int l) {
if (!recursion_guard_(b, l, "config_list_expression")) return false;
if (!nextTokenIs(b, ERL_BRACKET_LEFT)) return false;
boolean r, p;
Marker m = enter_section_(b, l, _NONE_, ERL_LIST_EXPRESSION, "<expression>");
r = consumeToken(b, ERL_BRACKET_LEFT);
p = r; // pin = 1
r = r && report_error_(b, config_list_expression_1(b, l + 1));
r = p && consumeToken(b, ERL_BRACKET_RIGHT) && r;
exit_section_(b, l, m, r, p, null);
return r || p;
}
// config_exprs?
private static boolean config_list_expression_1(PsiBuilder b, int l) {
if (!recursion_guard_(b, l, "config_list_expression_1")) return false;
config_exprs(b, l + 1);
return true;
}
/* ********************************************************** */
// config_expression '=>' config_expression
static boolean config_map_assoc(PsiBuilder b, int l) {
if (!recursion_guard_(b, l, "config_map_assoc")) return false;
boolean r, p;
Marker m = enter_section_(b, l, _NONE_);
r = config_expression(b, l + 1);
p = r; // pin = 1
r = r && report_error_(b, consumeToken(b, ERL_ASSOC));
r = p && config_expression(b, l + 1) && r;
exit_section_(b, l, m, r, p, null);
return r || p;
}
/* ********************************************************** */
// config_map_assoc (',' config_map_assoc)*
static boolean config_map_assoc_list(PsiBuilder b, int l) {
if (!recursion_guard_(b, l, "config_map_assoc_list")) return false;
boolean r, p;
Marker m = enter_section_(b, l, _NONE_);
r = config_map_assoc(b, l + 1);
p = r; // pin = 1
r = r && config_map_assoc_list_1(b, l + 1);
exit_section_(b, l, m, r, p, tuple_recoverer_parser_);
return r || p;
}
// (',' config_map_assoc)*
private static boolean config_map_assoc_list_1(PsiBuilder b, int l) {
if (!recursion_guard_(b, l, "config_map_assoc_list_1")) return false;
int c = current_position_(b);
while (true) {
if (!config_map_assoc_list_1_0(b, l + 1)) break;
if (!empty_element_parsed_guard_(b, "config_map_assoc_list_1", c)) break;
c = current_position_(b);
}
return true;
}
// ',' config_map_assoc
private static boolean config_map_assoc_list_1_0(PsiBuilder b, int l) {
if (!recursion_guard_(b, l, "config_map_assoc_list_1_0")) return false;
boolean r, p;
Marker m = enter_section_(b, l, _NONE_);
r = consumeToken(b, ERL_COMMA);
p = r; // pin = 1
r = r && config_map_assoc(b, l + 1);
exit_section_(b, l, m, r, p, null);
return r || p;
}
/* ********************************************************** */
// config_map_tuple
public static boolean config_map_construct_expression(PsiBuilder b, int l) {
if (!recursion_guard_(b, l, "config_map_construct_expression")) return false;
if (!nextTokenIs(b, ERL_RADIX)) return false;
boolean r;
Marker m = enter_section_(b, l, _NONE_, ERL_MAP_EXPRESSION, "<expression>");
r = config_map_tuple(b, l + 1);
exit_section_(b, l, m, r, false, null);
return r;
}
/* ********************************************************** */
// '#' '{' config_map_assoc_list? '}'
public static boolean config_map_tuple(PsiBuilder b, int l) {
if (!recursion_guard_(b, l, "config_map_tuple")) return false;
if (!nextTokenIs(b, ERL_RADIX)) return false;
boolean r, p;
Marker m = enter_section_(b, l, _NONE_, ERL_MAP_TUPLE, null);
r = consumeToken(b, ERL_RADIX);
p = r; // pin = 1
r = r && report_error_(b, consumeToken(b, ERL_CURLY_LEFT));
r = p && report_error_(b, config_map_tuple_2(b, l + 1)) && r;
r = p && consumeToken(b, ERL_CURLY_RIGHT) && r;
exit_section_(b, l, m, r, p, null);
return r || p;
}
// config_map_assoc_list?
private static boolean config_map_tuple_2(PsiBuilder b, int l) {
if (!recursion_guard_(b, l, "config_map_tuple_2")) return false;
config_map_assoc_list(b, l + 1);
return true;
}
/* ********************************************************** */
// q_atom left_accessors?
static boolean config_qualified_or_call_expression(PsiBuilder b, int l) {
if (!recursion_guard_(b, l, "config_qualified_or_call_expression")) return false;
boolean r, p;
Marker m = enter_section_(b, l, _NONE_, null, "<expression>");
r = q_atom(b, l + 1);
p = r; // pin = 1
r = r && config_qualified_or_call_expression_1(b, l + 1);
exit_section_(b, l, m, r, p, null);
return r || p;
}
// left_accessors?
private static boolean config_qualified_or_call_expression_1(PsiBuilder b, int l) {
if (!recursion_guard_(b, l, "config_qualified_or_call_expression_1")) return false;
left_accessors(b, l + 1);
return true;
}
/* ********************************************************** */
// '{' config_exprs? '}'
public static boolean config_tuple_expression(PsiBuilder b, int l) {
if (!recursion_guard_(b, l, "config_tuple_expression")) return false;
if (!nextTokenIs(b, ERL_CURLY_LEFT)) return false;
boolean r, p;
Marker m = enter_section_(b, l, _NONE_, ERL_TUPLE_EXPRESSION, "<expression>");
r = consumeToken(b, ERL_CURLY_LEFT);
p = r; // pin = 1
r = r && report_error_(b, config_tuple_expression_1(b, l + 1));
r = p && consumeToken(b, ERL_CURLY_RIGHT) && r;
exit_section_(b, l, m, r, p, null);
return r || p;
}
// config_exprs?
private static boolean config_tuple_expression_1(PsiBuilder b, int l) {
if (!recursion_guard_(b, l, "config_tuple_expression_1")) return false;
config_exprs(b, l + 1);
return true;
}
/* ********************************************************** */
// is_console empty console_expression_or_empty
static boolean console_expression(PsiBuilder b, int l) {
if (!recursion_guard_(b, l, "console_expression")) return false;
boolean r, p;
Marker m = enter_section_(b, l, _NONE_, null, "<expression>");
r = is_console(b, l + 1);
r = r && empty(b, l + 1);
p = r; // pin = 2
r = r && console_expression_or_empty(b, l + 1);
exit_section_(b, l, m, r, p, null);
return r || p;
}
/* ********************************************************** */
// exprs period | empty
static boolean console_expression_or_empty(PsiBuilder b, int l) {
if (!recursion_guard_(b, l, "console_expression_or_empty")) return false;
boolean r;
Marker m = enter_section_(b);
r = console_expression_or_empty_0(b, l + 1);
if (!r) r = empty(b, l + 1);
exit_section_(b, m, null, r);
return r;
}
// exprs period
private static boolean console_expression_or_empty_0(PsiBuilder b, int l) {
if (!recursion_guard_(b, l, "console_expression_or_empty_0")) return false;
boolean r, p;
Marker m = enter_section_(b, l, _NONE_);
r = exprs(b, l + 1);
p = r; // pin = 1
r = r && period(b, l + 1);
exit_section_(b, l, m, r, p, null);
return r || p;
}
/* ********************************************************** */
// cr_clause_argument_definition clause_guard? clause_body
public static boolean cr_clause(PsiBuilder b, int l) {
if (!recursion_guard_(b, l, "cr_clause")) return false;
boolean r, p;
Marker m = enter_section_(b, l, _NONE_, ERL_CR_CLAUSE, "<cr clause>");
r = cr_clause_argument_definition(b, l + 1);
p = r; // pin = 1
r = r && report_error_(b, cr_clause_1(b, l + 1));
r = p && clause_body(b, l + 1) && r;
exit_section_(b, l, m, r, p, null);
return r || p;
}
// clause_guard?
private static boolean cr_clause_1(PsiBuilder b, int l) {
if (!recursion_guard_(b, l, "cr_clause_1")) return false;
clause_guard(b, l + 1);
return true;
}
/* ********************************************************** */
// <<guarded argument_definition>>
static boolean cr_clause_argument_definition(PsiBuilder b, int l) {
return guarded(b, l + 1, argument_definition_parser_);
}
/* ********************************************************** */
// cr_clause (';' cr_clause)*
static boolean cr_clauses(PsiBuilder b, int l) {
if (!recursion_guard_(b, l, "cr_clauses")) return false;
boolean r, p;
Marker m = enter_section_(b, l, _NONE_);
r = cr_clause(b, l + 1);
p = r; // pin = 1
r = r && cr_clauses_1(b, l + 1);
exit_section_(b, l, m, r, p, null);
return r || p;
}
// (';' cr_clause)*
private static boolean cr_clauses_1(PsiBuilder b, int l) {
if (!recursion_guard_(b, l, "cr_clauses_1")) return false;
int c = current_position_(b);
while (true) {
if (!cr_clauses_1_0(b, l + 1)) break;
if (!empty_element_parsed_guard_(b, "cr_clauses_1", c)) break;
c = current_position_(b);
}
return true;
}
// ';' cr_clause
private static boolean cr_clauses_1_0(PsiBuilder b, int l) {
if (!recursion_guard_(b, l, "cr_clauses_1_0")) return false;
boolean r, p;
Marker m = enter_section_(b, l, _NONE_);
r = consumeToken(b, ERL_SEMI);
p = r; // pin = 1
r = r && cr_clause(b, l + 1);
exit_section_(b, l, m, r, p, null);
return r || p;
}
/* ********************************************************** */
// &'else' atom_name
public static boolean else_atom_attribute(PsiBuilder b, int l) {
if (!recursion_guard_(b, l, "else_atom_attribute")) return false;
boolean r;
Marker m = enter_section_(b, l, _NONE_, ERL_ATOM_ATTRIBUTE, "<attribute>");
r = else_atom_attribute_0(b, l + 1);
r = r && consumeToken(b, ERL_ATOM_NAME);
exit_section_(b, l, m, r, false, null);
return r;
}
// &'else'
private static boolean else_atom_attribute_0(PsiBuilder b, int l) {
if (!recursion_guard_(b, l, "else_atom_attribute_0")) return false;
boolean r;
Marker m = enter_section_(b, l, _AND_);
r = consumeToken(b, "else");
exit_section_(b, l, m, r, false, null);
return r;
}
/* ********************************************************** */
// ()
static boolean empty(PsiBuilder b, int l) {
return true;
}
/* ********************************************************** */
// 'export' <<attribute_tail export_functions>>
public static boolean export(PsiBuilder b, int l) {
if (!recursion_guard_(b, l, "export")) return false;
boolean r, p;
Marker m = enter_section_(b, l, _NONE_, ERL_EXPORT, "<export>");
r = consumeToken(b, "export");
p = r; // pin = 1
r = r && attribute_tail(b, l + 1, export_functions_parser_);
exit_section_(b, l, m, r, p, null);
return r || p;
}
/* ********************************************************** */
// q_atom '/' integer
public static boolean export_function(PsiBuilder b, int l) {
if (!recursion_guard_(b, l, "export_function")) return false;
boolean r, p;
Marker m = enter_section_(b, l, _NONE_, ERL_EXPORT_FUNCTION, "<export function>");
r = q_atom(b, l + 1);
p = r; // pin = 1
r = r && report_error_(b, consumeToken(b, ERL_OP_AR_DIV));
r = p && consumeToken(b, ERL_INTEGER) && r;
exit_section_(b, l, m, r, p, null);
return r || p;
}
/* ********************************************************** */
// export_function (',' export_function)*
static boolean export_function_list(PsiBuilder b, int l) {
if (!recursion_guard_(b, l, "export_function_list")) return false;
boolean r, p;
Marker m = enter_section_(b, l, _NONE_);
r = export_function(b, l + 1);
p = r; // pin = 1
r = r && export_function_list_1(b, l + 1);
exit_section_(b, l, m, r, p, null);
return r || p;
}
// (',' export_function)*
private static boolean export_function_list_1(PsiBuilder b, int l) {
if (!recursion_guard_(b, l, "export_function_list_1")) return false;
int c = current_position_(b);
while (true) {
if (!export_function_list_1_0(b, l + 1)) break;
if (!empty_element_parsed_guard_(b, "export_function_list_1", c)) break;
c = current_position_(b);
}
return true;
}
// ',' export_function
private static boolean export_function_list_1_0(PsiBuilder b, int l) {
if (!recursion_guard_(b, l, "export_function_list_1_0")) return false;
boolean r, p;
Marker m = enter_section_(b, l, _NONE_);
r = consumeToken(b, ERL_COMMA);
p = r; // pin = 1
r = r && export_function(b, l + 1);
exit_section_(b, l, m, r, p, null);
return r || p;
}
/* ********************************************************** */
// '[' export_function_list? ']'
public static boolean export_functions(PsiBuilder b, int l) {
if (!recursion_guard_(b, l, "export_functions")) return false;
if (!nextTokenIs(b, ERL_BRACKET_LEFT)) return false;
boolean r, p;
Marker m = enter_section_(b, l, _NONE_, ERL_EXPORT_FUNCTIONS, null);
r = consumeToken(b, ERL_BRACKET_LEFT);
p = r; // pin = 1
r = r && report_error_(b, export_functions_1(b, l + 1));
r = p && consumeToken(b, ERL_BRACKET_RIGHT) && r;
exit_section_(b, l, m, r, p, null);
return r || p;
}
// export_function_list?
private static boolean export_functions_1(PsiBuilder b, int l) {
if (!recursion_guard_(b, l, "export_functions_1")) return false;
export_function_list(b, l + 1);
return true;
}
/* ********************************************************** */
// q_atom '/' integer
public static boolean export_type(PsiBuilder b, int l) {
if (!recursion_guard_(b, l, "export_type")) return false;
boolean r, p;
Marker m = enter_section_(b, l, _NONE_, ERL_EXPORT_TYPE, "<type>");
r = q_atom(b, l + 1);
p = r; // pin = 1
r = r && report_error_(b, consumeToken(b, ERL_OP_AR_DIV));
r = p && consumeToken(b, ERL_INTEGER) && r;
exit_section_(b, l, m, r, p, null);
return r || p;
}
/* ********************************************************** */
// 'export_type' <<attribute_tail export_types>>
public static boolean export_type_attribute(PsiBuilder b, int l) {
if (!recursion_guard_(b, l, "export_type_attribute")) return false;
boolean r, p;
Marker m = enter_section_(b, l, _NONE_, ERL_EXPORT_TYPE_ATTRIBUTE, "<attribute>");
r = consumeToken(b, "export_type");
p = r; // pin = 1
r = r && attribute_tail(b, l + 1, export_types_parser_);
exit_section_(b, l, m, r, p, null);
return r || p;
}
/* ********************************************************** */
// export_type (',' export_type)*
static boolean export_type_list(PsiBuilder b, int l) {
if (!recursion_guard_(b, l, "export_type_list")) return false;
boolean r, p;
Marker m = enter_section_(b, l, _NONE_);
r = export_type(b, l + 1);
p = r; // pin = 1
r = r && export_type_list_1(b, l + 1);
exit_section_(b, l, m, r, p, null);
return r || p;
}
// (',' export_type)*
private static boolean export_type_list_1(PsiBuilder b, int l) {
if (!recursion_guard_(b, l, "export_type_list_1")) return false;
int c = current_position_(b);
while (true) {
if (!export_type_list_1_0(b, l + 1)) break;
if (!empty_element_parsed_guard_(b, "export_type_list_1", c)) break;
c = current_position_(b);
}
return true;
}
// ',' export_type
private static boolean export_type_list_1_0(PsiBuilder b, int l) {
if (!recursion_guard_(b, l, "export_type_list_1_0")) return false;
boolean r, p;
Marker m = enter_section_(b, l, _NONE_);
r = consumeToken(b, ERL_COMMA);
p = r; // pin = 1
r = r && export_type(b, l + 1);
exit_section_(b, l, m, r, p, null);
return r || p;
}
/* ********************************************************** */
// '[' export_type_list? ']'
public static boolean export_types(PsiBuilder b, int l) {
if (!recursion_guard_(b, l, "export_types")) return false;
if (!nextTokenIs(b, ERL_BRACKET_LEFT)) return false;
boolean r, p;
Marker m = enter_section_(b, l, _NONE_, ERL_EXPORT_TYPES, null);
r = consumeToken(b, ERL_BRACKET_LEFT);
p = r; // pin = 1
r = r && report_error_(b, export_types_1(b, l + 1));
r = p && consumeToken(b, ERL_BRACKET_RIGHT) && r;
exit_section_(b, l, m, r, p, null);
return r || p;
}
// export_type_list?
private static boolean export_types_1(PsiBuilder b, int l) {
if (!recursion_guard_(b, l, "export_types_1")) return false;
export_type_list(b, l + 1);
return true;
}
/* ********************************************************** */
// <<maybeComprehension list_expr_or_comprehension>>
static boolean expr_with_brackets(PsiBuilder b, int l) {
return maybeComprehension(b, l + 1, list_expr_or_comprehension_parser_);
}
/* ********************************************************** */
// expression clause_guard?
static boolean expr_with_guard(PsiBuilder b, int l) {
if (!recursion_guard_(b, l, "expr_with_guard")) return false;
boolean r, p;
Marker m = enter_section_(b, l, _NONE_);
r = expression(b, l + 1, -1);
p = r; // pin = 1
r = r && expr_with_guard_1(b, l + 1);
exit_section_(b, l, m, r, p, null);
return r || p;
}
// clause_guard?
private static boolean expr_with_guard_1(PsiBuilder b, int l) {
if (!recursion_guard_(b, l, "expr_with_guard_1")) return false;
clause_guard(b, l + 1);
return true;
}
/* ********************************************************** */
// &('||') expression
static boolean expression_parse_error(PsiBuilder b, int l) {
if (!recursion_guard_(b, l, "expression_parse_error")) return false;
if (!nextTokenIs(b, ERL_OR_OR)) return false;
boolean r, p;
Marker m = enter_section_(b, l, _NONE_);
r = expression_parse_error_0(b, l + 1);
p = r; // pin = 1
r = r && expression(b, l + 1, -1);
exit_section_(b, l, m, r, p, null);
return r || p;
}
// &('||')
private static boolean expression_parse_error_0(PsiBuilder b, int l) {
if (!recursion_guard_(b, l, "expression_parse_error_0")) return false;
boolean r;
Marker m = enter_section_(b, l, _AND_);
r = expression_parse_error_0_0(b, l + 1);
exit_section_(b, l, m, r, false, null);
return r;
}
// ('||')
private static boolean expression_parse_error_0_0(PsiBuilder b, int l) {
if (!recursion_guard_(b, l, "expression_parse_error_0_0")) return false;
boolean r;
Marker m = enter_section_(b);
r = consumeToken(b, ERL_OR_OR);
exit_section_(b, m, null, r);
return r;
}
/* ********************************************************** */
// expression (exprs_tail)*
static boolean exprs(PsiBuilder b, int l) {
if (!recursion_guard_(b, l, "exprs")) return false;
boolean r;
Marker m = enter_section_(b, l, _NONE_);
r = expression(b, l + 1, -1);
r = r && exprs_1(b, l + 1);
exit_section_(b, l, m, r, false, exprs_recover_parser_);
return r;
}
// (exprs_tail)*
private static boolean exprs_1(PsiBuilder b, int l) {
if (!recursion_guard_(b, l, "exprs_1")) return false;
int c = current_position_(b);
while (true) {
if (!exprs_1_0(b, l + 1)) break;
if (!empty_element_parsed_guard_(b, "exprs_1", c)) break;
c = current_position_(b);
}
return true;
}
// (exprs_tail)
private static boolean exprs_1_0(PsiBuilder b, int l) {
if (!recursion_guard_(b, l, "exprs_1_0")) return false;
boolean r;
Marker m = enter_section_(b);
r = exprs_tail(b, l + 1);
exit_section_(b, m, null, r);
return r;
}
/* ********************************************************** */
// !(')' | ',' | '->' | '.' | ':-' | ';' | '}' | after | catch | end | of | atom '(')
static boolean exprs_recover(PsiBuilder b, int l) {
if (!recursion_guard_(b, l, "exprs_recover")) return false;
boolean r;
Marker m = enter_section_(b, l, _NOT_);
r = !exprs_recover_0(b, l + 1);
exit_section_(b, l, m, r, false, null);
return r;
}
// ')' | ',' | '->' | '.' | ':-' | ';' | '}' | after | catch | end | of | atom '('
private static boolean exprs_recover_0(PsiBuilder b, int l) {
if (!recursion_guard_(b, l, "exprs_recover_0")) return false;
boolean r;
Marker m = enter_section_(b);
r = consumeToken(b, ERL_PAR_RIGHT);
if (!r) r = consumeToken(b, ERL_COMMA);
if (!r) r = consumeToken(b, ERL_ARROW);
if (!r) r = consumeToken(b, ERL_DOT);
if (!r) r = consumeToken(b, ":-");
if (!r) r = consumeToken(b, ERL_SEMI);
if (!r) r = consumeToken(b, ERL_CURLY_RIGHT);
if (!r) r = consumeToken(b, ERL_AFTER);
if (!r) r = consumeToken(b, ERL_CATCH);
if (!r) r = consumeToken(b, ERL_END);
if (!r) r = consumeToken(b, ERL_OF);
if (!r) r = exprs_recover_0_11(b, l + 1);
exit_section_(b, m, null, r);
return r;
}
// atom '('
private static boolean exprs_recover_0_11(PsiBuilder b, int l) {
if (!recursion_guard_(b, l, "exprs_recover_0_11")) return false;
boolean r;
Marker m = enter_section_(b);
r = atom(b, l + 1);
r = r && consumeToken(b, ERL_PAR_LEFT);
exit_section_(b, m, null, r);
return r;
}
/* ********************************************************** */
// ',' expression
static boolean exprs_tail(PsiBuilder b, int l) {
if (!recursion_guard_(b, l, "exprs_tail")) return false;
boolean r, p;
Marker m = enter_section_(b, l, _NONE_);
r = consumeToken(b, ERL_COMMA);
p = r; // pin = 1
r = r && expression(b, l + 1, -1);
exit_section_(b, l, m, r, p, exprs_recover_parser_);
return r || p;
}
/* ********************************************************** */
// q_atom '::' top_type
public static boolean field_type(PsiBuilder b, int l) {
if (!recursion_guard_(b, l, "field_type")) return false;
boolean r, p;
Marker m = enter_section_(b, l, _NONE_, ERL_FIELD_TYPE, "<type>");
r = q_atom(b, l + 1);
p = r; // pin = 1
r = r && report_error_(b, consumeToken(b, ERL_COLON_COLON));
r = p && top_type(b, l + 1) && r;
exit_section_(b, l, m, r, p, null);
return r || p;
}
/* ********************************************************** */
// field_type (',' field_type)*
static boolean field_type_list(PsiBuilder b, int l) {
if (!recursion_guard_(b, l, "field_type_list")) return false;
boolean r, p;
Marker m = enter_section_(b, l, _NONE_);
r = field_type(b, l + 1);
p = r; // pin = 1
r = r && field_type_list_1(b, l + 1);
exit_section_(b, l, m, r, p, null);
return r || p;
}
// (',' field_type)*
private static boolean field_type_list_1(PsiBuilder b, int l) {
if (!recursion_guard_(b, l, "field_type_list_1")) return false;
int c = current_position_(b);
while (true) {
if (!field_type_list_1_0(b, l + 1)) break;
if (!empty_element_parsed_guard_(b, "field_type_list_1", c)) break;
c = current_position_(b);
}
return true;
}
// ',' field_type
private static boolean field_type_list_1_0(PsiBuilder b, int l) {
if (!recursion_guard_(b, l, "field_type_list_1_0")) return false;
boolean r, p;
Marker m = enter_section_(b, l, _NONE_);
r = consumeToken(b, ERL_COMMA);
p = r; // pin = 1
r = r && field_type(b, l + 1);
exit_section_(b, l, m, r, p, null);
return r || p;
}
/* ********************************************************** */
// is_config config_expression
// | function
// | record_definition
// | include_lib
// | include
// | macros_definition
// | type_definition
// | attribute
// | macros_call // macros support
// | rule
// | !<<eofOrSpace>>
static boolean form(PsiBuilder b, int l) {
if (!recursion_guard_(b, l, "form")) return false;
boolean r;
Marker m = enter_section_(b);
r = form_0(b, l + 1);
if (!r) r = function(b, l + 1);
if (!r) r = record_definition(b, l + 1);
if (!r) r = include_lib(b, l + 1);
if (!r) r = include(b, l + 1);
if (!r) r = macros_definition(b, l + 1);
if (!r) r = type_definition(b, l + 1);
if (!r) r = attribute(b, l + 1);
if (!r) r = macros_call(b, l + 1);
if (!r) r = rule(b, l + 1);
if (!r) r = form_10(b, l + 1);
exit_section_(b, m, null, r);
return r;
}
// is_config config_expression
private static boolean form_0(PsiBuilder b, int l) {
if (!recursion_guard_(b, l, "form_0")) return false;
boolean r;
Marker m = enter_section_(b);
r = is_config(b, l + 1);
r = r && config_expression(b, l + 1);
exit_section_(b, m, null, r);
return r;
}
// !<<eofOrSpace>>
private static boolean form_10(PsiBuilder b, int l) {
if (!recursion_guard_(b, l, "form_10")) return false;
boolean r;
Marker m = enter_section_(b, l, _NOT_);
r = !eofOrSpace(b, l + 1);
exit_section_(b, l, m, r, false, null);
return r;
}
/* ********************************************************** */
// !('+' | '-' | '<<' | '?' | '[' | '{' | atom_name | single_quote | bnot | char | float | integer | not | string | var | '#'| '.')
static boolean form_recover(PsiBuilder b, int l) {
if (!recursion_guard_(b, l, "form_recover")) return false;
boolean r;
Marker m = enter_section_(b, l, _NOT_);
r = !form_recover_0(b, l + 1);
exit_section_(b, l, m, r, false, null);
return r;
}
// '+' | '-' | '<<' | '?' | '[' | '{' | atom_name | single_quote | bnot | char | float | integer | not | string | var | '#'| '.'
private static boolean form_recover_0(PsiBuilder b, int l) {
if (!recursion_guard_(b, l, "form_recover_0")) return false;
boolean r;
Marker m = enter_section_(b);
r = consumeToken(b, ERL_OP_PLUS);
if (!r) r = consumeToken(b, ERL_OP_MINUS);
if (!r) r = consumeToken(b, ERL_BIN_START);
if (!r) r = consumeToken(b, ERL_QMARK);
if (!r) r = consumeToken(b, ERL_BRACKET_LEFT);
if (!r) r = consumeToken(b, ERL_CURLY_LEFT);
if (!r) r = consumeToken(b, ERL_ATOM_NAME);
if (!r) r = consumeToken(b, ERL_SINGLE_QUOTE);
if (!r) r = consumeToken(b, ERL_BNOT);
if (!r) r = consumeToken(b, ERL_CHAR);
if (!r) r = consumeToken(b, ERL_FLOAT);
if (!r) r = consumeToken(b, ERL_INTEGER);
if (!r) r = consumeToken(b, ERL_NOT);
if (!r) r = consumeToken(b, ERL_STRING);
if (!r) r = consumeToken(b, ERL_VAR);
if (!r) r = consumeToken(b, ERL_RADIX);
if (!r) r = consumeToken(b, ERL_DOT);
exit_section_(b, m, null, r);
return r;
}
/* ********************************************************** */
// form period
static boolean form_with_period(PsiBuilder b, int l) {
if (!recursion_guard_(b, l, "form_with_period")) return false;
boolean r, p;
Marker m = enter_section_(b, l, _NONE_);
r = form(b, l + 1);
p = r; // pin = 1
r = r && period(b, l + 1);
exit_section_(b, l, m, r, p, form_recover_parser_);
return r || p;
}
/* ********************************************************** */
// console_expression | application_file_expression | form_with_period *
static boolean forms(PsiBuilder b, int l) {
if (!recursion_guard_(b, l, "forms")) return false;
boolean r;
Marker m = enter_section_(b);
r = console_expression(b, l + 1);
if (!r) r = application_file_expression(b, l + 1);
if (!r) r = forms_2(b, l + 1);
exit_section_(b, m, null, r);
return r;
}
// form_with_period *
private static boolean forms_2(PsiBuilder b, int l) {
if (!recursion_guard_(b, l, "forms_2")) return false;
int c = current_position_(b);
while (true) {
if (!form_with_period(b, l + 1)) break;
if (!empty_element_parsed_guard_(b, "forms_2", c)) break;
c = current_position_(b);
}
return true;
}
/* ********************************************************** */
// fun_name? argument_definition_list clause_guard? clause_body
public static boolean fun_clause(PsiBuilder b, int l) {
if (!recursion_guard_(b, l, "fun_clause")) return false;
if (!nextTokenIs(b, "<fun clause>", ERL_PAR_LEFT, ERL_VAR)) return false;
boolean r, p;
Marker m = enter_section_(b, l, _NONE_, ERL_FUN_CLAUSE, "<fun clause>");
r = fun_clause_0(b, l + 1);
r = r && argument_definition_list(b, l + 1);
p = r; // pin = 2
r = r && report_error_(b, fun_clause_2(b, l + 1));
r = p && clause_body(b, l + 1) && r;
exit_section_(b, l, m, r, p, null);
return r || p;
}
// fun_name?
private static boolean fun_clause_0(PsiBuilder b, int l) {
if (!recursion_guard_(b, l, "fun_clause_0")) return false;
fun_name(b, l + 1);
return true;
}
// clause_guard?
private static boolean fun_clause_2(PsiBuilder b, int l) {
if (!recursion_guard_(b, l, "fun_clause_2")) return false;
clause_guard(b, l + 1);
return true;
}
/* ********************************************************** */
// fun_clause (';' fun_clause)*
public static boolean fun_clauses(PsiBuilder b, int l) {
if (!recursion_guard_(b, l, "fun_clauses")) return false;
if (!nextTokenIs(b, "<fun clauses>", ERL_PAR_LEFT, ERL_VAR)) return false;
boolean r, p;
Marker m = enter_section_(b, l, _NONE_, ERL_FUN_CLAUSES, "<fun clauses>");
r = fun_clause(b, l + 1);
p = r; // pin = 1
r = r && fun_clauses_1(b, l + 1);
exit_section_(b, l, m, r, p, null);
return r || p;
}
// (';' fun_clause)*
private static boolean fun_clauses_1(PsiBuilder b, int l) {
if (!recursion_guard_(b, l, "fun_clauses_1")) return false;
int c = current_position_(b);
while (true) {
if (!fun_clauses_1_0(b, l + 1)) break;
if (!empty_element_parsed_guard_(b, "fun_clauses_1", c)) break;
c = current_position_(b);
}
return true;
}
// ';' fun_clause
private static boolean fun_clauses_1_0(PsiBuilder b, int l) {
if (!recursion_guard_(b, l, "fun_clauses_1_0")) return false;
boolean r, p;
Marker m = enter_section_(b, l, _NONE_);
r = consumeToken(b, ERL_SEMI);
p = r; // pin = 1
r = r && fun_clause(b, l + 1);
exit_section_(b, l, m, r, p, null);
return r || p;
}
/* ********************************************************** */
// fun (fun_expression_block | fun_expression_lambda)
public static boolean fun_expression(PsiBuilder b, int l) {
if (!recursion_guard_(b, l, "fun_expression")) return false;
if (!nextTokenIs(b, ERL_FUN)) return false;
boolean r, p;
Marker m = enter_section_(b, l, _NONE_, ERL_FUN_EXPRESSION, "<expression>");
r = consumeToken(b, ERL_FUN);
p = r; // pin = 1
r = r && fun_expression_1(b, l + 1);
exit_section_(b, l, m, r, p, null);
return r || p;
}
// fun_expression_block | fun_expression_lambda
private static boolean fun_expression_1(PsiBuilder b, int l) {
if (!recursion_guard_(b, l, "fun_expression_1")) return false;
boolean r;
Marker m = enter_section_(b);
r = fun_expression_block(b, l + 1);
if (!r) r = fun_expression_lambda(b, l + 1);
exit_section_(b, m, null, r);
return r;
}
/* ********************************************************** */
// fun_clauses end
static boolean fun_expression_block(PsiBuilder b, int l) {
if (!recursion_guard_(b, l, "fun_expression_block")) return false;
if (!nextTokenIs(b, "", ERL_PAR_LEFT, ERL_VAR)) return false;
boolean r, p;
Marker m = enter_section_(b, l, _NONE_);
r = fun_clauses(b, l + 1);
p = r; // pin = 1
r = r && consumeToken(b, ERL_END);
exit_section_(b, l, m, r, p, null);
return r || p;
}
/* ********************************************************** */
// [(module_ref | q_var) ':'] (function_with_arity | function_with_arity_variables)
static boolean fun_expression_lambda(PsiBuilder b, int l) {
if (!recursion_guard_(b, l, "fun_expression_lambda")) return false;
boolean r;
Marker m = enter_section_(b);
r = fun_expression_lambda_0(b, l + 1);
r = r && fun_expression_lambda_1(b, l + 1);
exit_section_(b, m, null, r);
return r;
}
// [(module_ref | q_var) ':']
private static boolean fun_expression_lambda_0(PsiBuilder b, int l) {
if (!recursion_guard_(b, l, "fun_expression_lambda_0")) return false;
fun_expression_lambda_0_0(b, l + 1);
return true;
}
// (module_ref | q_var) ':'
private static boolean fun_expression_lambda_0_0(PsiBuilder b, int l) {
if (!recursion_guard_(b, l, "fun_expression_lambda_0_0")) return false;
boolean r;
Marker m = enter_section_(b);
r = fun_expression_lambda_0_0_0(b, l + 1);
r = r && consumeToken(b, ERL_COLON);
exit_section_(b, m, null, r);
return r;
}
// module_ref | q_var
private static boolean fun_expression_lambda_0_0_0(PsiBuilder b, int l) {
if (!recursion_guard_(b, l, "fun_expression_lambda_0_0_0")) return false;
boolean r;
Marker m = enter_section_(b);
r = module_ref(b, l + 1);
if (!r) r = q_var(b, l + 1);
exit_section_(b, m, null, r);
return r;
}
// function_with_arity | function_with_arity_variables
private static boolean fun_expression_lambda_1(PsiBuilder b, int l) {
if (!recursion_guard_(b, l, "fun_expression_lambda_1")) return false;
boolean r;
Marker m = enter_section_(b);
r = function_with_arity(b, l + 1);
if (!r) r = function_with_arity_variables(b, l + 1);
exit_section_(b, m, null, r);
return r;
}
/* ********************************************************** */
// fun_name_var
public static boolean fun_name(PsiBuilder b, int l) {
if (!recursion_guard_(b, l, "fun_name")) return false;
if (!nextTokenIs(b, ERL_VAR)) return false;
boolean r;
Marker m = enter_section_(b);
r = fun_name_var(b, l + 1);
exit_section_(b, m, ERL_ARGUMENT_DEFINITION, r);
return r;
}
/* ********************************************************** */
// q_var
public static boolean fun_name_var(PsiBuilder b, int l) {
if (!recursion_guard_(b, l, "fun_name_var")) return false;
if (!nextTokenIs(b, ERL_VAR)) return false;
boolean r;
Marker m = enter_section_(b);
r = q_var(b, l + 1);
exit_section_(b, m, ERL_MAX_EXPRESSION, r);
return r;
}
/* ********************************************************** */
// fun_type_arguments top_type_clause
public static boolean fun_type(PsiBuilder b, int l) {
if (!recursion_guard_(b, l, "fun_type")) return false;
if (!nextTokenIs(b, ERL_PAR_LEFT)) return false;
boolean r, p;
Marker m = enter_section_(b, l, _NONE_, ERL_FUN_TYPE, "<type>");
r = fun_type_arguments(b, l + 1);
p = r; // pin = 1
r = r && top_type_clause(b, l + 1);
exit_section_(b, l, m, r, p, null);
return r || p;
}
/* ********************************************************** */
// '(' ('...' | top_type_list?) ')' top_type_clause
public static boolean fun_type_100_t(PsiBuilder b, int l) {
if (!recursion_guard_(b, l, "fun_type_100_t")) return false;
if (!nextTokenIs(b, ERL_PAR_LEFT)) return false;
boolean r, p;
Marker m = enter_section_(b, l, _NONE_, ERL_FUN_TYPE_100_T, "<type>");
r = consumeToken(b, ERL_PAR_LEFT);
p = r; // pin = 1
r = r && report_error_(b, fun_type_100_t_1(b, l + 1));
r = p && report_error_(b, consumeToken(b, ERL_PAR_RIGHT)) && r;
r = p && top_type_clause(b, l + 1) && r;
exit_section_(b, l, m, r, p, null);
return r || p;
}
// '...' | top_type_list?
private static boolean fun_type_100_t_1(PsiBuilder b, int l) {
if (!recursion_guard_(b, l, "fun_type_100_t_1")) return false;
boolean r;
Marker m = enter_section_(b);
r = consumeToken(b, ERL_DOT_DOT_DOT);
if (!r) r = fun_type_100_t_1_1(b, l + 1);
exit_section_(b, m, null, r);
return r;
}
// top_type_list?
private static boolean fun_type_100_t_1_1(PsiBuilder b, int l) {
if (!recursion_guard_(b, l, "fun_type_100_t_1_1")) return false;
top_type_list(b, l + 1);
return true;
}
/* ********************************************************** */
// '(' top_type_list? ')'
public static boolean fun_type_arguments(PsiBuilder b, int l) {
if (!recursion_guard_(b, l, "fun_type_arguments")) return false;
if (!nextTokenIs(b, ERL_PAR_LEFT)) return false;
boolean r, p;
Marker m = enter_section_(b, l, _NONE_, ERL_FUN_TYPE_ARGUMENTS, null);
r = consumeToken(b, ERL_PAR_LEFT);
p = r; // pin = 1
r = r && report_error_(b, fun_type_arguments_1(b, l + 1));
r = p && consumeToken(b, ERL_PAR_RIGHT) && r;
exit_section_(b, l, m, r, p, null);
return r || p;
}
// top_type_list?
private static boolean fun_type_arguments_1(PsiBuilder b, int l) {
if (!recursion_guard_(b, l, "fun_type_arguments_1")) return false;
top_type_list(b, l + 1);
return true;
}
/* ********************************************************** */
// [module_ref ':'] spec_fun '::'? type_sigs_list
public static boolean fun_type_sigs(PsiBuilder b, int l) {
if (!recursion_guard_(b, l, "fun_type_sigs")) return false;
boolean r, p;
Marker m = enter_section_(b, l, _NONE_, ERL_FUN_TYPE_SIGS, "<fun type sigs>");
r = fun_type_sigs_0(b, l + 1);
r = r && spec_fun(b, l + 1);
p = r; // pin = 2
r = r && report_error_(b, fun_type_sigs_2(b, l + 1));
r = p && type_sigs_list(b, l + 1) && r;
exit_section_(b, l, m, r, p, null);
return r || p;
}
// [module_ref ':']
private static boolean fun_type_sigs_0(PsiBuilder b, int l) {
if (!recursion_guard_(b, l, "fun_type_sigs_0")) return false;
fun_type_sigs_0_0(b, l + 1);
return true;
}
// module_ref ':'
private static boolean fun_type_sigs_0_0(PsiBuilder b, int l) {
if (!recursion_guard_(b, l, "fun_type_sigs_0_0")) return false;
boolean r;
Marker m = enter_section_(b);
r = module_ref(b, l + 1);
r = r && consumeToken(b, ERL_COLON);
exit_section_(b, m, null, r);
return r;
}
// '::'?
private static boolean fun_type_sigs_2(PsiBuilder b, int l) {
if (!recursion_guard_(b, l, "fun_type_sigs_2")) return false;
consumeToken(b, ERL_COLON_COLON);
return true;
}
/* ********************************************************** */
// '(' fun_type_sigs ')'
public static boolean fun_type_sigs_braces(PsiBuilder b, int l) {
if (!recursion_guard_(b, l, "fun_type_sigs_braces")) return false;
if (!nextTokenIs(b, ERL_PAR_LEFT)) return false;
boolean r, p;
Marker m = enter_section_(b, l, _NONE_, ERL_FUN_TYPE_SIGS_BRACES, null);
r = consumeToken(b, ERL_PAR_LEFT);
p = r; // pin = 1
r = r && report_error_(b, fun_type_sigs(b, l + 1));
r = p && consumeToken(b, ERL_PAR_RIGHT) && r;
exit_section_(b, l, m, r, p, null);
return r || p;
}
/* ********************************************************** */
// function_clause (';' function_clause)*
public static boolean function(PsiBuilder b, int l) {
if (!recursion_guard_(b, l, "function")) return false;
boolean r, p;
Marker m = enter_section_(b, l, _NONE_, ERL_FUNCTION, "<function>");
r = function_clause(b, l + 1);
p = r; // pin = 1
r = r && function_1(b, l + 1);
exit_section_(b, l, m, r, p, null);
return r || p;
}
// (';' function_clause)*
private static boolean function_1(PsiBuilder b, int l) {
if (!recursion_guard_(b, l, "function_1")) return false;
int c = current_position_(b);
while (true) {
if (!function_1_0(b, l + 1)) break;
if (!empty_element_parsed_guard_(b, "function_1", c)) break;
c = current_position_(b);
}
return true;
}
// ';' function_clause
private static boolean function_1_0(PsiBuilder b, int l) {
if (!recursion_guard_(b, l, "function_1_0")) return false;
boolean r, p;
Marker m = enter_section_(b, l, _NONE_);
r = consumeToken(b, ERL_SEMI);
p = r; // pin = 1
r = r && function_clause(b, l + 1);
exit_section_(b, l, m, r, p, null);
return r || p;
}
/* ********************************************************** */
// plain_function_clause | maybe_macro_function_clause
public static boolean function_clause(PsiBuilder b, int l) {
if (!recursion_guard_(b, l, "function_clause")) return false;
boolean r;
Marker m = enter_section_(b, l, _NONE_, ERL_FUNCTION_CLAUSE, "<function clause>");
r = plain_function_clause(b, l + 1);
if (!r) r = maybe_macro_function_clause(b, l + 1);
exit_section_(b, l, m, r, false, null);
return r;
}
/* ********************************************************** */
// q_atom argument_definition_list
static boolean function_clause_head(PsiBuilder b, int l) {
if (!recursion_guard_(b, l, "function_clause_head")) return false;
boolean r;
Marker m = enter_section_(b);
r = q_atom(b, l + 1);
r = r && argument_definition_list(b, l + 1);
exit_section_(b, m, null, r);
return r;
}
/* ********************************************************** */
// q_atom '/' integer
public static boolean function_with_arity(PsiBuilder b, int l) {
if (!recursion_guard_(b, l, "function_with_arity")) return false;
boolean r, p;
Marker m = enter_section_(b, l, _NONE_, ERL_FUNCTION_WITH_ARITY, "<function with arity>");
r = q_atom(b, l + 1);
p = r; // pin = 1
r = r && report_error_(b, consumeToken(b, ERL_OP_AR_DIV));
r = p && consumeToken(b, ERL_INTEGER) && r;
exit_section_(b, l, m, r, p, null);
return r || p;
}
/* ********************************************************** */
// q_var '/' (integer|q_var)
public static boolean function_with_arity_variables(PsiBuilder b, int l) {
if (!recursion_guard_(b, l, "function_with_arity_variables")) return false;
if (!nextTokenIs(b, ERL_VAR)) return false;
boolean r, p;
Marker m = enter_section_(b, l, _NONE_, ERL_FUNCTION_WITH_ARITY_VARIABLES, null);
r = q_var(b, l + 1);
p = r; // pin = 1
r = r && report_error_(b, consumeToken(b, ERL_OP_AR_DIV));
r = p && function_with_arity_variables_2(b, l + 1) && r;
exit_section_(b, l, m, r, p, null);
return r || p;
}
// integer|q_var
private static boolean function_with_arity_variables_2(PsiBuilder b, int l) {
if (!recursion_guard_(b, l, "function_with_arity_variables_2")) return false;
boolean r;
Marker m = enter_section_(b);
r = consumeToken(b, ERL_INTEGER);
if (!r) r = q_var(b, l + 1);
exit_section_(b, m, null, r);
return r;
}
/* ********************************************************** */
// exprs (';' exprs)*
public static boolean guard(PsiBuilder b, int l) {
if (!recursion_guard_(b, l, "guard")) return false;
boolean r, p;
Marker m = enter_section_(b, l, _NONE_, ERL_GUARD, "<guard>");
r = exprs(b, l + 1);
p = r; // pin = 1
r = r && guard_1(b, l + 1);
exit_section_(b, l, m, r, p, null);
return r || p;
}
// (';' exprs)*
private static boolean guard_1(PsiBuilder b, int l) {
if (!recursion_guard_(b, l, "guard_1")) return false;
int c = current_position_(b);
while (true) {
if (!guard_1_0(b, l + 1)) break;
if (!empty_element_parsed_guard_(b, "guard_1", c)) break;
c = current_position_(b);
}
return true;
}
// ';' exprs
private static boolean guard_1_0(PsiBuilder b, int l) {
if (!recursion_guard_(b, l, "guard_1_0")) return false;
boolean r, p;
Marker m = enter_section_(b, l, _NONE_);
r = consumeToken(b, ERL_SEMI);
p = r; // pin = 1
r = r && exprs(b, l + 1);
exit_section_(b, l, m, r, p, null);
return r || p;
}
/* ********************************************************** */
// <<guarded guard>>
static boolean guard_with_mode(PsiBuilder b, int l) {
return guarded(b, l + 1, guard_parser_);
}
/* ********************************************************** */
// <<enterMode "GUARD">> (<<p1>> <<exitMode "GUARD">>|<<exitMode "GUARD">> !())
static boolean guarded(PsiBuilder b, int l, final Parser _p1) {
if (!recursion_guard_(b, l, "guarded")) return false;
boolean r;
Marker m = enter_section_(b);
r = enterMode(b, l + 1, "GUARD");
r = r && guarded_1(b, l + 1, _p1);
exit_section_(b, m, null, r);
return r;
}
// <<p1>> <<exitMode "GUARD">>|<<exitMode "GUARD">> !()
private static boolean guarded_1(PsiBuilder b, int l, final Parser _p1) {
if (!recursion_guard_(b, l, "guarded_1")) return false;
boolean r;
Marker m = enter_section_(b);
r = guarded_1_0(b, l + 1, _p1);
if (!r) r = guarded_1_1(b, l + 1);
exit_section_(b, m, null, r);
return r;
}
// <<p1>> <<exitMode "GUARD">>
private static boolean guarded_1_0(PsiBuilder b, int l, final Parser _p1) {
if (!recursion_guard_(b, l, "guarded_1_0")) return false;
boolean r;
Marker m = enter_section_(b);
r = _p1.parse(b, l);
r = r && exitMode(b, l + 1, "GUARD");
exit_section_(b, m, null, r);
return r;
}
// <<exitMode "GUARD">> !()
private static boolean guarded_1_1(PsiBuilder b, int l) {
if (!recursion_guard_(b, l, "guarded_1_1")) return false;
boolean r;
Marker m = enter_section_(b);
r = exitMode(b, l + 1, "GUARD");
r = r && guarded_1_1_1(b, l + 1);
exit_section_(b, m, null, r);
return r;
}
// !()
private static boolean guarded_1_1_1(PsiBuilder b, int l) {
if (!recursion_guard_(b, l, "guarded_1_1_1")) return false;
boolean r;
Marker m = enter_section_(b, l, _NOT_);
r = !guarded_1_1_1_0(b, l + 1);
exit_section_(b, l, m, r, false, null);
return r;
}
// ()
private static boolean guarded_1_1_1_0(PsiBuilder b, int l) {
return true;
}
/* ********************************************************** */
// guard_with_mode clause_body
public static boolean if_clause(PsiBuilder b, int l) {
if (!recursion_guard_(b, l, "if_clause")) return false;
boolean r, p;
Marker m = enter_section_(b, l, _NONE_, ERL_IF_CLAUSE, "<if clause>");
r = guard_with_mode(b, l + 1);
p = r; // pin = 1
r = r && clause_body(b, l + 1);
exit_section_(b, l, m, r, p, null);
return r || p;
}
/* ********************************************************** */
// if_clause (';' if_clause)*
static boolean if_clauses(PsiBuilder b, int l) {
if (!recursion_guard_(b, l, "if_clauses")) return false;
boolean r, p;
Marker m = enter_section_(b, l, _NONE_);
r = if_clause(b, l + 1);
p = r; // pin = 1
r = r && if_clauses_1(b, l + 1);
exit_section_(b, l, m, r, p, null);
return r || p;
}
// (';' if_clause)*
private static boolean if_clauses_1(PsiBuilder b, int l) {
if (!recursion_guard_(b, l, "if_clauses_1")) return false;
int c = current_position_(b);
while (true) {
if (!if_clauses_1_0(b, l + 1)) break;
if (!empty_element_parsed_guard_(b, "if_clauses_1", c)) break;
c = current_position_(b);
}
return true;
}
// ';' if_clause
private static boolean if_clauses_1_0(PsiBuilder b, int l) {
if (!recursion_guard_(b, l, "if_clauses_1_0")) return false;
boolean r, p;
Marker m = enter_section_(b, l, _NONE_);
r = consumeToken(b, ERL_SEMI);
p = r; // pin = 1
r = r && if_clause(b, l + 1);
exit_section_(b, l, m, r, p, null);
return r || p;
}
/* ********************************************************** */
// if if_clauses end
public static boolean if_expression(PsiBuilder b, int l) {
if (!recursion_guard_(b, l, "if_expression")) return false;
if (!nextTokenIs(b, ERL_IF)) return false;
boolean r, p;
Marker m = enter_section_(b, l, _NONE_, ERL_IF_EXPRESSION, "<expression>");
r = consumeToken(b, ERL_IF);
p = r; // pin = 1
r = r && report_error_(b, if_clauses(b, l + 1));
r = p && consumeToken(b, ERL_END) && r;
exit_section_(b, l, m, r, p, null);
return r || p;
}
/* ********************************************************** */
// &('ifdef'|'ifndef'|'undef') atom_name '(' macros_name ')'
public static boolean ifdef_ifndef_undef_attribute(PsiBuilder b, int l) {
if (!recursion_guard_(b, l, "ifdef_ifndef_undef_attribute")) return false;
boolean r, p;
Marker m = enter_section_(b, l, _NONE_, ERL_ATOM_ATTRIBUTE, "<attribute>");
r = ifdef_ifndef_undef_attribute_0(b, l + 1);
r = r && consumeToken(b, ERL_ATOM_NAME);
p = r; // pin = 2
r = r && report_error_(b, consumeToken(b, ERL_PAR_LEFT));
r = p && report_error_(b, macros_name(b, l + 1)) && r;
r = p && consumeToken(b, ERL_PAR_RIGHT) && r;
exit_section_(b, l, m, r, p, null);
return r || p;
}
// &('ifdef'|'ifndef'|'undef')
private static boolean ifdef_ifndef_undef_attribute_0(PsiBuilder b, int l) {
if (!recursion_guard_(b, l, "ifdef_ifndef_undef_attribute_0")) return false;
boolean r;
Marker m = enter_section_(b, l, _AND_);
r = ifdef_ifndef_undef_attribute_0_0(b, l + 1);
exit_section_(b, l, m, r, false, null);
return r;
}
// 'ifdef'|'ifndef'|'undef'
private static boolean ifdef_ifndef_undef_attribute_0_0(PsiBuilder b, int l) {
if (!recursion_guard_(b, l, "ifdef_ifndef_undef_attribute_0_0")) return false;
boolean r;
Marker m = enter_section_(b);
r = consumeToken(b, "ifdef");
if (!r) r = consumeToken(b, "ifndef");
if (!r) r = consumeToken(b, "undef");
exit_section_(b, m, null, r);
return r;
}
/* ********************************************************** */
// 'import' '(' module_ref ',' import_functions ')'
public static boolean import_directive(PsiBuilder b, int l) {
if (!recursion_guard_(b, l, "import_directive")) return false;
boolean r, p;
Marker m = enter_section_(b, l, _NONE_, ERL_IMPORT_DIRECTIVE, "<import directive>");
r = consumeToken(b, "import");
p = r; // pin = 1
r = r && report_error_(b, consumeToken(b, ERL_PAR_LEFT));
r = p && report_error_(b, module_ref(b, l + 1)) && r;
r = p && report_error_(b, consumeToken(b, ERL_COMMA)) && r;
r = p && report_error_(b, import_functions(b, l + 1)) && r;
r = p && consumeToken(b, ERL_PAR_RIGHT) && r;
exit_section_(b, l, m, r, p, null);
return r || p;
}
/* ********************************************************** */
// q_atom '/' integer
public static boolean import_function(PsiBuilder b, int l) {
if (!recursion_guard_(b, l, "import_function")) return false;
boolean r, p;
Marker m = enter_section_(b, l, _NONE_, ERL_IMPORT_FUNCTION, "<import function>");
r = q_atom(b, l + 1);
p = r; // pin = 1
r = r && report_error_(b, consumeToken(b, ERL_OP_AR_DIV));
r = p && consumeToken(b, ERL_INTEGER) && r;
exit_section_(b, l, m, r, p, null);
return r || p;
}
/* ********************************************************** */
// import_function (',' import_function)*
static boolean import_function_list(PsiBuilder b, int l) {
if (!recursion_guard_(b, l, "import_function_list")) return false;
boolean r, p;
Marker m = enter_section_(b, l, _NONE_);
r = import_function(b, l + 1);
p = r; // pin = 1
r = r && import_function_list_1(b, l + 1);
exit_section_(b, l, m, r, p, null);
return r || p;
}
// (',' import_function)*
private static boolean import_function_list_1(PsiBuilder b, int l) {
if (!recursion_guard_(b, l, "import_function_list_1")) return false;
int c = current_position_(b);
while (true) {
if (!import_function_list_1_0(b, l + 1)) break;
if (!empty_element_parsed_guard_(b, "import_function_list_1", c)) break;
c = current_position_(b);
}
return true;
}
// ',' import_function
private static boolean import_function_list_1_0(PsiBuilder b, int l) {
if (!recursion_guard_(b, l, "import_function_list_1_0")) return false;
boolean r, p;
Marker m = enter_section_(b, l, _NONE_);
r = consumeToken(b, ERL_COMMA);
p = r; // pin = 1
r = r && import_function(b, l + 1);
exit_section_(b, l, m, r, p, null);
return r || p;
}
/* ********************************************************** */
// '[' import_function_list? ']'
public static boolean import_functions(PsiBuilder b, int l) {
if (!recursion_guard_(b, l, "import_functions")) return false;
if (!nextTokenIs(b, ERL_BRACKET_LEFT)) return false;
boolean r;
Marker m = enter_section_(b);
r = consumeToken(b, ERL_BRACKET_LEFT);
r = r && import_functions_1(b, l + 1);
r = r && consumeToken(b, ERL_BRACKET_RIGHT);
exit_section_(b, m, ERL_IMPORT_FUNCTIONS, r);
return r;
}
// import_function_list?
private static boolean import_functions_1(PsiBuilder b, int l) {
if (!recursion_guard_(b, l, "import_functions_1")) return false;
import_function_list(b, l + 1);
return true;
}
/* ********************************************************** */
// '-' 'include' '(' include_string ')'
public static boolean include(PsiBuilder b, int l) {
if (!recursion_guard_(b, l, "include")) return false;
if (!nextTokenIs(b, ERL_OP_MINUS)) return false;
boolean r, p;
Marker m = enter_section_(b, l, _NONE_, ERL_INCLUDE, null);
r = consumeToken(b, ERL_OP_MINUS);
r = r && consumeToken(b, "include");
p = r; // pin = 2
r = r && report_error_(b, consumeToken(b, ERL_PAR_LEFT));
r = p && report_error_(b, include_string(b, l + 1)) && r;
r = p && consumeToken(b, ERL_PAR_RIGHT) && r;
exit_section_(b, l, m, r, p, null);
return r || p;
}
/* ********************************************************** */
// '-' 'include_lib' '(' include_string ')'
public static boolean include_lib(PsiBuilder b, int l) {
if (!recursion_guard_(b, l, "include_lib")) return false;
if (!nextTokenIs(b, ERL_OP_MINUS)) return false;
boolean r, p;
Marker m = enter_section_(b, l, _NONE_, ERL_INCLUDE_LIB, null);
r = consumeToken(b, ERL_OP_MINUS);
r = r && consumeToken(b, "include_lib");
p = r; // pin = 2
r = r && report_error_(b, consumeToken(b, ERL_PAR_LEFT));
r = p && report_error_(b, include_string(b, l + 1)) && r;
r = p && consumeToken(b, ERL_PAR_RIGHT) && r;
exit_section_(b, l, m, r, p, null);
return r || p;
}
/* ********************************************************** */
// string
public static boolean include_string(PsiBuilder b, int l) {
if (!recursion_guard_(b, l, "include_string")) return false;
if (!nextTokenIs(b, ERL_STRING)) return false;
boolean r;
Marker m = enter_section_(b);
r = consumeToken(b, ERL_STRING);
exit_section_(b, m, ERL_INCLUDE_STRING, r);
return r;
}
/* ********************************************************** */
// '-'? (integer | macros argument_list?)
public static boolean int_type(PsiBuilder b, int l) {
if (!recursion_guard_(b, l, "int_type")) return false;
boolean r;
Marker m = enter_section_(b, l, _NONE_, ERL_INT_TYPE, "<type>");
r = int_type_0(b, l + 1);
r = r && int_type_1(b, l + 1);
exit_section_(b, l, m, r, false, null);
return r;
}
// '-'?
private static boolean int_type_0(PsiBuilder b, int l) {
if (!recursion_guard_(b, l, "int_type_0")) return false;
consumeToken(b, ERL_OP_MINUS);
return true;
}
// integer | macros argument_list?
private static boolean int_type_1(PsiBuilder b, int l) {
if (!recursion_guard_(b, l, "int_type_1")) return false;
boolean r;
Marker m = enter_section_(b);
r = consumeToken(b, ERL_INTEGER);
if (!r) r = int_type_1_1(b, l + 1);
exit_section_(b, m, null, r);
return r;
}
// macros argument_list?
private static boolean int_type_1_1(PsiBuilder b, int l) {
if (!recursion_guard_(b, l, "int_type_1_1")) return false;
boolean r;
Marker m = enter_section_(b);
r = macros(b, l + 1);
r = r && int_type_1_1_1(b, l + 1);
exit_section_(b, m, null, r);
return r;
}
// argument_list?
private static boolean int_type_1_1_1(PsiBuilder b, int l) {
if (!recursion_guard_(b, l, "int_type_1_1_1")) return false;
argument_list(b, l + 1);
return true;
}
/* ********************************************************** */
// &<<isApplicationLanguage>>
static boolean is_app(PsiBuilder b, int l) {
if (!recursion_guard_(b, l, "is_app")) return false;
if (!nextTokenIs(b, ERL_CURLY_LEFT)) return false;
boolean r;
Marker m = enter_section_(b, l, _AND_);
r = isApplicationLanguage(b, l + 1);
exit_section_(b, l, m, r, false, null);
return r;
}
/* ********************************************************** */
// &<<isConfigLanguage>>
static boolean is_config(PsiBuilder b, int l) {
if (!recursion_guard_(b, l, "is_config")) return false;
boolean r;
Marker m = enter_section_(b, l, _AND_);
r = isConfigLanguage(b, l + 1);
exit_section_(b, l, m, r, false, null);
return r;
}
/* ********************************************************** */
// &<<isConsole>>
static boolean is_console(PsiBuilder b, int l) {
if (!recursion_guard_(b, l, "is_console")) return false;
boolean r;
Marker m = enter_section_(b, l, _AND_);
r = isConsole(b, l + 1);
exit_section_(b, l, m, r, false, null);
return r;
}
/* ********************************************************** */
// [ lc_generator_definition ('<-' | '<=')] expression
public static boolean lc_expression(PsiBuilder b, int l) {
if (!recursion_guard_(b, l, "lc_expression")) return false;
boolean r;
Marker m = enter_section_(b, l, _COLLAPSE_, ERL_LC_EXPRESSION, "<expression>");
r = lc_expression_0(b, l + 1);
r = r && expression(b, l + 1, -1);
exit_section_(b, l, m, r, false, null);
return r;
}
// [ lc_generator_definition ('<-' | '<=')]
private static boolean lc_expression_0(PsiBuilder b, int l) {
if (!recursion_guard_(b, l, "lc_expression_0")) return false;
lc_expression_0_0(b, l + 1);
return true;
}
// lc_generator_definition ('<-' | '<=')
private static boolean lc_expression_0_0(PsiBuilder b, int l) {
if (!recursion_guard_(b, l, "lc_expression_0_0")) return false;
boolean r;
Marker m = enter_section_(b);
r = lc_generator_definition(b, l + 1);
r = r && lc_expression_0_0_1(b, l + 1);
exit_section_(b, m, null, r);
return r;
}
// '<-' | '<='
private static boolean lc_expression_0_0_1(PsiBuilder b, int l) {
if (!recursion_guard_(b, l, "lc_expression_0_0_1")) return false;
boolean r;
Marker m = enter_section_(b);
r = consumeToken(b, ERL_OP_LT_MINUS);
if (!r) r = consumeToken(b, ERL_OP_LT_EQ);
exit_section_(b, m, null, r);
return r;
}
/* ********************************************************** */
// lc_expression (',' lc_expression)*
static boolean lc_exprs(PsiBuilder b, int l) {
if (!recursion_guard_(b, l, "lc_exprs")) return false;
boolean r, p;
Marker m = enter_section_(b, l, _NONE_);
r = lc_expression(b, l + 1);
p = r; // pin = 1
r = r && lc_exprs_1(b, l + 1);
exit_section_(b, l, m, r, p, null);
return r || p;
}
// (',' lc_expression)*
private static boolean lc_exprs_1(PsiBuilder b, int l) {
if (!recursion_guard_(b, l, "lc_exprs_1")) return false;
int c = current_position_(b);
while (true) {
if (!lc_exprs_1_0(b, l + 1)) break;
if (!empty_element_parsed_guard_(b, "lc_exprs_1", c)) break;
c = current_position_(b);
}
return true;
}
// ',' lc_expression
private static boolean lc_exprs_1_0(PsiBuilder b, int l) {
if (!recursion_guard_(b, l, "lc_exprs_1_0")) return false;
boolean r, p;
Marker m = enter_section_(b, l, _NONE_);
r = consumeToken(b, ERL_COMMA);
p = r; // pin = 1
r = r && lc_expression(b, l + 1);
exit_section_(b, l, m, r, p, null);
return r || p;
}
/* ********************************************************** */
// map_match | expression
public static boolean lc_generator_definition(PsiBuilder b, int l) {
if (!recursion_guard_(b, l, "lc_generator_definition")) return false;
boolean r;
Marker m = enter_section_(b, l, _NONE_, ERL_ARGUMENT_DEFINITION, "<lc generator definition>");
r = map_match(b, l + 1);
if (!r) r = expression(b, l + 1, -1);
exit_section_(b, l, m, r, false, null);
return r;
}
/* ********************************************************** */
// config_call_expression | qualified_expression+
static boolean left_accessors(PsiBuilder b, int l) {
if (!recursion_guard_(b, l, "left_accessors")) return false;
boolean r;
Marker m = enter_section_(b);
r = config_call_expression(b, l + 1);
if (!r) r = left_accessors_1(b, l + 1);
exit_section_(b, m, null, r);
return r;
}
// qualified_expression+
private static boolean left_accessors_1(PsiBuilder b, int l) {
if (!recursion_guard_(b, l, "left_accessors_1")) return false;
boolean r;
Marker m = enter_section_(b);
r = qualified_expression(b, l + 1);
int c = current_position_(b);
while (r) {
if (!qualified_expression(b, l + 1)) break;
if (!empty_element_parsed_guard_(b, "left_accessors_1", c)) break;
c = current_position_(b);
}
exit_section_(b, m, null, r);
return r;
}
/* ********************************************************** */
// '[' expression '||' lc_exprs ']'
public static boolean list_comprehension(PsiBuilder b, int l) {
if (!recursion_guard_(b, l, "list_comprehension")) return false;
if (!nextTokenIs(b, ERL_BRACKET_LEFT)) return false;
boolean r;
Marker m = enter_section_(b, l, _NONE_, ERL_LIST_COMPREHENSION, "<expression>");
r = consumeToken(b, ERL_BRACKET_LEFT);
r = r && expression(b, l + 1, -1);
r = r && consumeToken(b, ERL_OR_OR);
r = r && lc_exprs(b, l + 1);
r = r && consumeToken(b, ERL_BRACKET_RIGHT);
exit_section_(b, l, m, r, false, null);
return r;
}
/* ********************************************************** */
// '|' expression
static boolean list_concat(PsiBuilder b, int l) {
if (!recursion_guard_(b, l, "list_concat")) return false;
if (!nextTokenIs(b, ERL_OP_OR)) return false;
boolean r, p;
Marker m = enter_section_(b, l, _NONE_);
r = consumeToken(b, ERL_OP_OR);
p = r; // pin = 1
r = r && expression(b, l + 1, -1);
exit_section_(b, l, m, r, p, null);
return r || p;
}
/* ********************************************************** */
// '[' list_expr_or_comprehension_body? ']'
public static boolean list_expr_or_comprehension(PsiBuilder b, int l) {
if (!recursion_guard_(b, l, "list_expr_or_comprehension")) return false;
if (!nextTokenIs(b, ERL_BRACKET_LEFT)) return false;
boolean r, p;
Marker m = enter_section_(b, l, _NONE_, ERL_LIST_EXPRESSION, "<expression>");
r = consumeToken(b, ERL_BRACKET_LEFT);
p = r; // pin = 1
r = r && report_error_(b, list_expr_or_comprehension_1(b, l + 1));
r = p && consumeToken(b, ERL_BRACKET_RIGHT) && r;
exit_section_(b, l, m, r, p, null);
return r || p;
}
// list_expr_or_comprehension_body?
private static boolean list_expr_or_comprehension_1(PsiBuilder b, int l) {
if (!recursion_guard_(b, l, "list_expr_or_comprehension_1")) return false;
list_expr_or_comprehension_body(b, l + 1);
return true;
}
/* ********************************************************** */
// expression_parse_error? marked_lc_tail | expression (marked_lc_tail | list_expression_tail)
static boolean list_expr_or_comprehension_body(PsiBuilder b, int l) {
if (!recursion_guard_(b, l, "list_expr_or_comprehension_body")) return false;
boolean r;
Marker m = enter_section_(b);
r = list_expr_or_comprehension_body_0(b, l + 1);
if (!r) r = list_expr_or_comprehension_body_1(b, l + 1);
exit_section_(b, m, null, r);
return r;
}
// expression_parse_error? marked_lc_tail
private static boolean list_expr_or_comprehension_body_0(PsiBuilder b, int l) {
if (!recursion_guard_(b, l, "list_expr_or_comprehension_body_0")) return false;
boolean r;
Marker m = enter_section_(b);
r = list_expr_or_comprehension_body_0_0(b, l + 1);
r = r && marked_lc_tail(b, l + 1);
exit_section_(b, m, null, r);
return r;
}
// expression_parse_error?
private static boolean list_expr_or_comprehension_body_0_0(PsiBuilder b, int l) {
if (!recursion_guard_(b, l, "list_expr_or_comprehension_body_0_0")) return false;
expression_parse_error(b, l + 1);
return true;
}
// expression (marked_lc_tail | list_expression_tail)
private static boolean list_expr_or_comprehension_body_1(PsiBuilder b, int l) {
if (!recursion_guard_(b, l, "list_expr_or_comprehension_body_1")) return false;
boolean r;
Marker m = enter_section_(b);
r = expression(b, l + 1, -1);
r = r && list_expr_or_comprehension_body_1_1(b, l + 1);
exit_section_(b, m, null, r);
return r;
}
// marked_lc_tail | list_expression_tail
private static boolean list_expr_or_comprehension_body_1_1(PsiBuilder b, int l) {
if (!recursion_guard_(b, l, "list_expr_or_comprehension_body_1_1")) return false;
boolean r;
Marker m = enter_section_(b);
r = marked_lc_tail(b, l + 1);
if (!r) r = list_expression_tail(b, l + 1);
exit_section_(b, m, null, r);
return r;
}
/* ********************************************************** */
// '[' expression list_expression_tail? ']'
public static boolean list_expression(PsiBuilder b, int l) {
if (!recursion_guard_(b, l, "list_expression")) return false;
if (!nextTokenIs(b, ERL_BRACKET_LEFT)) return false;
boolean r;
Marker m = enter_section_(b, l, _NONE_, ERL_LIST_EXPRESSION, "<expression>");
r = consumeToken(b, ERL_BRACKET_LEFT);
r = r && expression(b, l + 1, -1);
r = r && list_expression_2(b, l + 1);
r = r && consumeToken(b, ERL_BRACKET_RIGHT);
exit_section_(b, l, m, r, false, null);
return r;
}
// list_expression_tail?
private static boolean list_expression_2(PsiBuilder b, int l) {
if (!recursion_guard_(b, l, "list_expression_2")) return false;
list_expression_tail(b, l + 1);
return true;
}
/* ********************************************************** */
// list_items? list_concat?
static boolean list_expression_tail(PsiBuilder b, int l) {
if (!recursion_guard_(b, l, "list_expression_tail")) return false;
boolean r;
Marker m = enter_section_(b);
r = list_expression_tail_0(b, l + 1);
r = r && list_expression_tail_1(b, l + 1);
exit_section_(b, m, null, r);
return r;
}
// list_items?
private static boolean list_expression_tail_0(PsiBuilder b, int l) {
if (!recursion_guard_(b, l, "list_expression_tail_0")) return false;
list_items(b, l + 1);
return true;
}
// list_concat?
private static boolean list_expression_tail_1(PsiBuilder b, int l) {
if (!recursion_guard_(b, l, "list_expression_tail_1")) return false;
list_concat(b, l + 1);
return true;
}
/* ********************************************************** */
// (',' expression)+
static boolean list_items(PsiBuilder b, int l) {
if (!recursion_guard_(b, l, "list_items")) return false;
if (!nextTokenIs(b, ERL_COMMA)) return false;
boolean r;
Marker m = enter_section_(b);
r = list_items_0(b, l + 1);
int c = current_position_(b);
while (r) {
if (!list_items_0(b, l + 1)) break;
if (!empty_element_parsed_guard_(b, "list_items", c)) break;
c = current_position_(b);
}
exit_section_(b, m, null, r);
return r;
}
// ',' expression
private static boolean list_items_0(PsiBuilder b, int l) {
if (!recursion_guard_(b, l, "list_items_0")) return false;
boolean r, p;
Marker m = enter_section_(b, l, _NONE_);
r = consumeToken(b, ERL_COMMA);
p = r; // pin = 1
r = r && expression(b, l + 1, -1);
exit_section_(b, l, m, r, p, null);
return r || p;
}
/* ********************************************************** */
// '[' <<p>>? (',' <<p>>)* ']'
public static boolean list_of(PsiBuilder b, int l, final Parser _p) {
if (!recursion_guard_(b, l, "list_of")) return false;
if (!nextTokenIs(b, ERL_BRACKET_LEFT)) return false;
boolean r, p;
Marker m = enter_section_(b, l, _NONE_, ERL_LIST_EXPRESSION, null);
r = consumeToken(b, ERL_BRACKET_LEFT);
p = r; // pin = 1
r = r && report_error_(b, list_of_1(b, l + 1, _p));
r = p && report_error_(b, list_of_2(b, l + 1, _p)) && r;
r = p && consumeToken(b, ERL_BRACKET_RIGHT) && r;
exit_section_(b, l, m, r, p, null);
return r || p;
}
// <<p>>?
private static boolean list_of_1(PsiBuilder b, int l, final Parser _p) {
if (!recursion_guard_(b, l, "list_of_1")) return false;
_p.parse(b, l);
return true;
}
// (',' <<p>>)*
private static boolean list_of_2(PsiBuilder b, int l, final Parser _p) {
if (!recursion_guard_(b, l, "list_of_2")) return false;
int c = current_position_(b);
while (true) {
if (!list_of_2_0(b, l + 1, _p)) break;
if (!empty_element_parsed_guard_(b, "list_of_2", c)) break;
c = current_position_(b);
}
return true;
}
// ',' <<p>>
private static boolean list_of_2_0(PsiBuilder b, int l, final Parser _p) {
if (!recursion_guard_(b, l, "list_of_2_0")) return false;
boolean r, p;
Marker m = enter_section_(b, l, _NONE_);
r = consumeToken(b, ERL_COMMA);
p = r; // pin = 1
r = r && _p.parse(b, l);
exit_section_(b, l, m, r, p, null);
return r || p;
}
/* ********************************************************** */
// '++' | '--'
static boolean list_op(PsiBuilder b, int l) {
if (!recursion_guard_(b, l, "list_op")) return false;
if (!nextTokenIs(b, "", ERL_OP_PLUS_PLUS, ERL_OP_MINUS_MINUS)) return false;
boolean r;
Marker m = enter_section_(b);
r = consumeToken(b, ERL_OP_PLUS_PLUS);
if (!r) r = consumeToken(b, ERL_OP_MINUS_MINUS);
exit_section_(b, m, null, r);
return r;
}
/* ********************************************************** */
// '?' macros_name
public static boolean macros(PsiBuilder b, int l) {
if (!recursion_guard_(b, l, "macros")) return false;
if (!nextTokenIs(b, ERL_QMARK)) return false;
boolean r, p;
Marker m = enter_section_(b, l, _NONE_, ERL_MACROS, null);
r = consumeToken(b, ERL_QMARK);
p = r; // pin = 1
r = r && macros_name(b, l + 1);
exit_section_(b, l, m, r, p, null);
return r || p;
}
/* ********************************************************** */
// '?''?' q_var
public static boolean macros_arg(PsiBuilder b, int l) {
if (!recursion_guard_(b, l, "macros_arg")) return false;
if (!nextTokenIs(b, ERL_QMARK)) return false;
boolean r;
Marker m = enter_section_(b);
r = consumeToken(b, ERL_QMARK);
r = r && consumeToken(b, ERL_QMARK);
r = r && q_var(b, l + 1);
exit_section_(b, m, ERL_MACROS_ARG, r);
return r;
}
/* ********************************************************** */
// expression ((',' | ';' | '->') expression)*
public static boolean macros_body(PsiBuilder b, int l) {
if (!recursion_guard_(b, l, "macros_body")) return false;
boolean r, p;
Marker m = enter_section_(b, l, _NONE_, ERL_MACROS_BODY, "<macros body>");
r = expression(b, l + 1, -1);
p = r; // pin = 1
r = r && macros_body_1(b, l + 1);
exit_section_(b, l, m, r, p, null);
return r || p;
}
// ((',' | ';' | '->') expression)*
private static boolean macros_body_1(PsiBuilder b, int l) {
if (!recursion_guard_(b, l, "macros_body_1")) return false;
int c = current_position_(b);
while (true) {
if (!macros_body_1_0(b, l + 1)) break;
if (!empty_element_parsed_guard_(b, "macros_body_1", c)) break;
c = current_position_(b);
}
return true;
}
// (',' | ';' | '->') expression
private static boolean macros_body_1_0(PsiBuilder b, int l) {
if (!recursion_guard_(b, l, "macros_body_1_0")) return false;
boolean r, p;
Marker m = enter_section_(b, l, _NONE_);
r = macros_body_1_0_0(b, l + 1);
p = r; // pin = 1
r = r && expression(b, l + 1, -1);
exit_section_(b, l, m, r, p, null);
return r || p;
}
// ',' | ';' | '->'
private static boolean macros_body_1_0_0(PsiBuilder b, int l) {
if (!recursion_guard_(b, l, "macros_body_1_0_0")) return false;
boolean r;
Marker m = enter_section_(b);
r = consumeToken(b, ERL_COMMA);
if (!r) r = consumeToken(b, ERL_SEMI);
if (!r) r = consumeToken(b, ERL_ARROW);
exit_section_(b, m, null, r);
return r;
}
/* ********************************************************** */
// &('?') generic_function_call_expression
public static boolean macros_call(PsiBuilder b, int l) {
if (!recursion_guard_(b, l, "macros_call")) return false;
boolean r, p;
Marker m = enter_section_(b, l, _NONE_, ERL_MACROS_CALL, "<macros call>");
r = macros_call_0(b, l + 1);
p = r; // pin = 1
r = r && generic_function_call_expression(b, l + 1);
exit_section_(b, l, m, r, p, macros_call_recover_parser_);
return r || p;
}
// &('?')
private static boolean macros_call_0(PsiBuilder b, int l) {
if (!recursion_guard_(b, l, "macros_call_0")) return false;
boolean r;
Marker m = enter_section_(b, l, _AND_);
r = macros_call_0_0(b, l + 1);
exit_section_(b, l, m, r, false, null);
return r;
}
// ('?')
private static boolean macros_call_0_0(PsiBuilder b, int l) {
if (!recursion_guard_(b, l, "macros_call_0_0")) return false;
boolean r;
Marker m = enter_section_(b);
r = consumeToken(b, ERL_QMARK);
exit_section_(b, m, null, r);
return r;
}
/* ********************************************************** */
// !'.'
static boolean macros_call_recover(PsiBuilder b, int l) {
if (!recursion_guard_(b, l, "macros_call_recover")) return false;
boolean r;
Marker m = enter_section_(b, l, _NOT_);
r = !consumeToken(b, ERL_DOT);
exit_section_(b, l, m, r, false, null);
return r;
}
/* ********************************************************** */
// '-' 'define' '(' macros_name argument_definition_list? ',' <<guarded macros_body>> ')'
public static boolean macros_definition(PsiBuilder b, int l) {
if (!recursion_guard_(b, l, "macros_definition")) return false;
if (!nextTokenIs(b, ERL_OP_MINUS)) return false;
boolean r, p;
Marker m = enter_section_(b, l, _NONE_, ERL_MACROS_DEFINITION, null);
r = consumeToken(b, ERL_OP_MINUS);
r = r && consumeToken(b, "define");
p = r; // pin = 2
r = r && report_error_(b, consumeToken(b, ERL_PAR_LEFT));
r = p && report_error_(b, macros_name(b, l + 1)) && r;
r = p && report_error_(b, macros_definition_4(b, l + 1)) && r;
r = p && report_error_(b, consumeToken(b, ERL_COMMA)) && r;
r = p && report_error_(b, guarded(b, l + 1, macros_body_parser_)) && r;
r = p && consumeToken(b, ERL_PAR_RIGHT) && r;
exit_section_(b, l, m, r, p, null);
return r || p;
}
// argument_definition_list?
private static boolean macros_definition_4(PsiBuilder b, int l) {
if (!recursion_guard_(b, l, "macros_definition_4")) return false;
argument_definition_list(b, l + 1);
return true;
}
/* ********************************************************** */
// atom | var
public static boolean macros_name(PsiBuilder b, int l) {
if (!recursion_guard_(b, l, "macros_name")) return false;
boolean r;
Marker m = enter_section_(b, l, _NONE_, ERL_MACROS_NAME, "<macros name>");
r = atom(b, l + 1);
if (!r) r = consumeToken(b, ERL_VAR);
exit_section_(b, l, m, r, false, null);
return r;
}
/* ********************************************************** */
// expression '=>' expression
static boolean map_assoc(PsiBuilder b, int l) {
if (!recursion_guard_(b, l, "map_assoc")) return false;
boolean r, p;
Marker m = enter_section_(b, l, _NONE_);
r = expression(b, l + 1, -1);
r = r && consumeToken(b, ERL_ASSOC);
p = r; // pin = 2
r = r && expression(b, l + 1, -1);
exit_section_(b, l, m, r, p, null);
return r || p;
}
/* ********************************************************** */
// '#' '{' <<comprehension_element map_assoc>> '||' lc_exprs '}'
public static boolean map_comprehension(PsiBuilder b, int l) {
if (!recursion_guard_(b, l, "map_comprehension")) return false;
if (!nextTokenIs(b, ERL_RADIX)) return false;
boolean r, p;
Marker m = enter_section_(b, l, _NONE_, ERL_LIST_COMPREHENSION, "<expression>");
r = consumeToken(b, ERL_RADIX);
r = r && consumeToken(b, ERL_CURLY_LEFT);
r = r && comprehension_element(b, l + 1, map_assoc_parser_);
r = r && consumeToken(b, ERL_OR_OR);
p = r; // pin = 4
r = r && report_error_(b, lc_exprs(b, l + 1));
r = p && consumeToken(b, ERL_CURLY_RIGHT) && r;
exit_section_(b, l, m, r, p, null);
return r || p;
}
/* ********************************************************** */
// map_tuple
public static boolean map_construct_expression(PsiBuilder b, int l) {
if (!recursion_guard_(b, l, "map_construct_expression")) return false;
if (!nextTokenIs(b, ERL_RADIX)) return false;
boolean r;
Marker m = enter_section_(b, l, _NONE_, ERL_MAP_EXPRESSION, "<expression>");
r = map_tuple(b, l + 1);
exit_section_(b, l, m, r, false, null);
return r;
}
/* ********************************************************** */
// map_entry (',' map_entry)*
static boolean map_entries(PsiBuilder b, int l) {
if (!recursion_guard_(b, l, "map_entries")) return false;
boolean r, p;
Marker m = enter_section_(b, l, _NONE_);
r = map_entry(b, l + 1);
p = r; // pin = 1
r = r && map_entries_1(b, l + 1);
exit_section_(b, l, m, r, p, null);
return r || p;
}
// (',' map_entry)*
private static boolean map_entries_1(PsiBuilder b, int l) {
if (!recursion_guard_(b, l, "map_entries_1")) return false;
int c = current_position_(b);
while (true) {
if (!map_entries_1_0(b, l + 1)) break;
if (!empty_element_parsed_guard_(b, "map_entries_1", c)) break;
c = current_position_(b);
}
return true;
}
// ',' map_entry
private static boolean map_entries_1_0(PsiBuilder b, int l) {
if (!recursion_guard_(b, l, "map_entries_1_0")) return false;
boolean r, p;
Marker m = enter_section_(b, l, _NONE_);
r = consumeToken(b, ERL_COMMA);
p = r; // pin = 1
r = r && map_entry(b, l + 1);
exit_section_(b, l, m, r, p, null);
return r || p;
}
/* ********************************************************** */
// expression (('=>' | ':=') expression)?
public static boolean map_entry(PsiBuilder b, int l) {
if (!recursion_guard_(b, l, "map_entry")) return false;
boolean r, p;
Marker m = enter_section_(b, l, _NONE_, ERL_MAP_ENTRY, "<map entry>");
r = expression(b, l + 1, -1);
p = r; // pin = 1
r = r && map_entry_1(b, l + 1);
exit_section_(b, l, m, r, p, tuple_recoverer_parser_);
return r || p;
}
// (('=>' | ':=') expression)?
private static boolean map_entry_1(PsiBuilder b, int l) {
if (!recursion_guard_(b, l, "map_entry_1")) return false;
map_entry_1_0(b, l + 1);
return true;
}
// ('=>' | ':=') expression
private static boolean map_entry_1_0(PsiBuilder b, int l) {
if (!recursion_guard_(b, l, "map_entry_1_0")) return false;
boolean r;
Marker m = enter_section_(b);
r = map_entry_1_0_0(b, l + 1);
r = r && expression(b, l + 1, -1);
exit_section_(b, m, null, r);
return r;
}
// '=>' | ':='
private static boolean map_entry_1_0_0(PsiBuilder b, int l) {
if (!recursion_guard_(b, l, "map_entry_1_0_0")) return false;
boolean r;
Marker m = enter_section_(b);
r = consumeToken(b, ERL_ASSOC);
if (!r) r = consumeToken(b, ERL_MATCH);
exit_section_(b, m, null, r);
return r;
}
/* ********************************************************** */
// (top_type ('=>' | ':=') top_type) | '...'
public static boolean map_entry_type(PsiBuilder b, int l) {
if (!recursion_guard_(b, l, "map_entry_type")) return false;
boolean r;
Marker m = enter_section_(b, l, _COLLAPSE_, ERL_MAP_ENTRY_TYPE, "<type>");
r = map_entry_type_0(b, l + 1);
if (!r) r = consumeToken(b, ERL_DOT_DOT_DOT);
exit_section_(b, l, m, r, false, null);
return r;
}
// top_type ('=>' | ':=') top_type
private static boolean map_entry_type_0(PsiBuilder b, int l) {
if (!recursion_guard_(b, l, "map_entry_type_0")) return false;
boolean r, p;
Marker m = enter_section_(b, l, _NONE_);
r = top_type(b, l + 1);
r = r && map_entry_type_0_1(b, l + 1);
p = r; // pin = 2
r = r && top_type(b, l + 1);
exit_section_(b, l, m, r, p, null);
return r || p;
}
// '=>' | ':='
private static boolean map_entry_type_0_1(PsiBuilder b, int l) {
if (!recursion_guard_(b, l, "map_entry_type_0_1")) return false;
boolean r;
Marker m = enter_section_(b);
r = consumeToken(b, ERL_ASSOC);
if (!r) r = consumeToken(b, ERL_MATCH);
exit_section_(b, m, null, r);
return r;
}
/* ********************************************************** */
// map_entry_type (',' map_entry_type)*
static boolean map_entry_type_list(PsiBuilder b, int l) {
if (!recursion_guard_(b, l, "map_entry_type_list")) return false;
boolean r, p;
Marker m = enter_section_(b, l, _NONE_);
r = map_entry_type(b, l + 1);
p = r; // pin = 1
r = r && map_entry_type_list_1(b, l + 1);
exit_section_(b, l, m, r, p, null);
return r || p;
}
// (',' map_entry_type)*
private static boolean map_entry_type_list_1(PsiBuilder b, int l) {
if (!recursion_guard_(b, l, "map_entry_type_list_1")) return false;
int c = current_position_(b);
while (true) {
if (!map_entry_type_list_1_0(b, l + 1)) break;
if (!empty_element_parsed_guard_(b, "map_entry_type_list_1", c)) break;
c = current_position_(b);
}
return true;
}
// ',' map_entry_type
private static boolean map_entry_type_list_1_0(PsiBuilder b, int l) {
if (!recursion_guard_(b, l, "map_entry_type_list_1_0")) return false;
boolean r, p;
Marker m = enter_section_(b, l, _NONE_);
r = consumeToken(b, ERL_COMMA);
p = r; // pin = 1
r = r && map_entry_type(b, l + 1);
exit_section_(b, l, m, r, p, null);
return r || p;
}
/* ********************************************************** */
// expression ':=' expression
static boolean map_match(PsiBuilder b, int l) {
if (!recursion_guard_(b, l, "map_match")) return false;
boolean r, p;
Marker m = enter_section_(b, l, _NONE_);
r = expression(b, l + 1, -1);
r = r && consumeToken(b, ERL_MATCH);
p = r; // pin = 2
r = r && expression(b, l + 1, -1);
exit_section_(b, l, m, r, p, null);
return r || p;
}
/* ********************************************************** */
// '#' '{' map_entries? '}'
public static boolean map_tuple(PsiBuilder b, int l) {
if (!recursion_guard_(b, l, "map_tuple")) return false;
if (!nextTokenIs(b, ERL_RADIX)) return false;
boolean r, p;
Marker m = enter_section_(b, l, _NONE_, ERL_MAP_TUPLE, null);
r = consumeToken(b, ERL_RADIX);
r = r && consumeToken(b, ERL_CURLY_LEFT);
p = r; // pin = 2
r = r && report_error_(b, map_tuple_2(b, l + 1));
r = p && consumeToken(b, ERL_CURLY_RIGHT) && r;
exit_section_(b, l, m, r, p, null);
return r || p;
}
// map_entries?
private static boolean map_tuple_2(PsiBuilder b, int l) {
if (!recursion_guard_(b, l, "map_tuple_2")) return false;
map_entries(b, l + 1);
return true;
}
/* ********************************************************** */
// '#' '{' map_entry_type_list? '}'
public static boolean map_type(PsiBuilder b, int l) {
if (!recursion_guard_(b, l, "map_type")) return false;
if (!nextTokenIs(b, ERL_RADIX)) return false;
boolean r, p;
Marker m = enter_section_(b, l, _NONE_, ERL_MAP_TYPE, "<type>");
r = consumeToken(b, ERL_RADIX);
p = r; // pin = 1
r = r && report_error_(b, consumeToken(b, ERL_CURLY_LEFT));
r = p && report_error_(b, map_type_2(b, l + 1)) && r;
r = p && consumeToken(b, ERL_CURLY_RIGHT) && r;
exit_section_(b, l, m, r, p, null);
return r || p;
}
// map_entry_type_list?
private static boolean map_type_2(PsiBuilder b, int l) {
if (!recursion_guard_(b, l, "map_type_2")) return false;
map_entry_type_list(b, l + 1);
return true;
}
/* ********************************************************** */
// '||' <<markComprehension>> lc_exprs
static boolean marked_lc_tail(PsiBuilder b, int l) {
if (!recursion_guard_(b, l, "marked_lc_tail")) return false;
if (!nextTokenIs(b, ERL_OR_OR)) return false;
boolean r, p;
Marker m = enter_section_(b, l, _NONE_);
r = consumeToken(b, ERL_OR_OR);
p = r; // pin = 1
r = r && report_error_(b, markComprehension(b, l + 1));
r = p && lc_exprs(b, l + 1) && r;
exit_section_(b, l, m, r, p, null);
return r || p;
}
/* ********************************************************** */
// function_clause_head clause_guard? clause_body
static boolean maybe_macro_function_clause(PsiBuilder b, int l) {
if (!recursion_guard_(b, l, "maybe_macro_function_clause")) return false;
boolean r;
Marker m = enter_section_(b);
r = function_clause_head(b, l + 1);
r = r && maybe_macro_function_clause_1(b, l + 1);
r = r && clause_body(b, l + 1);
exit_section_(b, m, null, r);
return r;
}
// clause_guard?
private static boolean maybe_macro_function_clause_1(PsiBuilder b, int l) {
if (!recursion_guard_(b, l, "maybe_macro_function_clause_1")) return false;
clause_guard(b, l + 1);
return true;
}
/* ********************************************************** */
// q_var ['::' top_type]
public static boolean model_field(PsiBuilder b, int l) {
if (!recursion_guard_(b, l, "model_field")) return false;
if (!nextTokenIs(b, ERL_VAR)) return false;
boolean r, p;
Marker m = enter_section_(b, l, _NONE_, ERL_ARGUMENT_DEFINITION, null);
r = q_var(b, l + 1);
p = r; // pin = 1
r = r && model_field_1(b, l + 1);
exit_section_(b, l, m, r, p, null);
return r || p;
}
// ['::' top_type]
private static boolean model_field_1(PsiBuilder b, int l) {
if (!recursion_guard_(b, l, "model_field_1")) return false;
model_field_1_0(b, l + 1);
return true;
}
// '::' top_type
private static boolean model_field_1_0(PsiBuilder b, int l) {
if (!recursion_guard_(b, l, "model_field_1_0")) return false;
boolean r;
Marker m = enter_section_(b);
r = consumeToken(b, ERL_COLON_COLON);
r = r && top_type(b, l + 1);
exit_section_(b, m, null, r);
return r;
}
/* ********************************************************** */
// '[' model_field (',' model_field)* ']'
public static boolean model_field_list(PsiBuilder b, int l) {
if (!recursion_guard_(b, l, "model_field_list")) return false;
if (!nextTokenIs(b, ERL_BRACKET_LEFT)) return false;
boolean r, p;
Marker m = enter_section_(b, l, _NONE_, ERL_MODEL_FIELD_LIST, null);
r = consumeToken(b, ERL_BRACKET_LEFT);
p = r; // pin = 1
r = r && report_error_(b, model_field(b, l + 1));
r = p && report_error_(b, model_field_list_2(b, l + 1)) && r;
r = p && consumeToken(b, ERL_BRACKET_RIGHT) && r;
exit_section_(b, l, m, r, p, null);
return r || p;
}
// (',' model_field)*
private static boolean model_field_list_2(PsiBuilder b, int l) {
if (!recursion_guard_(b, l, "model_field_list_2")) return false;
int c = current_position_(b);
while (true) {
if (!model_field_list_2_0(b, l + 1)) break;
if (!empty_element_parsed_guard_(b, "model_field_list_2", c)) break;
c = current_position_(b);
}
return true;
}
// ',' model_field
private static boolean model_field_list_2_0(PsiBuilder b, int l) {
if (!recursion_guard_(b, l, "model_field_list_2_0")) return false;
boolean r, p;
Marker m = enter_section_(b, l, _NONE_);
r = consumeToken(b, ERL_COMMA);
p = r; // pin = 1
r = r && model_field(b, l + 1);
exit_section_(b, l, m, r, p, null);
return r || p;
}
/* ********************************************************** */
// 'module' '(' q_atom [',' module_tail] ')'
public static boolean module(PsiBuilder b, int l) {
if (!recursion_guard_(b, l, "module")) return false;
boolean r, p;
Marker m = enter_section_(b, l, _NONE_, ERL_MODULE, "<module>");
r = consumeToken(b, "module");
p = r; // pin = 1
r = r && report_error_(b, consumeToken(b, ERL_PAR_LEFT));
r = p && report_error_(b, q_atom(b, l + 1)) && r;
r = p && report_error_(b, module_3(b, l + 1)) && r;
r = p && consumeToken(b, ERL_PAR_RIGHT) && r;
exit_section_(b, l, m, r, p, null);
return r || p;
}
// [',' module_tail]
private static boolean module_3(PsiBuilder b, int l) {
if (!recursion_guard_(b, l, "module_3")) return false;
module_3_0(b, l + 1);
return true;
}
// ',' module_tail
private static boolean module_3_0(PsiBuilder b, int l) {
if (!recursion_guard_(b, l, "module_3_0")) return false;
boolean r;
Marker m = enter_section_(b);
r = consumeToken(b, ERL_COMMA);
r = r && module_tail(b, l + 1);
exit_section_(b, m, null, r);
return r;
}
/* ********************************************************** */
// q_atom
public static boolean module_ref(PsiBuilder b, int l) {
if (!recursion_guard_(b, l, "module_ref")) return false;
boolean r;
Marker m = enter_section_(b, l, _NONE_, ERL_MODULE_REF, "<module ref>");
r = q_atom(b, l + 1);
exit_section_(b, l, m, r, false, null);
return r;
}
/* ********************************************************** */
// model_field_list | argument_definition
static boolean module_tail(PsiBuilder b, int l) {
if (!recursion_guard_(b, l, "module_tail")) return false;
boolean r;
Marker m = enter_section_(b);
r = model_field_list(b, l + 1);
if (!r) r = argument_definition(b, l + 1);
exit_section_(b, m, null, r);
return r;
}
/* ********************************************************** */
// '/' |'*' | div | rem | band | and
static boolean mult_op(PsiBuilder b, int l) {
if (!recursion_guard_(b, l, "mult_op")) return false;
boolean r;
Marker m = enter_section_(b);
r = consumeToken(b, ERL_OP_AR_DIV);
if (!r) r = consumeToken(b, ERL_OP_AR_MUL);
if (!r) r = consumeToken(b, ERL_DIV);
if (!r) r = consumeToken(b, ERL_REM);
if (!r) r = consumeToken(b, ERL_BAND);
if (!r) r = consumeToken(b, ERL_AND);
exit_section_(b, m, null, r);
return r;
}
/* ********************************************************** */
// <<isModeOn "GUARD">> | !('->'|when)
static boolean not_function_definition(PsiBuilder b, int l) {
if (!recursion_guard_(b, l, "not_function_definition")) return false;
boolean r;
Marker m = enter_section_(b);
r = isModeOn(b, l + 1, "GUARD");
if (!r) r = not_function_definition_1(b, l + 1);
exit_section_(b, m, null, r);
return r;
}
// !('->'|when)
private static boolean not_function_definition_1(PsiBuilder b, int l) {
if (!recursion_guard_(b, l, "not_function_definition_1")) return false;
boolean r;
Marker m = enter_section_(b, l, _NOT_);
r = !not_function_definition_1_0(b, l + 1);
exit_section_(b, l, m, r, false, null);
return r;
}
// '->'|when
private static boolean not_function_definition_1_0(PsiBuilder b, int l) {
if (!recursion_guard_(b, l, "not_function_definition_1_0")) return false;
boolean r;
Marker m = enter_section_(b);
r = consumeToken(b, ERL_ARROW);
if (!r) r = consumeToken(b, ERL_WHEN);
exit_section_(b, m, null, r);
return r;
}
/* ********************************************************** */
// &'on_load' atom_name '(' function_with_arity ')'
public static boolean on_load(PsiBuilder b, int l) {
if (!recursion_guard_(b, l, "on_load")) return false;
boolean r, p;
Marker m = enter_section_(b, l, _NONE_, ERL_ATOM_ATTRIBUTE, "<on load>");
r = on_load_0(b, l + 1);
r = r && consumeToken(b, ERL_ATOM_NAME);
p = r; // pin = 2
r = r && report_error_(b, consumeToken(b, ERL_PAR_LEFT));
r = p && report_error_(b, function_with_arity(b, l + 1)) && r;
r = p && consumeToken(b, ERL_PAR_RIGHT) && r;
exit_section_(b, l, m, r, p, null);
return r || p;
}
// &'on_load'
private static boolean on_load_0(PsiBuilder b, int l) {
if (!recursion_guard_(b, l, "on_load_0")) return false;
boolean r;
Marker m = enter_section_(b, l, _AND_);
r = consumeToken(b, "on_load");
exit_section_(b, l, m, r, false, null);
return r;
}
/* ********************************************************** */
// '/' bit_type_list
public static boolean opt_bit_type_list(PsiBuilder b, int l) {
if (!recursion_guard_(b, l, "opt_bit_type_list")) return false;
if (!nextTokenIs(b, ERL_OP_AR_DIV)) return false;
boolean r, p;
Marker m = enter_section_(b, l, _NONE_, ERL_OPT_BIT_TYPE_LIST, null);
r = consumeToken(b, ERL_OP_AR_DIV);
p = r; // pin = 1
r = r && bit_type_list(b, l + 1);
exit_section_(b, l, m, r, p, null);
return r || p;
}
/* ********************************************************** */
// '[' callback_function_list? ']'
public static boolean optional_callback_functions(PsiBuilder b, int l) {
if (!recursion_guard_(b, l, "optional_callback_functions")) return false;
if (!nextTokenIs(b, ERL_BRACKET_LEFT)) return false;
boolean r, p;
Marker m = enter_section_(b, l, _NONE_, ERL_OPTIONAL_CALLBACK_FUNCTIONS, null);
r = consumeToken(b, ERL_BRACKET_LEFT);
p = r; // pin = 1
r = r && report_error_(b, optional_callback_functions_1(b, l + 1));
r = p && consumeToken(b, ERL_BRACKET_RIGHT) && r;
exit_section_(b, l, m, r, p, null);
return r || p;
}
// callback_function_list?
private static boolean optional_callback_functions_1(PsiBuilder b, int l) {
if (!recursion_guard_(b, l, "optional_callback_functions_1")) return false;
callback_function_list(b, l + 1);
return true;
}
/* ********************************************************** */
// 'optional_callbacks' <<attribute_tail optional_callback_functions>>
public static boolean optional_callbacks(PsiBuilder b, int l) {
if (!recursion_guard_(b, l, "optional_callbacks")) return false;
boolean r, p;
Marker m = enter_section_(b, l, _NONE_, ERL_OPTIONAL_CALLBACKS, "<optional callbacks>");
r = consumeToken(b, "optional_callbacks");
p = r; // pin = 1
r = r && attribute_tail(b, l + 1, optional_callback_functions_parser_);
exit_section_(b, l, m, r, p, null);
return r || p;
}
/* ********************************************************** */
// '.' | <<isModeOn "ELSE">> <<exitMode "ELSE">>
static boolean period(PsiBuilder b, int l) {
if (!recursion_guard_(b, l, "period")) return false;
boolean r;
Marker m = enter_section_(b, l, _LEFT_INNER_);
r = consumeToken(b, ERL_DOT);
if (!r) r = period_1(b, l + 1);
exit_section_(b, l, m, r, false, null);
return r;
}
// <<isModeOn "ELSE">> <<exitMode "ELSE">>
private static boolean period_1(PsiBuilder b, int l) {
if (!recursion_guard_(b, l, "period_1")) return false;
boolean r;
Marker m = enter_section_(b);
r = isModeOn(b, l + 1, "ELSE");
r = r && exitMode(b, l + 1, "ELSE");
exit_section_(b, m, null, r);
return r;
}
/* ********************************************************** */
// &(!'?') function_clause_head clause_guard? clause_body
static boolean plain_function_clause(PsiBuilder b, int l) {
if (!recursion_guard_(b, l, "plain_function_clause")) return false;
if (!nextTokenIs(b, "", ERL_ATOM_NAME, ERL_SINGLE_QUOTE)) return false;
boolean r, p;
Marker m = enter_section_(b, l, _NONE_);
r = plain_function_clause_0(b, l + 1);
r = r && function_clause_head(b, l + 1);
p = r; // pin = 2
r = r && report_error_(b, plain_function_clause_2(b, l + 1));
r = p && clause_body(b, l + 1) && r;
exit_section_(b, l, m, r, p, null);
return r || p;
}
// &(!'?')
private static boolean plain_function_clause_0(PsiBuilder b, int l) {
if (!recursion_guard_(b, l, "plain_function_clause_0")) return false;
boolean r;
Marker m = enter_section_(b, l, _AND_);
r = plain_function_clause_0_0(b, l + 1);
exit_section_(b, l, m, r, false, null);
return r;
}
// !'?'
private static boolean plain_function_clause_0_0(PsiBuilder b, int l) {
if (!recursion_guard_(b, l, "plain_function_clause_0_0")) return false;
boolean r;
Marker m = enter_section_(b, l, _NOT_);
r = !consumeToken(b, ERL_QMARK);
exit_section_(b, l, m, r, false, null);
return r;
}
// clause_guard?
private static boolean plain_function_clause_2(PsiBuilder b, int l) {
if (!recursion_guard_(b, l, "plain_function_clause_2")) return false;
clause_guard(b, l + 1);
return true;
}
/* ********************************************************** */
// '+' | '-' | bnot | not
static boolean prefix_op(PsiBuilder b, int l) {
if (!recursion_guard_(b, l, "prefix_op")) return false;
boolean r;
Marker m = enter_section_(b);
r = consumeToken(b, ERL_OP_PLUS);
if (!r) r = consumeToken(b, ERL_OP_MINUS);
if (!r) r = consumeToken(b, ERL_BNOT);
if (!r) r = consumeToken(b, ERL_NOT);
exit_section_(b, m, null, r);
return r;
}
/* ********************************************************** */
// atom | macros_arg | macros
public static boolean q_atom(PsiBuilder b, int l) {
if (!recursion_guard_(b, l, "q_atom")) return false;
boolean r;
Marker m = enter_section_(b, l, _NONE_, ERL_Q_ATOM, "<q atom>");
r = atom(b, l + 1);
if (!r) r = macros_arg(b, l + 1);
if (!r) r = macros(b, l + 1);
exit_section_(b, l, m, r, false, null);
return r;
}
/* ********************************************************** */
// q_atom | q_var
static boolean q_atom_or_var(PsiBuilder b, int l) {
if (!recursion_guard_(b, l, "q_atom_or_var")) return false;
boolean r;
Marker m = enter_section_(b);
r = q_atom(b, l + 1);
if (!r) r = q_var(b, l + 1);
exit_section_(b, m, null, r);
return r;
}
/* ********************************************************** */
// var
public static boolean q_var(PsiBuilder b, int l) {
if (!recursion_guard_(b, l, "q_var")) return false;
if (!nextTokenIs(b, ERL_VAR)) return false;
boolean r;
Marker m = enter_section_(b);
r = consumeToken(b, ERL_VAR);
exit_section_(b, m, ERL_Q_VAR, r);
return r;
}
/* ********************************************************** */
// q_atom '.' q_atom
static boolean qualified_atom_expression(PsiBuilder b, int l) {
if (!recursion_guard_(b, l, "qualified_atom_expression")) return false;
boolean r;
Marker m = enter_section_(b, l, _NONE_, null, "<expression>");
r = q_atom(b, l + 1);
r = r && consumeToken(b, ERL_DOT);
r = r && q_atom(b, l + 1);
exit_section_(b, l, m, r, false, null);
return r;
}
/* ********************************************************** */
// receive (after_clause | cr_clauses after_clause? ) end
public static boolean receive_expression(PsiBuilder b, int l) {
if (!recursion_guard_(b, l, "receive_expression")) return false;
if (!nextTokenIs(b, ERL_RECEIVE)) return false;
boolean r, p;
Marker m = enter_section_(b, l, _NONE_, ERL_RECEIVE_EXPRESSION, "<expression>");
r = consumeToken(b, ERL_RECEIVE);
p = r; // pin = 1
r = r && report_error_(b, receive_expression_1(b, l + 1));
r = p && consumeToken(b, ERL_END) && r;
exit_section_(b, l, m, r, p, null);
return r || p;
}
// after_clause | cr_clauses after_clause?
private static boolean receive_expression_1(PsiBuilder b, int l) {
if (!recursion_guard_(b, l, "receive_expression_1")) return false;
boolean r;
Marker m = enter_section_(b);
r = after_clause(b, l + 1);
if (!r) r = receive_expression_1_1(b, l + 1);
exit_section_(b, m, null, r);
return r;
}
// cr_clauses after_clause?
private static boolean receive_expression_1_1(PsiBuilder b, int l) {
if (!recursion_guard_(b, l, "receive_expression_1_1")) return false;
boolean r, p;
Marker m = enter_section_(b, l, _NONE_);
r = cr_clauses(b, l + 1);
p = r; // pin = 1
r = r && receive_expression_1_1_1(b, l + 1);
exit_section_(b, l, m, r, p, null);
return r || p;
}
// after_clause?
private static boolean receive_expression_1_1_1(PsiBuilder b, int l) {
if (!recursion_guard_(b, l, "receive_expression_1_1_1")) return false;
after_clause(b, l + 1);
return true;
}
/* ********************************************************** */
// '-' 'record' '(' q_atom ',' typed_record_fields ')'
public static boolean record_definition(PsiBuilder b, int l) {
if (!recursion_guard_(b, l, "record_definition")) return false;
if (!nextTokenIs(b, ERL_OP_MINUS)) return false;
boolean r, p;
Marker m = enter_section_(b, l, _NONE_, ERL_RECORD_DEFINITION, null);
r = consumeToken(b, ERL_OP_MINUS);
r = r && consumeToken(b, "record");
p = r; // pin = 2
r = r && report_error_(b, consumeToken(b, ERL_PAR_LEFT));
r = p && report_error_(b, q_atom(b, l + 1)) && r;
r = p && report_error_(b, consumeToken(b, ERL_COMMA)) && r;
r = p && report_error_(b, typed_record_fields(b, l + 1)) && r;
r = p && consumeToken(b, ERL_PAR_RIGHT) && r;
exit_section_(b, l, m, r, p, null);
return r || p;
}
/* ********************************************************** */
// (q_atom | '_') '=' (qualified_atom_expression | expression)
public static boolean record_field(PsiBuilder b, int l) {
if (!recursion_guard_(b, l, "record_field")) return false;
boolean r, p;
Marker m = enter_section_(b, l, _NONE_, ERL_RECORD_FIELD, "<record field>");
r = record_field_0(b, l + 1);
p = r; // pin = 1
r = r && report_error_(b, consumeToken(b, ERL_OP_EQ));
r = p && record_field_2(b, l + 1) && r;
exit_section_(b, l, m, r, p, tuple_recoverer_parser_);
return r || p;
}
// q_atom | '_'
private static boolean record_field_0(PsiBuilder b, int l) {
if (!recursion_guard_(b, l, "record_field_0")) return false;
boolean r;
Marker m = enter_section_(b);
r = q_atom(b, l + 1);
if (!r) r = consumeToken(b, "_");
exit_section_(b, m, null, r);
return r;
}
// qualified_atom_expression | expression
private static boolean record_field_2(PsiBuilder b, int l) {
if (!recursion_guard_(b, l, "record_field_2")) return false;
boolean r;
Marker m = enter_section_(b);
r = qualified_atom_expression(b, l + 1);
if (!r) r = expression(b, l + 1, -1);
exit_section_(b, m, null, r);
return r;
}
/* ********************************************************** */
// '.' q_atom
public static boolean record_field_ref(PsiBuilder b, int l) {
if (!recursion_guard_(b, l, "record_field_ref")) return false;
if (!nextTokenIs(b, ERL_DOT)) return false;
boolean r, p;
Marker m = enter_section_(b, l, _NONE_, ERL_RECORD_FIELD, null);
r = consumeToken(b, ERL_DOT);
p = r; // pin = 1
r = r && q_atom(b, l + 1);
exit_section_(b, l, m, r, p, null);
return r || p;
}
/* ********************************************************** */
// record_field (',' record_field)*
static boolean record_fields(PsiBuilder b, int l) {
if (!recursion_guard_(b, l, "record_fields")) return false;
boolean r, p;
Marker m = enter_section_(b, l, _NONE_);
r = record_field(b, l + 1);
p = r; // pin = 1
r = r && record_fields_1(b, l + 1);
exit_section_(b, l, m, r, p, null);
return r || p;
}
// (',' record_field)*
private static boolean record_fields_1(PsiBuilder b, int l) {
if (!recursion_guard_(b, l, "record_fields_1")) return false;
int c = current_position_(b);
while (true) {
if (!record_fields_1_0(b, l + 1)) break;
if (!empty_element_parsed_guard_(b, "record_fields_1", c)) break;
c = current_position_(b);
}
return true;
}
// ',' record_field
private static boolean record_fields_1_0(PsiBuilder b, int l) {
if (!recursion_guard_(b, l, "record_fields_1_0")) return false;
boolean r, p;
Marker m = enter_section_(b, l, _NONE_);
r = consumeToken(b, ERL_COMMA);
p = r; // pin = 1
r = r && record_field(b, l + 1);
exit_section_(b, l, m, r, p, null);
return r || p;
}
/* ********************************************************** */
// '#' &(!'{')
static boolean record_hash(PsiBuilder b, int l) {
if (!recursion_guard_(b, l, "record_hash")) return false;
if (!nextTokenIs(b, ERL_RADIX)) return false;
boolean r;
Marker m = enter_section_(b);
r = consumeToken(b, ERL_RADIX);
r = r && record_hash_1(b, l + 1);
exit_section_(b, m, null, r);
return r;
}
// &(!'{')
private static boolean record_hash_1(PsiBuilder b, int l) {
if (!recursion_guard_(b, l, "record_hash_1")) return false;
boolean r;
Marker m = enter_section_(b, l, _AND_);
r = record_hash_1_0(b, l + 1);
exit_section_(b, l, m, r, false, null);
return r;
}
// !'{'
private static boolean record_hash_1_0(PsiBuilder b, int l) {
if (!recursion_guard_(b, l, "record_hash_1_0")) return false;
boolean r;
Marker m = enter_section_(b, l, _NOT_);
r = !consumeToken(b, ERL_CURLY_LEFT);
exit_section_(b, l, m, r, false, null);
return r;
}
/* ********************************************************** */
// record_head_classic | macros &('{'|'.' q_atom &(!('(')))
static boolean record_head(PsiBuilder b, int l) {
if (!recursion_guard_(b, l, "record_head")) return false;
if (!nextTokenIs(b, "", ERL_RADIX, ERL_QMARK)) return false;
boolean r;
Marker m = enter_section_(b);
r = record_head_classic(b, l + 1);
if (!r) r = record_head_1(b, l + 1);
exit_section_(b, m, null, r);
return r;
}
// macros &('{'|'.' q_atom &(!('(')))
private static boolean record_head_1(PsiBuilder b, int l) {
if (!recursion_guard_(b, l, "record_head_1")) return false;
boolean r;
Marker m = enter_section_(b);
r = macros(b, l + 1);
r = r && record_head_1_1(b, l + 1);
exit_section_(b, m, null, r);
return r;
}
// &('{'|'.' q_atom &(!('(')))
private static boolean record_head_1_1(PsiBuilder b, int l) {
if (!recursion_guard_(b, l, "record_head_1_1")) return false;
boolean r;
Marker m = enter_section_(b, l, _AND_);
r = record_head_1_1_0(b, l + 1);
exit_section_(b, l, m, r, false, null);
return r;
}
// '{'|'.' q_atom &(!('('))
private static boolean record_head_1_1_0(PsiBuilder b, int l) {
if (!recursion_guard_(b, l, "record_head_1_1_0")) return false;
boolean r;
Marker m = enter_section_(b);
r = consumeToken(b, ERL_CURLY_LEFT);
if (!r) r = record_head_1_1_0_1(b, l + 1);
exit_section_(b, m, null, r);
return r;
}
// '.' q_atom &(!('('))
private static boolean record_head_1_1_0_1(PsiBuilder b, int l) {
if (!recursion_guard_(b, l, "record_head_1_1_0_1")) return false;
boolean r;
Marker m = enter_section_(b);
r = consumeToken(b, ERL_DOT);
r = r && q_atom(b, l + 1);
r = r && record_head_1_1_0_1_2(b, l + 1);
exit_section_(b, m, null, r);
return r;
}
// &(!('('))
private static boolean record_head_1_1_0_1_2(PsiBuilder b, int l) {
if (!recursion_guard_(b, l, "record_head_1_1_0_1_2")) return false;
boolean r;
Marker m = enter_section_(b, l, _AND_);
r = record_head_1_1_0_1_2_0(b, l + 1);
exit_section_(b, l, m, r, false, null);
return r;
}
// !('(')
private static boolean record_head_1_1_0_1_2_0(PsiBuilder b, int l) {
if (!recursion_guard_(b, l, "record_head_1_1_0_1_2_0")) return false;
boolean r;
Marker m = enter_section_(b, l, _NOT_);
r = !record_head_1_1_0_1_2_0_0(b, l + 1);
exit_section_(b, l, m, r, false, null);
return r;
}
// ('(')
private static boolean record_head_1_1_0_1_2_0_0(PsiBuilder b, int l) {
if (!recursion_guard_(b, l, "record_head_1_1_0_1_2_0_0")) return false;
boolean r;
Marker m = enter_section_(b);
r = consumeToken(b, ERL_PAR_LEFT);
exit_section_(b, m, null, r);
return r;
}
/* ********************************************************** */
// record_hash record_ref
static boolean record_head_classic(PsiBuilder b, int l) {
if (!recursion_guard_(b, l, "record_head_classic")) return false;
if (!nextTokenIs(b, ERL_RADIX)) return false;
boolean r, p;
Marker m = enter_section_(b, l, _NONE_);
r = record_hash(b, l + 1);
p = r; // pin = 1
r = r && record_ref(b, l + 1);
exit_section_(b, l, m, r, p, null);
return r || p;
}
/* ********************************************************** */
// '{' top_type_list? '}'
public static boolean record_like_type(PsiBuilder b, int l) {
if (!recursion_guard_(b, l, "record_like_type")) return false;
if (!nextTokenIs(b, ERL_CURLY_LEFT)) return false;
boolean r;
Marker m = enter_section_(b, l, _NONE_, ERL_RECORD_LIKE_TYPE, "<type>");
r = consumeToken(b, ERL_CURLY_LEFT);
r = r && record_like_type_1(b, l + 1);
r = r && consumeToken(b, ERL_CURLY_RIGHT);
exit_section_(b, l, m, r, false, null);
return r;
}
// top_type_list?
private static boolean record_like_type_1(PsiBuilder b, int l) {
if (!recursion_guard_(b, l, "record_like_type_1")) return false;
top_type_list(b, l + 1);
return true;
}
/* ********************************************************** */
// q_atom
public static boolean record_ref(PsiBuilder b, int l) {
if (!recursion_guard_(b, l, "record_ref")) return false;
boolean r;
Marker m = enter_section_(b, l, _NONE_, ERL_RECORD_REF, "<record ref>");
r = q_atom(b, l + 1);
exit_section_(b, l, m, r, false, null);
return r;
}
/* ********************************************************** */
// record_head (record_field_ref | record_tuple | ())
static boolean record_tail(PsiBuilder b, int l) {
if (!recursion_guard_(b, l, "record_tail")) return false;
if (!nextTokenIs(b, "", ERL_RADIX, ERL_QMARK)) return false;
boolean r, p;
Marker m = enter_section_(b, l, _NONE_);
r = record_head(b, l + 1);
p = r; // pin = 1
r = r && record_tail_1(b, l + 1);
exit_section_(b, l, m, r, p, null);
return r || p;
}
// record_field_ref | record_tuple | ()
private static boolean record_tail_1(PsiBuilder b, int l) {
if (!recursion_guard_(b, l, "record_tail_1")) return false;
boolean r;
Marker m = enter_section_(b);
r = record_field_ref(b, l + 1);
if (!r) r = record_tuple(b, l + 1);
if (!r) r = record_tail_1_2(b, l + 1);
exit_section_(b, m, null, r);
return r;
}
// ()
private static boolean record_tail_1_2(PsiBuilder b, int l) {
return true;
}
/* ********************************************************** */
// '{' record_fields? '}'
public static boolean record_tuple(PsiBuilder b, int l) {
if (!recursion_guard_(b, l, "record_tuple")) return false;
if (!nextTokenIs(b, ERL_CURLY_LEFT)) return false;
boolean r, p;
Marker m = enter_section_(b, l, _NONE_, ERL_RECORD_TUPLE, null);
r = consumeToken(b, ERL_CURLY_LEFT);
p = r; // pin = 1
r = r && report_error_(b, record_tuple_1(b, l + 1));
r = p && consumeToken(b, ERL_CURLY_RIGHT) && r;
exit_section_(b, l, m, r, p, null);
return r || p;
}
// record_fields?
private static boolean record_tuple_1(PsiBuilder b, int l) {
if (!recursion_guard_(b, l, "record_tuple_1")) return false;
record_fields(b, l + 1);
return true;
}
/* ********************************************************** */
// rule_clause (';' rule_clause)*
public static boolean rule(PsiBuilder b, int l) {
if (!recursion_guard_(b, l, "rule")) return false;
boolean r, p;
Marker m = enter_section_(b, l, _NONE_, ERL_RULE, "<rule>");
r = rule_clause(b, l + 1);
p = r; // pin = 1
r = r && rule_1(b, l + 1);
exit_section_(b, l, m, r, p, null);
return r || p;
}
// (';' rule_clause)*
private static boolean rule_1(PsiBuilder b, int l) {
if (!recursion_guard_(b, l, "rule_1")) return false;
int c = current_position_(b);
while (true) {
if (!rule_1_0(b, l + 1)) break;
if (!empty_element_parsed_guard_(b, "rule_1", c)) break;
c = current_position_(b);
}
return true;
}
// ';' rule_clause
private static boolean rule_1_0(PsiBuilder b, int l) {
if (!recursion_guard_(b, l, "rule_1_0")) return false;
boolean r, p;
Marker m = enter_section_(b, l, _NONE_);
r = consumeToken(b, ERL_SEMI);
p = r; // pin = 1
r = r && rule_clause(b, l + 1);
exit_section_(b, l, m, r, p, null);
return r || p;
}
/* ********************************************************** */
// ':-' lc_exprs
public static boolean rule_body(PsiBuilder b, int l) {
if (!recursion_guard_(b, l, "rule_body")) return false;
boolean r, p;
Marker m = enter_section_(b, l, _NONE_, ERL_RULE_BODY, "<rule body>");
r = consumeToken(b, ":-");
p = r; // pin = 1
r = r && lc_exprs(b, l + 1);
exit_section_(b, l, m, r, p, null);
return r || p;
}
/* ********************************************************** */
// q_atom argument_list clause_guard? rule_body
public static boolean rule_clause(PsiBuilder b, int l) {
if (!recursion_guard_(b, l, "rule_clause")) return false;
boolean r;
Marker m = enter_section_(b, l, _NONE_, ERL_RULE_CLAUSE, "<rule clause>");
r = q_atom(b, l + 1);
r = r && argument_list(b, l + 1);
r = r && rule_clause_2(b, l + 1);
r = r && rule_body(b, l + 1);
exit_section_(b, l, m, r, false, null);
return r;
}
// clause_guard?
private static boolean rule_clause_2(PsiBuilder b, int l) {
if (!recursion_guard_(b, l, "rule_clause_2")) return false;
clause_guard(b, l + 1);
return true;
}
/* ********************************************************** */
// q_atom ('/' integer | &('('))
public static boolean spec_fun(PsiBuilder b, int l) {
if (!recursion_guard_(b, l, "spec_fun")) return false;
boolean r, p;
Marker m = enter_section_(b, l, _NONE_, ERL_SPEC_FUN, "<spec fun>");
r = q_atom(b, l + 1);
p = r; // pin = 1
r = r && spec_fun_1(b, l + 1);
exit_section_(b, l, m, r, p, null);
return r || p;
}
// '/' integer | &('(')
private static boolean spec_fun_1(PsiBuilder b, int l) {
if (!recursion_guard_(b, l, "spec_fun_1")) return false;
boolean r;
Marker m = enter_section_(b);
r = spec_fun_1_0(b, l + 1);
if (!r) r = spec_fun_1_1(b, l + 1);
exit_section_(b, m, null, r);
return r;
}
// '/' integer
private static boolean spec_fun_1_0(PsiBuilder b, int l) {
if (!recursion_guard_(b, l, "spec_fun_1_0")) return false;
boolean r, p;
Marker m = enter_section_(b, l, _NONE_);
r = consumeToken(b, ERL_OP_AR_DIV);
p = r; // pin = 1
r = r && consumeToken(b, ERL_INTEGER);
exit_section_(b, l, m, r, p, null);
return r || p;
}
// &('(')
private static boolean spec_fun_1_1(PsiBuilder b, int l) {
if (!recursion_guard_(b, l, "spec_fun_1_1")) return false;
boolean r;
Marker m = enter_section_(b, l, _AND_);
r = spec_fun_1_1_0(b, l + 1);
exit_section_(b, l, m, r, false, null);
return r;
}
// ('(')
private static boolean spec_fun_1_1_0(PsiBuilder b, int l) {
if (!recursion_guard_(b, l, "spec_fun_1_1_0")) return false;
boolean r;
Marker m = enter_section_(b);
r = consumeToken(b, ERL_PAR_LEFT);
exit_section_(b, m, null, r);
return r;
}
/* ********************************************************** */
// 'spec' type_spec
public static boolean specification(PsiBuilder b, int l) {
if (!recursion_guard_(b, l, "specification")) return false;
boolean r, p;
Marker m = enter_section_(b, l, _NONE_, ERL_SPECIFICATION, "<specification>");
r = consumeToken(b, "spec");
p = r; // pin = 1
r = r && type_spec(b, l + 1);
exit_section_(b, l, m, r, p, null);
return r || p;
}
/* ********************************************************** */
// string
public static boolean string_literal(PsiBuilder b, int l) {
if (!recursion_guard_(b, l, "string_literal")) return false;
if (!nextTokenIs(b, ERL_STRING)) return false;
boolean r;
Marker m = enter_section_(b, l, _NONE_, ERL_STRING_LITERAL, "<expression>");
r = consumeToken(b, ERL_STRING);
exit_section_(b, l, m, r, false, null);
return r;
}
/* ********************************************************** */
// [q_var '::'] type_list
public static boolean top_type(PsiBuilder b, int l) {
if (!recursion_guard_(b, l, "top_type")) return false;
boolean r;
Marker m = enter_section_(b, l, _COLLAPSE_, ERL_TOP_TYPE, "<type>");
r = top_type_0(b, l + 1);
r = r && type_list(b, l + 1);
exit_section_(b, l, m, r, false, null);
return r;
}
// [q_var '::']
private static boolean top_type_0(PsiBuilder b, int l) {
if (!recursion_guard_(b, l, "top_type_0")) return false;
top_type_0_0(b, l + 1);
return true;
}
// q_var '::'
private static boolean top_type_0_0(PsiBuilder b, int l) {
if (!recursion_guard_(b, l, "top_type_0_0")) return false;
boolean r;
Marker m = enter_section_(b);
r = q_var(b, l + 1);
r = r && consumeToken(b, ERL_COLON_COLON);
exit_section_(b, m, null, r);
return r;
}
/* ********************************************************** */
// '->' top_type
public static boolean top_type_clause(PsiBuilder b, int l) {
if (!recursion_guard_(b, l, "top_type_clause")) return false;
if (!nextTokenIs(b, ERL_ARROW)) return false;
boolean r, p;
Marker m = enter_section_(b, l, _NONE_, ERL_TOP_TYPE_CLAUSE, null);
r = consumeToken(b, ERL_ARROW);
p = r; // pin = 1
r = r && top_type(b, l + 1);
exit_section_(b, l, m, r, p, null);
return r || p;
}
/* ********************************************************** */
// top_type (',' top_type)*
static boolean top_type_list(PsiBuilder b, int l) {
if (!recursion_guard_(b, l, "top_type_list")) return false;
boolean r, p;
Marker m = enter_section_(b, l, _NONE_);
r = top_type(b, l + 1);
p = r; // pin = 1
r = r && top_type_list_1(b, l + 1);
exit_section_(b, l, m, r, p, null);
return r || p;
}
// (',' top_type)*
private static boolean top_type_list_1(PsiBuilder b, int l) {
if (!recursion_guard_(b, l, "top_type_list_1")) return false;
int c = current_position_(b);
while (true) {
if (!top_type_list_1_0(b, l + 1)) break;
if (!empty_element_parsed_guard_(b, "top_type_list_1", c)) break;
c = current_position_(b);
}
return true;
}
// ',' top_type
private static boolean top_type_list_1_0(PsiBuilder b, int l) {
if (!recursion_guard_(b, l, "top_type_list_1_0")) return false;
boolean r, p;
Marker m = enter_section_(b, l, _NONE_);
r = consumeToken(b, ERL_COMMA);
p = r; // pin = 1
r = r && top_type(b, l + 1);
exit_section_(b, l, m, r, p, null);
return r || p;
}
/* ********************************************************** */
// [argument_definition ':'] argument_definition
static boolean try_argument_definition(PsiBuilder b, int l) {
if (!recursion_guard_(b, l, "try_argument_definition")) return false;
boolean r;
Marker m = enter_section_(b);
r = try_argument_definition_0(b, l + 1);
r = r && argument_definition(b, l + 1);
exit_section_(b, m, null, r);
return r;
}
// [argument_definition ':']
private static boolean try_argument_definition_0(PsiBuilder b, int l) {
if (!recursion_guard_(b, l, "try_argument_definition_0")) return false;
try_argument_definition_0_0(b, l + 1);
return true;
}
// argument_definition ':'
private static boolean try_argument_definition_0_0(PsiBuilder b, int l) {
if (!recursion_guard_(b, l, "try_argument_definition_0_0")) return false;
boolean r;
Marker m = enter_section_(b);
r = argument_definition(b, l + 1);
r = r && consumeToken(b, ERL_COLON);
exit_section_(b, m, null, r);
return r;
}
/* ********************************************************** */
// catch try_clauses [after try_expressions_clause] | after try_expressions_clause
static boolean try_catch(PsiBuilder b, int l) {
if (!recursion_guard_(b, l, "try_catch")) return false;
if (!nextTokenIs(b, "", ERL_AFTER, ERL_CATCH)) return false;
boolean r;
Marker m = enter_section_(b);
r = try_catch_0(b, l + 1);
if (!r) r = try_catch_1(b, l + 1);
exit_section_(b, m, null, r);
return r;
}
// catch try_clauses [after try_expressions_clause]
private static boolean try_catch_0(PsiBuilder b, int l) {
if (!recursion_guard_(b, l, "try_catch_0")) return false;
boolean r, p;
Marker m = enter_section_(b, l, _NONE_);
r = consumeToken(b, ERL_CATCH);
p = r; // pin = catch|after
r = r && report_error_(b, try_clauses(b, l + 1));
r = p && try_catch_0_2(b, l + 1) && r;
exit_section_(b, l, m, r, p, null);
return r || p;
}
// [after try_expressions_clause]
private static boolean try_catch_0_2(PsiBuilder b, int l) {
if (!recursion_guard_(b, l, "try_catch_0_2")) return false;
try_catch_0_2_0(b, l + 1);
return true;
}
// after try_expressions_clause
private static boolean try_catch_0_2_0(PsiBuilder b, int l) {
if (!recursion_guard_(b, l, "try_catch_0_2_0")) return false;
boolean r, p;
Marker m = enter_section_(b, l, _NONE_);
r = consumeToken(b, ERL_AFTER);
p = r; // pin = catch|after
r = r && try_expressions_clause(b, l + 1);
exit_section_(b, l, m, r, p, null);
return r || p;
}
// after try_expressions_clause
private static boolean try_catch_1(PsiBuilder b, int l) {
if (!recursion_guard_(b, l, "try_catch_1")) return false;
boolean r, p;
Marker m = enter_section_(b, l, _NONE_);
r = consumeToken(b, ERL_AFTER);
p = r; // pin = catch|after
r = r && try_expressions_clause(b, l + 1);
exit_section_(b, l, m, r, p, null);
return r || p;
}
/* ********************************************************** */
// <<guarded try_argument_definition>> clause_guard? clause_body
public static boolean try_clause(PsiBuilder b, int l) {
if (!recursion_guard_(b, l, "try_clause")) return false;
boolean r, p;
Marker m = enter_section_(b, l, _NONE_, ERL_TRY_CLAUSE, "<try clause>");
r = guarded(b, l + 1, try_argument_definition_parser_);
p = r; // pin = 1
r = r && report_error_(b, try_clause_1(b, l + 1));
r = p && clause_body(b, l + 1) && r;
exit_section_(b, l, m, r, p, null);
return r || p;
}
// clause_guard?
private static boolean try_clause_1(PsiBuilder b, int l) {
if (!recursion_guard_(b, l, "try_clause_1")) return false;
clause_guard(b, l + 1);
return true;
}
/* ********************************************************** */
// try_clause (';' try_clause)*
public static boolean try_clauses(PsiBuilder b, int l) {
if (!recursion_guard_(b, l, "try_clauses")) return false;
boolean r, p;
Marker m = enter_section_(b, l, _NONE_, ERL_TRY_CLAUSES, "<try clauses>");
r = try_clause(b, l + 1);
p = r; // pin = 1
r = r && try_clauses_1(b, l + 1);
exit_section_(b, l, m, r, p, null);
return r || p;
}
// (';' try_clause)*
private static boolean try_clauses_1(PsiBuilder b, int l) {
if (!recursion_guard_(b, l, "try_clauses_1")) return false;
int c = current_position_(b);
while (true) {
if (!try_clauses_1_0(b, l + 1)) break;
if (!empty_element_parsed_guard_(b, "try_clauses_1", c)) break;
c = current_position_(b);
}
return true;
}
// ';' try_clause
private static boolean try_clauses_1_0(PsiBuilder b, int l) {
if (!recursion_guard_(b, l, "try_clauses_1_0")) return false;
boolean r, p;
Marker m = enter_section_(b, l, _NONE_);
r = consumeToken(b, ERL_SEMI);
p = r; // pin = 1
r = r && try_clause(b, l + 1);
exit_section_(b, l, m, r, p, null);
return r || p;
}
/* ********************************************************** */
// try try_expressions_clause [of cr_clauses] try_catch end
public static boolean try_expression(PsiBuilder b, int l) {
if (!recursion_guard_(b, l, "try_expression")) return false;
if (!nextTokenIs(b, ERL_TRY)) return false;
boolean r, p;
Marker m = enter_section_(b, l, _NONE_, ERL_TRY_EXPRESSION, "<expression>");
r = consumeToken(b, ERL_TRY);
p = r; // pin = 1
r = r && report_error_(b, try_expressions_clause(b, l + 1));
r = p && report_error_(b, try_expression_2(b, l + 1)) && r;
r = p && report_error_(b, try_catch(b, l + 1)) && r;
r = p && consumeToken(b, ERL_END) && r;
exit_section_(b, l, m, r, p, null);
return r || p;
}
// [of cr_clauses]
private static boolean try_expression_2(PsiBuilder b, int l) {
if (!recursion_guard_(b, l, "try_expression_2")) return false;
try_expression_2_0(b, l + 1);
return true;
}
// of cr_clauses
private static boolean try_expression_2_0(PsiBuilder b, int l) {
if (!recursion_guard_(b, l, "try_expression_2_0")) return false;
boolean r, p;
Marker m = enter_section_(b, l, _NONE_);
r = consumeToken(b, ERL_OF);
p = r; // pin = 1
r = r && cr_clauses(b, l + 1);
exit_section_(b, l, m, r, p, null);
return r || p;
}
/* ********************************************************** */
// exprs
public static boolean try_expressions_clause(PsiBuilder b, int l) {
if (!recursion_guard_(b, l, "try_expressions_clause")) return false;
boolean r;
Marker m = enter_section_(b, l, _NONE_, ERL_TRY_EXPRESSIONS_CLAUSE, "<try expressions clause>");
r = exprs(b, l + 1);
exit_section_(b, l, m, r, false, null);
return r;
}
/* ********************************************************** */
// '{' (&'}' | exprs) '}'
public static boolean tuple_expression(PsiBuilder b, int l) {
if (!recursion_guard_(b, l, "tuple_expression")) return false;
if (!nextTokenIs(b, ERL_CURLY_LEFT)) return false;
boolean r, p;
Marker m = enter_section_(b, l, _NONE_, ERL_TUPLE_EXPRESSION, "<expression>");
r = consumeToken(b, ERL_CURLY_LEFT);
p = r; // pin = 1
r = r && report_error_(b, tuple_expression_1(b, l + 1));
r = p && consumeToken(b, ERL_CURLY_RIGHT) && r;
exit_section_(b, l, m, r, p, null);
return r || p;
}
// &'}' | exprs
private static boolean tuple_expression_1(PsiBuilder b, int l) {
if (!recursion_guard_(b, l, "tuple_expression_1")) return false;
boolean r;
Marker m = enter_section_(b);
r = tuple_expression_1_0(b, l + 1);
if (!r) r = exprs(b, l + 1);
exit_section_(b, m, null, r);
return r;
}
// &'}'
private static boolean tuple_expression_1_0(PsiBuilder b, int l) {
if (!recursion_guard_(b, l, "tuple_expression_1_0")) return false;
boolean r;
Marker m = enter_section_(b, l, _AND_);
r = consumeToken(b, ERL_CURLY_RIGHT);
exit_section_(b, l, m, r, false, null);
return r;
}
/* ********************************************************** */
// !('}'|',')
static boolean tuple_recoverer(PsiBuilder b, int l) {
if (!recursion_guard_(b, l, "tuple_recoverer")) return false;
boolean r;
Marker m = enter_section_(b, l, _NOT_);
r = !tuple_recoverer_0(b, l + 1);
exit_section_(b, l, m, r, false, null);
return r;
}
// '}'|','
private static boolean tuple_recoverer_0(PsiBuilder b, int l) {
if (!recursion_guard_(b, l, "tuple_recoverer_0")) return false;
boolean r;
Marker m = enter_section_(b);
r = consumeToken(b, ERL_CURLY_RIGHT);
if (!r) r = consumeToken(b, ERL_COMMA);
exit_section_(b, m, null, r);
return r;
}
/* ********************************************************** */
// '(' top_type ')'
// | int_type ['..' int_type]
// | fun '(' fun_type_100_t? ')'
// | type_ref_with_module ['(' top_type_list? ')']
// | binary_type
// | q_var ['::' top_type]
// | '[' [top_type [',' '...']] ']'
// | record_like_type
// | record_hash record_ref '{' field_type_list? '}'
// | map_type
public static boolean type(PsiBuilder b, int l) {
if (!recursion_guard_(b, l, "type")) return false;
boolean r;
Marker m = enter_section_(b, l, _COLLAPSE_, ERL_TYPE, "<type>");
r = type_0(b, l + 1);
if (!r) r = type_1(b, l + 1);
if (!r) r = type_2(b, l + 1);
if (!r) r = type_3(b, l + 1);
if (!r) r = binary_type(b, l + 1);
if (!r) r = type_5(b, l + 1);
if (!r) r = type_6(b, l + 1);
if (!r) r = record_like_type(b, l + 1);
if (!r) r = type_8(b, l + 1);
if (!r) r = map_type(b, l + 1);
exit_section_(b, l, m, r, false, null);
return r;
}
// '(' top_type ')'
private static boolean type_0(PsiBuilder b, int l) {
if (!recursion_guard_(b, l, "type_0")) return false;
boolean r, p;
Marker m = enter_section_(b, l, _NONE_);
r = consumeToken(b, ERL_PAR_LEFT);
p = r; // pin = 1
r = r && report_error_(b, top_type(b, l + 1));
r = p && consumeToken(b, ERL_PAR_RIGHT) && r;
exit_section_(b, l, m, r, p, null);
return r || p;
}
// int_type ['..' int_type]
private static boolean type_1(PsiBuilder b, int l) {
if (!recursion_guard_(b, l, "type_1")) return false;
boolean r, p;
Marker m = enter_section_(b, l, _NONE_);
r = int_type(b, l + 1);
p = r; // pin = 1
r = r && type_1_1(b, l + 1);
exit_section_(b, l, m, r, p, null);
return r || p;
}
// ['..' int_type]
private static boolean type_1_1(PsiBuilder b, int l) {
if (!recursion_guard_(b, l, "type_1_1")) return false;
type_1_1_0(b, l + 1);
return true;
}
// '..' int_type
private static boolean type_1_1_0(PsiBuilder b, int l) {
if (!recursion_guard_(b, l, "type_1_1_0")) return false;
boolean r, p;
Marker m = enter_section_(b, l, _NONE_);
r = consumeToken(b, ERL_DOT_DOT);
p = r; // pin = 1
r = r && int_type(b, l + 1);
exit_section_(b, l, m, r, p, null);
return r || p;
}
// fun '(' fun_type_100_t? ')'
private static boolean type_2(PsiBuilder b, int l) {
if (!recursion_guard_(b, l, "type_2")) return false;
boolean r, p;
Marker m = enter_section_(b, l, _NONE_);
r = consumeToken(b, ERL_FUN);
p = r; // pin = 1
r = r && report_error_(b, consumeToken(b, ERL_PAR_LEFT));
r = p && report_error_(b, type_2_2(b, l + 1)) && r;
r = p && consumeToken(b, ERL_PAR_RIGHT) && r;
exit_section_(b, l, m, r, p, null);
return r || p;
}
// fun_type_100_t?
private static boolean type_2_2(PsiBuilder b, int l) {
if (!recursion_guard_(b, l, "type_2_2")) return false;
fun_type_100_t(b, l + 1);
return true;
}
// type_ref_with_module ['(' top_type_list? ')']
private static boolean type_3(PsiBuilder b, int l) {
if (!recursion_guard_(b, l, "type_3")) return false;
boolean r, p;
Marker m = enter_section_(b, l, _NONE_);
r = type_ref_with_module(b, l + 1);
p = r; // pin = 1
r = r && type_3_1(b, l + 1);
exit_section_(b, l, m, r, p, null);
return r || p;
}
// ['(' top_type_list? ')']
private static boolean type_3_1(PsiBuilder b, int l) {
if (!recursion_guard_(b, l, "type_3_1")) return false;
type_3_1_0(b, l + 1);
return true;
}
// '(' top_type_list? ')'
private static boolean type_3_1_0(PsiBuilder b, int l) {
if (!recursion_guard_(b, l, "type_3_1_0")) return false;
boolean r, p;
Marker m = enter_section_(b, l, _NONE_);
r = consumeToken(b, ERL_PAR_LEFT);
p = r; // pin = 1
r = r && report_error_(b, type_3_1_0_1(b, l + 1));
r = p && consumeToken(b, ERL_PAR_RIGHT) && r;
exit_section_(b, l, m, r, p, null);
return r || p;
}
// top_type_list?
private static boolean type_3_1_0_1(PsiBuilder b, int l) {
if (!recursion_guard_(b, l, "type_3_1_0_1")) return false;
top_type_list(b, l + 1);
return true;
}
// q_var ['::' top_type]
private static boolean type_5(PsiBuilder b, int l) {
if (!recursion_guard_(b, l, "type_5")) return false;
boolean r, p;
Marker m = enter_section_(b, l, _NONE_);
r = q_var(b, l + 1);
p = r; // pin = 1
r = r && type_5_1(b, l + 1);
exit_section_(b, l, m, r, p, null);
return r || p;
}
// ['::' top_type]
private static boolean type_5_1(PsiBuilder b, int l) {
if (!recursion_guard_(b, l, "type_5_1")) return false;
type_5_1_0(b, l + 1);
return true;
}
// '::' top_type
private static boolean type_5_1_0(PsiBuilder b, int l) {
if (!recursion_guard_(b, l, "type_5_1_0")) return false;
boolean r, p;
Marker m = enter_section_(b, l, _NONE_);
r = consumeToken(b, ERL_COLON_COLON);
p = r; // pin = 1
r = r && top_type(b, l + 1);
exit_section_(b, l, m, r, p, null);
return r || p;
}
// '[' [top_type [',' '...']] ']'
private static boolean type_6(PsiBuilder b, int l) {
if (!recursion_guard_(b, l, "type_6")) return false;
boolean r, p;
Marker m = enter_section_(b, l, _NONE_);
r = consumeToken(b, ERL_BRACKET_LEFT);
p = r; // pin = 1
r = r && report_error_(b, type_6_1(b, l + 1));
r = p && consumeToken(b, ERL_BRACKET_RIGHT) && r;
exit_section_(b, l, m, r, p, null);
return r || p;
}
// [top_type [',' '...']]
private static boolean type_6_1(PsiBuilder b, int l) {
if (!recursion_guard_(b, l, "type_6_1")) return false;
type_6_1_0(b, l + 1);
return true;
}
// top_type [',' '...']
private static boolean type_6_1_0(PsiBuilder b, int l) {
if (!recursion_guard_(b, l, "type_6_1_0")) return false;
boolean r, p;
Marker m = enter_section_(b, l, _NONE_);
r = top_type(b, l + 1);
p = r; // pin = 1
r = r && type_6_1_0_1(b, l + 1);
exit_section_(b, l, m, r, p, null);
return r || p;
}
// [',' '...']
private static boolean type_6_1_0_1(PsiBuilder b, int l) {
if (!recursion_guard_(b, l, "type_6_1_0_1")) return false;
type_6_1_0_1_0(b, l + 1);
return true;
}
// ',' '...'
private static boolean type_6_1_0_1_0(PsiBuilder b, int l) {
if (!recursion_guard_(b, l, "type_6_1_0_1_0")) return false;
boolean r, p;
Marker m = enter_section_(b, l, _NONE_);
r = consumeToken(b, ERL_COMMA);
p = r; // pin = 1
r = r && consumeToken(b, ERL_DOT_DOT_DOT);
exit_section_(b, l, m, r, p, null);
return r || p;
}
// record_hash record_ref '{' field_type_list? '}'
private static boolean type_8(PsiBuilder b, int l) {
if (!recursion_guard_(b, l, "type_8")) return false;
boolean r, p;
Marker m = enter_section_(b, l, _NONE_);
r = record_hash(b, l + 1);
p = r; // pin = 1
r = r && report_error_(b, record_ref(b, l + 1));
r = p && report_error_(b, consumeToken(b, ERL_CURLY_LEFT)) && r;
r = p && report_error_(b, type_8_3(b, l + 1)) && r;
r = p && consumeToken(b, ERL_CURLY_RIGHT) && r;
exit_section_(b, l, m, r, p, null);
return r || p;
}
// field_type_list?
private static boolean type_8_3(PsiBuilder b, int l) {
if (!recursion_guard_(b, l, "type_8_3")) return false;
field_type_list(b, l + 1);
return true;
}
/* ********************************************************** */
// q_atom argument_definition_list '::' top_type
static boolean type_body(PsiBuilder b, int l) {
if (!recursion_guard_(b, l, "type_body")) return false;
boolean r, p;
Marker m = enter_section_(b, l, _NONE_);
r = q_atom(b, l + 1);
p = r; // pin = 1
r = r && report_error_(b, argument_definition_list(b, l + 1));
r = p && report_error_(b, consumeToken(b, ERL_COLON_COLON)) && r;
r = p && top_type(b, l + 1) && r;
exit_section_(b, l, m, r, p, null);
return r || p;
}
/* ********************************************************** */
// '-' ('type'|'opaque') <<attribute_tail type_body>>
public static boolean type_definition(PsiBuilder b, int l) {
if (!recursion_guard_(b, l, "type_definition")) return false;
if (!nextTokenIs(b, ERL_OP_MINUS)) return false;
boolean r, p;
Marker m = enter_section_(b, l, _NONE_, ERL_TYPE_DEFINITION, null);
r = consumeToken(b, ERL_OP_MINUS);
r = r && type_definition_1(b, l + 1);
p = r; // pin = 2
r = r && attribute_tail(b, l + 1, type_body_parser_);
exit_section_(b, l, m, r, p, null);
return r || p;
}
// 'type'|'opaque'
private static boolean type_definition_1(PsiBuilder b, int l) {
if (!recursion_guard_(b, l, "type_definition_1")) return false;
boolean r;
Marker m = enter_section_(b);
r = consumeToken(b, "type");
if (!r) r = consumeToken(b, "opaque");
exit_section_(b, m, null, r);
return r;
}
/* ********************************************************** */
// q_atom '(' top_type_list ')' | top_type
public static boolean type_guard(PsiBuilder b, int l) {
if (!recursion_guard_(b, l, "type_guard")) return false;
boolean r;
Marker m = enter_section_(b, l, _NONE_, ERL_TYPE_GUARD, "<type guard>");
r = type_guard_0(b, l + 1);
if (!r) r = top_type(b, l + 1);
exit_section_(b, l, m, r, false, null);
return r;
}
// q_atom '(' top_type_list ')'
private static boolean type_guard_0(PsiBuilder b, int l) {
if (!recursion_guard_(b, l, "type_guard_0")) return false;
boolean r;
Marker m = enter_section_(b);
r = q_atom(b, l + 1);
r = r && consumeToken(b, ERL_PAR_LEFT);
r = r && top_type_list(b, l + 1);
r = r && consumeToken(b, ERL_PAR_RIGHT);
exit_section_(b, m, null, r);
return r;
}
/* ********************************************************** */
// type_guard (',' type_guard)*
static boolean type_guard_list(PsiBuilder b, int l) {
if (!recursion_guard_(b, l, "type_guard_list")) return false;
boolean r, p;
Marker m = enter_section_(b, l, _NONE_);
r = type_guard(b, l + 1);
p = r; // pin = 1
r = r && type_guard_list_1(b, l + 1);
exit_section_(b, l, m, r, p, null);
return r || p;
}
// (',' type_guard)*
private static boolean type_guard_list_1(PsiBuilder b, int l) {
if (!recursion_guard_(b, l, "type_guard_list_1")) return false;
int c = current_position_(b);
while (true) {
if (!type_guard_list_1_0(b, l + 1)) break;
if (!empty_element_parsed_guard_(b, "type_guard_list_1", c)) break;
c = current_position_(b);
}
return true;
}
// ',' type_guard
private static boolean type_guard_list_1_0(PsiBuilder b, int l) {
if (!recursion_guard_(b, l, "type_guard_list_1_0")) return false;
boolean r, p;
Marker m = enter_section_(b, l, _NONE_);
r = consumeToken(b, ERL_COMMA);
p = r; // pin = 1
r = r && type_guard(b, l + 1);
exit_section_(b, l, m, r, p, null);
return r || p;
}
/* ********************************************************** */
// type ('|' type)*
static boolean type_list(PsiBuilder b, int l) {
if (!recursion_guard_(b, l, "type_list")) return false;
boolean r, p;
Marker m = enter_section_(b, l, _NONE_);
r = type(b, l + 1);
p = r; // pin = 1
r = r && type_list_1(b, l + 1);
exit_section_(b, l, m, r, p, null);
return r || p;
}
// ('|' type)*
private static boolean type_list_1(PsiBuilder b, int l) {
if (!recursion_guard_(b, l, "type_list_1")) return false;
int c = current_position_(b);
while (true) {
if (!type_list_1_0(b, l + 1)) break;
if (!empty_element_parsed_guard_(b, "type_list_1", c)) break;
c = current_position_(b);
}
return true;
}
// '|' type
private static boolean type_list_1_0(PsiBuilder b, int l) {
if (!recursion_guard_(b, l, "type_list_1_0")) return false;
boolean r, p;
Marker m = enter_section_(b, l, _NONE_);
r = consumeToken(b, ERL_OP_OR);
p = r; // pin = 1
r = r && type(b, l + 1);
exit_section_(b, l, m, r, p, null);
return r || p;
}
/* ********************************************************** */
// q_atom
public static boolean type_ref(PsiBuilder b, int l) {
if (!recursion_guard_(b, l, "type_ref")) return false;
boolean r;
Marker m = enter_section_(b, l, _NONE_, ERL_TYPE_REF, "<type ref>");
r = q_atom(b, l + 1);
exit_section_(b, l, m, r, false, null);
return r;
}
/* ********************************************************** */
// [module_ref ':'] type_ref
static boolean type_ref_with_module(PsiBuilder b, int l) {
if (!recursion_guard_(b, l, "type_ref_with_module")) return false;
boolean r;
Marker m = enter_section_(b);
r = type_ref_with_module_0(b, l + 1);
r = r && type_ref(b, l + 1);
exit_section_(b, m, null, r);
return r;
}
// [module_ref ':']
private static boolean type_ref_with_module_0(PsiBuilder b, int l) {
if (!recursion_guard_(b, l, "type_ref_with_module_0")) return false;
type_ref_with_module_0_0(b, l + 1);
return true;
}
// module_ref ':'
private static boolean type_ref_with_module_0_0(PsiBuilder b, int l) {
if (!recursion_guard_(b, l, "type_ref_with_module_0_0")) return false;
boolean r;
Marker m = enter_section_(b);
r = module_ref(b, l + 1);
r = r && consumeToken(b, ERL_COLON);
exit_section_(b, m, null, r);
return r;
}
/* ********************************************************** */
// fun_type type_sig_guard?
public static boolean type_sig(PsiBuilder b, int l) {
if (!recursion_guard_(b, l, "type_sig")) return false;
if (!nextTokenIs(b, ERL_PAR_LEFT)) return false;
boolean r, p;
Marker m = enter_section_(b, l, _NONE_, ERL_TYPE_SIG, null);
r = fun_type(b, l + 1);
p = r; // pin = 1
r = r && type_sig_1(b, l + 1);
exit_section_(b, l, m, r, p, null);
return r || p;
}
// type_sig_guard?
private static boolean type_sig_1(PsiBuilder b, int l) {
if (!recursion_guard_(b, l, "type_sig_1")) return false;
type_sig_guard(b, l + 1);
return true;
}
/* ********************************************************** */
// when type_guard_list
public static boolean type_sig_guard(PsiBuilder b, int l) {
if (!recursion_guard_(b, l, "type_sig_guard")) return false;
if (!nextTokenIs(b, ERL_WHEN)) return false;
boolean r;
Marker m = enter_section_(b);
r = consumeToken(b, ERL_WHEN);
r = r && type_guard_list(b, l + 1);
exit_section_(b, m, ERL_TYPE_SIG_GUARD, r);
return r;
}
/* ********************************************************** */
// type_sig (';' type_sig)*
static boolean type_sigs_list(PsiBuilder b, int l) {
if (!recursion_guard_(b, l, "type_sigs_list")) return false;
if (!nextTokenIs(b, ERL_PAR_LEFT)) return false;
boolean r, p;
Marker m = enter_section_(b, l, _NONE_);
r = type_sig(b, l + 1);
p = r; // pin = 1
r = r && type_sigs_list_1(b, l + 1);
exit_section_(b, l, m, r, p, null);
return r || p;
}
// (';' type_sig)*
private static boolean type_sigs_list_1(PsiBuilder b, int l) {
if (!recursion_guard_(b, l, "type_sigs_list_1")) return false;
int c = current_position_(b);
while (true) {
if (!type_sigs_list_1_0(b, l + 1)) break;
if (!empty_element_parsed_guard_(b, "type_sigs_list_1", c)) break;
c = current_position_(b);
}
return true;
}
// ';' type_sig
private static boolean type_sigs_list_1_0(PsiBuilder b, int l) {
if (!recursion_guard_(b, l, "type_sigs_list_1_0")) return false;
boolean r, p;
Marker m = enter_section_(b, l, _NONE_);
r = consumeToken(b, ERL_SEMI);
p = r; // pin = 1
r = r && type_sig(b, l + 1);
exit_section_(b, l, m, r, p, null);
return r || p;
}
/* ********************************************************** */
// fun_type_sigs_braces | fun_type_sigs
static boolean type_spec(PsiBuilder b, int l) {
if (!recursion_guard_(b, l, "type_spec")) return false;
boolean r;
Marker m = enter_section_(b);
r = fun_type_sigs_braces(b, l + 1);
if (!r) r = fun_type_sigs(b, l + 1);
exit_section_(b, m, null, r);
return r;
}
/* ********************************************************** */
// expression (',' typed_record_fields | '::' top_type)
public static boolean typed_attr_val(PsiBuilder b, int l) {
if (!recursion_guard_(b, l, "typed_attr_val")) return false;
boolean r;
Marker m = enter_section_(b, l, _NONE_, ERL_TYPED_ATTR_VAL, "<typed attr val>");
r = expression(b, l + 1, -1);
r = r && typed_attr_val_1(b, l + 1);
exit_section_(b, l, m, r, false, null);
return r;
}
// ',' typed_record_fields | '::' top_type
private static boolean typed_attr_val_1(PsiBuilder b, int l) {
if (!recursion_guard_(b, l, "typed_attr_val_1")) return false;
boolean r;
Marker m = enter_section_(b);
r = typed_attr_val_1_0(b, l + 1);
if (!r) r = typed_attr_val_1_1(b, l + 1);
exit_section_(b, m, null, r);
return r;
}
// ',' typed_record_fields
private static boolean typed_attr_val_1_0(PsiBuilder b, int l) {
if (!recursion_guard_(b, l, "typed_attr_val_1_0")) return false;
boolean r;
Marker m = enter_section_(b);
r = consumeToken(b, ERL_COMMA);
r = r && typed_record_fields(b, l + 1);
exit_section_(b, m, null, r);
return r;
}
// '::' top_type
private static boolean typed_attr_val_1_1(PsiBuilder b, int l) {
if (!recursion_guard_(b, l, "typed_attr_val_1_1")) return false;
boolean r;
Marker m = enter_section_(b);
r = consumeToken(b, ERL_COLON_COLON);
r = r && top_type(b, l + 1);
exit_section_(b, m, null, r);
return r;
}
/* ********************************************************** */
// q_atom ['=' expression] ['::' top_type]
public static boolean typed_expr(PsiBuilder b, int l) {
if (!recursion_guard_(b, l, "typed_expr")) return false;
boolean r, p;
Marker m = enter_section_(b, l, _NONE_, ERL_TYPED_EXPR, "<typed expr>");
r = q_atom(b, l + 1);
p = r; // pin = 1
r = r && report_error_(b, typed_expr_1(b, l + 1));
r = p && typed_expr_2(b, l + 1) && r;
exit_section_(b, l, m, r, p, null);
return r || p;
}
// ['=' expression]
private static boolean typed_expr_1(PsiBuilder b, int l) {
if (!recursion_guard_(b, l, "typed_expr_1")) return false;
typed_expr_1_0(b, l + 1);
return true;
}
// '=' expression
private static boolean typed_expr_1_0(PsiBuilder b, int l) {
if (!recursion_guard_(b, l, "typed_expr_1_0")) return false;
boolean r, p;
Marker m = enter_section_(b, l, _NONE_);
r = consumeToken(b, ERL_OP_EQ);
p = r; // pin = 1
r = r && expression(b, l + 1, -1);
exit_section_(b, l, m, r, p, null);
return r || p;
}
// ['::' top_type]
private static boolean typed_expr_2(PsiBuilder b, int l) {
if (!recursion_guard_(b, l, "typed_expr_2")) return false;
typed_expr_2_0(b, l + 1);
return true;
}
// '::' top_type
private static boolean typed_expr_2_0(PsiBuilder b, int l) {
if (!recursion_guard_(b, l, "typed_expr_2_0")) return false;
boolean r, p;
Marker m = enter_section_(b, l, _NONE_);
r = consumeToken(b, ERL_COLON_COLON);
p = r; // pin = 1
r = r && top_type(b, l + 1);
exit_section_(b, l, m, r, p, null);
return r || p;
}
/* ********************************************************** */
// generic_function_call_expression | typed_expr
static boolean typed_expr_or_macros(PsiBuilder b, int l) {
if (!recursion_guard_(b, l, "typed_expr_or_macros")) return false;
boolean r;
Marker m = enter_section_(b);
r = generic_function_call_expression(b, l + 1);
if (!r) r = typed_expr(b, l + 1);
exit_section_(b, m, null, r);
return r;
}
/* ********************************************************** */
// typed_expr_or_macros (',' typed_expr_or_macros)*
static boolean typed_exprs(PsiBuilder b, int l) {
if (!recursion_guard_(b, l, "typed_exprs")) return false;
boolean r, p;
Marker m = enter_section_(b, l, _NONE_);
r = typed_expr_or_macros(b, l + 1);
p = r; // pin = 1
r = r && typed_exprs_1(b, l + 1);
exit_section_(b, l, m, r, p, null);
return r || p;
}
// (',' typed_expr_or_macros)*
private static boolean typed_exprs_1(PsiBuilder b, int l) {
if (!recursion_guard_(b, l, "typed_exprs_1")) return false;
int c = current_position_(b);
while (true) {
if (!typed_exprs_1_0(b, l + 1)) break;
if (!empty_element_parsed_guard_(b, "typed_exprs_1", c)) break;
c = current_position_(b);
}
return true;
}
// ',' typed_expr_or_macros
private static boolean typed_exprs_1_0(PsiBuilder b, int l) {
if (!recursion_guard_(b, l, "typed_exprs_1_0")) return false;
boolean r, p;
Marker m = enter_section_(b, l, _NONE_);
r = consumeToken(b, ERL_COMMA);
p = r; // pin = 1
r = r && typed_expr_or_macros(b, l + 1);
exit_section_(b, l, m, r, p, null);
return r || p;
}
/* ********************************************************** */
// '{' typed_exprs? '}'
public static boolean typed_record_fields(PsiBuilder b, int l) {
if (!recursion_guard_(b, l, "typed_record_fields")) return false;
if (!nextTokenIs(b, ERL_CURLY_LEFT)) return false;
boolean r, p;
Marker m = enter_section_(b, l, _NONE_, ERL_TYPED_RECORD_FIELDS, null);
r = consumeToken(b, ERL_CURLY_LEFT);
p = r; // pin = 1
r = r && report_error_(b, typed_record_fields_1(b, l + 1));
r = p && consumeToken(b, ERL_CURLY_RIGHT) && r;
exit_section_(b, l, m, r, p, null);
return r || p;
}
// typed_exprs?
private static boolean typed_record_fields_1(PsiBuilder b, int l) {
if (!recursion_guard_(b, l, "typed_record_fields_1")) return false;
typed_exprs(b, l + 1);
return true;
}
/* ********************************************************** */
// Expression root: expression
// Operator priority table:
// 0: ATOM(catch_expression)
// 1: BINARY(send_expression)
// 2: BINARY(assignment_expression)
// 3: BINARY(orelse_expression)
// 4: BINARY(andalso_expression)
// 5: BINARY(comp_op_expression)
// 6: BINARY(list_op_expression)
// 7: BINARY(additive_expression)
// 8: BINARY(multiplicative_expression)
// 9: ATOM(atom_with_arity_expression)
// 10: PREFIX(prefix_expression)
// 11: BINARY(colon_qualified_expression)
// 12: ATOM(function_call_expression) ATOM(global_function_call_expression) ATOM(generic_function_call_expression) POSTFIX(anonymous_call_expression)
// POSTFIX(record_expression) ATOM(record2_expression) POSTFIX(map_expression) ATOM(qualified_expression)
// 13: ATOM(max_expression)
// 14: PREFIX(parenthesized_expression)
public static boolean expression(PsiBuilder b, int l, int g) {
if (!recursion_guard_(b, l, "expression")) return false;
addVariant(b, "<expression>");
boolean r, p;
Marker m = enter_section_(b, l, _NONE_, "<expression>");
r = catch_expression(b, l + 1);
if (!r) r = atom_with_arity_expression(b, l + 1);
if (!r) r = prefix_expression(b, l + 1);
if (!r) r = function_call_expression(b, l + 1);
if (!r) r = global_function_call_expression(b, l + 1);
if (!r) r = generic_function_call_expression(b, l + 1);
if (!r) r = record2_expression(b, l + 1);
if (!r) r = qualified_expression(b, l + 1);
if (!r) r = max_expression(b, l + 1);
if (!r) r = parenthesized_expression(b, l + 1);
p = r;
r = r && expression_0(b, l + 1, g);
exit_section_(b, l, m, null, r, p, null);
return r || p;
}
public static boolean expression_0(PsiBuilder b, int l, int g) {
if (!recursion_guard_(b, l, "expression_0")) return false;
boolean r = true;
while (true) {
Marker m = enter_section_(b, l, _LEFT_, null);
if (g < 1 && consumeTokenSmart(b, ERL_OP_EXL)) {
r = expression(b, l, 0);
exit_section_(b, l, m, ERL_SEND_EXPRESSION, r, true, null);
}
else if (g < 2 && consumeTokenSmart(b, ERL_OP_EQ)) {
r = expression(b, l, 1);
exit_section_(b, l, m, ERL_ASSIGNMENT_EXPRESSION, r, true, null);
}
else if (g < 3 && consumeTokenSmart(b, ERL_ORELSE)) {
r = expression(b, l, 3);
exit_section_(b, l, m, ERL_ORELSE_EXPRESSION, r, true, null);
}
else if (g < 4 && consumeTokenSmart(b, ERL_ANDALSO)) {
r = expression(b, l, 4);
exit_section_(b, l, m, ERL_ANDALSO_EXPRESSION, r, true, null);
}
else if (g < 5 && comp_op(b, l + 1)) {
r = expression(b, l, 5);
exit_section_(b, l, m, ERL_COMP_OP_EXPRESSION, r, true, null);
}
else if (g < 6 && list_op(b, l + 1)) {
r = expression(b, l, 5);
exit_section_(b, l, m, ERL_LIST_OP_EXPRESSION, r, true, null);
}
else if (g < 7 && add_op(b, l + 1)) {
r = expression(b, l, 7);
exit_section_(b, l, m, ERL_ADDITIVE_EXPRESSION, r, true, null);
}
else if (g < 8 && multiplicative_expression_0(b, l + 1)) {
r = expression(b, l, 8);
exit_section_(b, l, m, ERL_MULTIPLICATIVE_EXPRESSION, r, true, null);
}
else if (g < 11 && consumeTokenSmart(b, ERL_COLON)) {
r = expression(b, l, 11);
exit_section_(b, l, m, ERL_COLON_QUALIFIED_EXPRESSION, r, true, null);
}
else if (g < 12 && anonymous_call_expression_0(b, l + 1)) {
r = true;
exit_section_(b, l, m, ERL_ANONYMOUS_CALL_EXPRESSION, r, true, null);
}
else if (g < 12 && record_tail(b, l + 1)) {
r = true;
exit_section_(b, l, m, ERL_RECORD_EXPRESSION, r, true, null);
}
else if (g < 12 && map_tuple(b, l + 1)) {
r = true;
exit_section_(b, l, m, ERL_MAP_EXPRESSION, r, true, null);
}
else {
exit_section_(b, l, m, null, false, false, null);
break;
}
}
return r;
}
// catch expression
public static boolean catch_expression(PsiBuilder b, int l) {
if (!recursion_guard_(b, l, "catch_expression")) return false;
if (!nextTokenIsSmart(b, ERL_CATCH)) return false;
boolean r, p;
Marker m = enter_section_(b, l, _NONE_, ERL_CATCH_EXPRESSION, "<expression>");
r = consumeTokenSmart(b, ERL_CATCH);
p = r; // pin = 1
r = r && expression(b, l + 1, -1);
exit_section_(b, l, m, r, p, null);
return r || p;
}
// mult_op &(!(atom (',' | '>>')))
private static boolean multiplicative_expression_0(PsiBuilder b, int l) {
if (!recursion_guard_(b, l, "multiplicative_expression_0")) return false;
boolean r;
Marker m = enter_section_(b);
r = mult_op(b, l + 1);
r = r && multiplicative_expression_0_1(b, l + 1);
exit_section_(b, m, null, r);
return r;
}
// &(!(atom (',' | '>>')))
private static boolean multiplicative_expression_0_1(PsiBuilder b, int l) {
if (!recursion_guard_(b, l, "multiplicative_expression_0_1")) return false;
boolean r;
Marker m = enter_section_(b, l, _AND_);
r = multiplicative_expression_0_1_0(b, l + 1);
exit_section_(b, l, m, r, false, null);
return r;
}
// !(atom (',' | '>>'))
private static boolean multiplicative_expression_0_1_0(PsiBuilder b, int l) {
if (!recursion_guard_(b, l, "multiplicative_expression_0_1_0")) return false;
boolean r;
Marker m = enter_section_(b, l, _NOT_);
r = !multiplicative_expression_0_1_0_0(b, l + 1);
exit_section_(b, l, m, r, false, null);
return r;
}
// atom (',' | '>>')
private static boolean multiplicative_expression_0_1_0_0(PsiBuilder b, int l) {
if (!recursion_guard_(b, l, "multiplicative_expression_0_1_0_0")) return false;
boolean r;
Marker m = enter_section_(b);
r = atom(b, l + 1);
r = r && multiplicative_expression_0_1_0_0_1(b, l + 1);
exit_section_(b, m, null, r);
return r;
}
// ',' | '>>'
private static boolean multiplicative_expression_0_1_0_0_1(PsiBuilder b, int l) {
if (!recursion_guard_(b, l, "multiplicative_expression_0_1_0_0_1")) return false;
boolean r;
Marker m = enter_section_(b);
r = consumeTokenSmart(b, ERL_COMMA);
if (!r) r = consumeTokenSmart(b, ERL_BIN_END);
exit_section_(b, m, null, r);
return r;
}
// <<isModeOn "ATOM_ATTRIBUTE">> q_atom '/' integer
public static boolean atom_with_arity_expression(PsiBuilder b, int l) {
if (!recursion_guard_(b, l, "atom_with_arity_expression")) return false;
boolean r;
Marker m = enter_section_(b, l, _NONE_, ERL_ATOM_WITH_ARITY_EXPRESSION, "<expression>");
r = isModeOn(b, l + 1, "ATOM_ATTRIBUTE");
r = r && q_atom(b, l + 1);
r = r && consumeToken(b, ERL_OP_AR_DIV);
r = r && consumeToken(b, ERL_INTEGER);
exit_section_(b, l, m, r, false, null);
return r;
}
public static boolean prefix_expression(PsiBuilder b, int l) {
if (!recursion_guard_(b, l, "prefix_expression")) return false;
boolean r, p;
Marker m = enter_section_(b, l, _NONE_, null);
r = prefix_op(b, l + 1);
p = r;
r = p && expression(b, l, 10);
exit_section_(b, l, m, ERL_PREFIX_EXPRESSION, r, p, null);
return r || p;
}
// q_atom argument_list ¬_function_definition
public static boolean function_call_expression(PsiBuilder b, int l) {
if (!recursion_guard_(b, l, "function_call_expression")) return false;
boolean r;
Marker m = enter_section_(b, l, _NONE_, ERL_FUNCTION_CALL_EXPRESSION, "<expression>");
r = q_atom(b, l + 1);
r = r && argument_list(b, l + 1);
r = r && function_call_expression_2(b, l + 1);
exit_section_(b, l, m, r, false, null);
return r;
}
// ¬_function_definition
private static boolean function_call_expression_2(PsiBuilder b, int l) {
if (!recursion_guard_(b, l, "function_call_expression_2")) return false;
boolean r;
Marker m = enter_section_(b, l, _AND_);
r = not_function_definition(b, l + 1);
exit_section_(b, l, m, r, false, null);
return r;
}
// module_ref ':' (function_call_expression)
public static boolean global_function_call_expression(PsiBuilder b, int l) {
if (!recursion_guard_(b, l, "global_function_call_expression")) return false;
boolean r;
Marker m = enter_section_(b, l, _NONE_, ERL_GLOBAL_FUNCTION_CALL_EXPRESSION, "<expression>");
r = module_ref(b, l + 1);
r = r && consumeToken(b, ERL_COLON);
r = r && global_function_call_expression_2(b, l + 1);
exit_section_(b, l, m, r, false, null);
return r;
}
// (function_call_expression)
private static boolean global_function_call_expression_2(PsiBuilder b, int l) {
if (!recursion_guard_(b, l, "global_function_call_expression_2")) return false;
boolean r;
Marker m = enter_section_(b);
r = function_call_expression(b, l + 1);
exit_section_(b, m, null, r);
return r;
}
// [q_atom_or_var ':'] (q_atom_or_var | macros) argument_list ¬_function_definition
public static boolean generic_function_call_expression(PsiBuilder b, int l) {
if (!recursion_guard_(b, l, "generic_function_call_expression")) return false;
boolean r;
Marker m = enter_section_(b, l, _NONE_, ERL_GENERIC_FUNCTION_CALL_EXPRESSION, "<expression>");
r = generic_function_call_expression_0(b, l + 1);
r = r && generic_function_call_expression_1(b, l + 1);
r = r && argument_list(b, l + 1);
r = r && generic_function_call_expression_3(b, l + 1);
exit_section_(b, l, m, r, false, null);
return r;
}
// [q_atom_or_var ':']
private static boolean generic_function_call_expression_0(PsiBuilder b, int l) {
if (!recursion_guard_(b, l, "generic_function_call_expression_0")) return false;
generic_function_call_expression_0_0(b, l + 1);
return true;
}
// q_atom_or_var ':'
private static boolean generic_function_call_expression_0_0(PsiBuilder b, int l) {
if (!recursion_guard_(b, l, "generic_function_call_expression_0_0")) return false;
boolean r;
Marker m = enter_section_(b);
r = q_atom_or_var(b, l + 1);
r = r && consumeToken(b, ERL_COLON);
exit_section_(b, m, null, r);
return r;
}
// q_atom_or_var | macros
private static boolean generic_function_call_expression_1(PsiBuilder b, int l) {
if (!recursion_guard_(b, l, "generic_function_call_expression_1")) return false;
boolean r;
Marker m = enter_section_(b);
r = q_atom_or_var(b, l + 1);
if (!r) r = macros(b, l + 1);
exit_section_(b, m, null, r);
return r;
}
// ¬_function_definition
private static boolean generic_function_call_expression_3(PsiBuilder b, int l) {
if (!recursion_guard_(b, l, "generic_function_call_expression_3")) return false;
boolean r;
Marker m = enter_section_(b, l, _AND_);
r = not_function_definition(b, l + 1);
exit_section_(b, l, m, r, false, null);
return r;
}
// argument_list ¬_function_definition
private static boolean anonymous_call_expression_0(PsiBuilder b, int l) {
if (!recursion_guard_(b, l, "anonymous_call_expression_0")) return false;
boolean r;
Marker m = enter_section_(b);
r = argument_list(b, l + 1);
r = r && anonymous_call_expression_0_1(b, l + 1);
exit_section_(b, m, null, r);
return r;
}
// ¬_function_definition
private static boolean anonymous_call_expression_0_1(PsiBuilder b, int l) {
if (!recursion_guard_(b, l, "anonymous_call_expression_0_1")) return false;
boolean r;
Marker m = enter_section_(b, l, _AND_);
r = not_function_definition(b, l + 1);
exit_section_(b, l, m, r, false, null);
return r;
}
// record_tail
public static boolean record2_expression(PsiBuilder b, int l) {
if (!recursion_guard_(b, l, "record2_expression")) return false;
if (!nextTokenIsSmart(b, ERL_RADIX, ERL_QMARK)) return false;
boolean r;
Marker m = enter_section_(b, l, _NONE_, ERL_RECORD_EXPRESSION, "<expression>");
r = record_tail(b, l + 1);
exit_section_(b, l, m, r, false, null);
return r;
}
// q_atom '.' q_atom !'('
public static boolean qualified_expression(PsiBuilder b, int l) {
if (!recursion_guard_(b, l, "qualified_expression")) return false;
boolean r;
Marker m = enter_section_(b, l, _NONE_, ERL_QUALIFIED_EXPRESSION, "<expression>");
r = q_atom(b, l + 1);
r = r && consumeToken(b, ERL_DOT);
r = r && q_atom(b, l + 1);
r = r && qualified_expression_3(b, l + 1);
exit_section_(b, l, m, r, false, null);
return r;
}
// !'('
private static boolean qualified_expression_3(PsiBuilder b, int l) {
if (!recursion_guard_(b, l, "qualified_expression_3")) return false;
boolean r;
Marker m = enter_section_(b, l, _NOT_);
r = !consumeTokenSmart(b, ERL_PAR_LEFT);
exit_section_(b, l, m, r, false, null);
return r;
}
// atomic
// | q_var
// | tuple_expression
// | expr_with_brackets
// | case_expression
// | if_expression
// | binary_comprehension
// | map_comprehension
// | map_construct_expression
// | receive_expression
// | fun_expression
// | try_expression
// | binary_expression
// | begin_end_expression
public static boolean max_expression(PsiBuilder b, int l) {
if (!recursion_guard_(b, l, "max_expression")) return false;
boolean r;
Marker m = enter_section_(b, l, _COLLAPSE_, ERL_MAX_EXPRESSION, "<expression>");
r = atomic(b, l + 1);
if (!r) r = q_var(b, l + 1);
if (!r) r = tuple_expression(b, l + 1);
if (!r) r = expr_with_brackets(b, l + 1);
if (!r) r = case_expression(b, l + 1);
if (!r) r = if_expression(b, l + 1);
if (!r) r = binary_comprehension(b, l + 1);
if (!r) r = map_comprehension(b, l + 1);
if (!r) r = map_construct_expression(b, l + 1);
if (!r) r = receive_expression(b, l + 1);
if (!r) r = fun_expression(b, l + 1);
if (!r) r = try_expression(b, l + 1);
if (!r) r = binary_expression(b, l + 1);
if (!r) r = begin_end_expression(b, l + 1);
exit_section_(b, l, m, r, false, null);
return r;
}
public static boolean parenthesized_expression(PsiBuilder b, int l) {
if (!recursion_guard_(b, l, "parenthesized_expression")) return false;
if (!nextTokenIsSmart(b, ERL_PAR_LEFT)) return false;
boolean r, p;
Marker m = enter_section_(b, l, _NONE_, null);
r = consumeTokenSmart(b, ERL_PAR_LEFT);
p = r;
r = p && expression(b, l, -1);
r = p && report_error_(b, consumeToken(b, ERL_PAR_RIGHT)) && r;
exit_section_(b, l, m, ERL_PARENTHESIZED_EXPRESSION, r, p, null);
return r || p;
}
final static Parser app_atom_parser_ = new Parser() {
public boolean parse(PsiBuilder b, int l) {
return app_atom(b, l + 1);
}
};
final static Parser app_env_expression_parser_ = new Parser() {
public boolean parse(PsiBuilder b, int l) {
return app_env_expression(b, l + 1);
}
};
final static Parser app_expression_1_0_parser_ = new Parser() {
public boolean parse(PsiBuilder b, int l) {
return app_expression_1_0(b, l + 1);
}
};
final static Parser app_module_expression_parser_ = new Parser() {
public boolean parse(PsiBuilder b, int l) {
return app_module_expression(b, l + 1);
}
};
final static Parser app_parameter_1_0_0_0_parser_ = new Parser() {
public boolean parse(PsiBuilder b, int l) {
return app_parameter_1_0_0_0(b, l + 1);
}
};
final static Parser app_parameter_1_10_0_0_parser_ = new Parser() {
public boolean parse(PsiBuilder b, int l) {
return app_parameter_1_10_0_0(b, l + 1);
}
};
final static Parser app_parameter_1_11_0_0_parser_ = new Parser() {
public boolean parse(PsiBuilder b, int l) {
return app_parameter_1_11_0_0(b, l + 1);
}
};
final static Parser app_parameter_1_12_0_0_parser_ = new Parser() {
public boolean parse(PsiBuilder b, int l) {
return app_parameter_1_12_0_0(b, l + 1);
}
};
final static Parser app_parameter_1_1_0_0_parser_ = new Parser() {
public boolean parse(PsiBuilder b, int l) {
return app_parameter_1_1_0_0(b, l + 1);
}
};
final static Parser app_parameter_1_2_0_0_parser_ = new Parser() {
public boolean parse(PsiBuilder b, int l) {
return app_parameter_1_2_0_0(b, l + 1);
}
};
final static Parser app_parameter_1_3_0_0_parser_ = new Parser() {
public boolean parse(PsiBuilder b, int l) {
return app_parameter_1_3_0_0(b, l + 1);
}
};
final static Parser app_parameter_1_4_0_0_parser_ = new Parser() {
public boolean parse(PsiBuilder b, int l) {
return app_parameter_1_4_0_0(b, l + 1);
}
};
final static Parser app_parameter_1_5_0_0_parser_ = new Parser() {
public boolean parse(PsiBuilder b, int l) {
return app_parameter_1_5_0_0(b, l + 1);
}
};
final static Parser app_parameter_1_6_0_0_parser_ = new Parser() {
public boolean parse(PsiBuilder b, int l) {
return app_parameter_1_6_0_0(b, l + 1);
}
};
final static Parser app_parameter_1_7_0_0_parser_ = new Parser() {
public boolean parse(PsiBuilder b, int l) {
return app_parameter_1_7_0_0(b, l + 1);
}
};
final static Parser app_parameter_1_8_0_0_parser_ = new Parser() {
public boolean parse(PsiBuilder b, int l) {
return app_parameter_1_8_0_0(b, l + 1);
}
};
final static Parser app_parameter_1_9_0_0_parser_ = new Parser() {
public boolean parse(PsiBuilder b, int l) {
return app_parameter_1_9_0_0(b, l + 1);
}
};
final static Parser app_parameter_parser_ = new Parser() {
public boolean parse(PsiBuilder b, int l) {
return app_parameter(b, l + 1);
}
};
final static Parser argument_definition_parser_ = new Parser() {
public boolean parse(PsiBuilder b, int l) {
return argument_definition(b, l + 1);
}
};
final static Parser atom_attribute_parser_ = new Parser() {
public boolean parse(PsiBuilder b, int l) {
return atom_attribute(b, l + 1);
}
};
final static Parser binary_expression_parser_ = new Parser() {
public boolean parse(PsiBuilder b, int l) {
return binary_expression(b, l + 1);
}
};
final static Parser config_expr_recover_parser_ = new Parser() {
public boolean parse(PsiBuilder b, int l) {
return config_expr_recover(b, l + 1);
}
};
final static Parser export_functions_parser_ = new Parser() {
public boolean parse(PsiBuilder b, int l) {
return export_functions(b, l + 1);
}
};
final static Parser export_types_parser_ = new Parser() {
public boolean parse(PsiBuilder b, int l) {
return export_types(b, l + 1);
}
};
final static Parser expression_parser_ = new Parser() {
public boolean parse(PsiBuilder b, int l) {
return expression(b, l + 1, -1);
}
};
final static Parser exprs_recover_parser_ = new Parser() {
public boolean parse(PsiBuilder b, int l) {
return exprs_recover(b, l + 1);
}
};
final static Parser form_recover_parser_ = new Parser() {
public boolean parse(PsiBuilder b, int l) {
return form_recover(b, l + 1);
}
};
final static Parser guard_parser_ = new Parser() {
public boolean parse(PsiBuilder b, int l) {
return guard(b, l + 1);
}
};
final static Parser list_expr_or_comprehension_parser_ = new Parser() {
public boolean parse(PsiBuilder b, int l) {
return list_expr_or_comprehension(b, l + 1);
}
};
final static Parser macros_body_parser_ = new Parser() {
public boolean parse(PsiBuilder b, int l) {
return macros_body(b, l + 1);
}
};
final static Parser macros_call_recover_parser_ = new Parser() {
public boolean parse(PsiBuilder b, int l) {
return macros_call_recover(b, l + 1);
}
};
final static Parser map_assoc_parser_ = new Parser() {
public boolean parse(PsiBuilder b, int l) {
return map_assoc(b, l + 1);
}
};
final static Parser optional_callback_functions_parser_ = new Parser() {
public boolean parse(PsiBuilder b, int l) {
return optional_callback_functions(b, l + 1);
}
};
final static Parser try_argument_definition_parser_ = new Parser() {
public boolean parse(PsiBuilder b, int l) {
return try_argument_definition(b, l + 1);
}
};
final static Parser tuple_recoverer_parser_ = new Parser() {
public boolean parse(PsiBuilder b, int l) {
return tuple_recoverer(b, l + 1);
}
};
final static Parser type_body_parser_ = new Parser() {
public boolean parse(PsiBuilder b, int l) {
return type_body(b, l + 1);
}
};
}