// This is a generated file. Not intended for manual editing.
package com.haskforce.parser;
import com.intellij.lang.PsiBuilder;
import com.intellij.lang.PsiBuilder.Marker;
import static com.haskforce.psi.HaskellTypes.*;
import static com.haskforce.psi.HaskellParserUtilBase.*;
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 HaskellParser 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, null);
Marker m = enter_section_(b, 0, _COLLAPSE_, null);
if (t == AKIND) {
r = akind(b, 0);
}
else if (t == ALT) {
r = alt(b, 0);
}
else if (t == ATYPE) {
r = atype(b, 0);
}
else if (t == BKIND) {
r = bkind(b, 0);
}
else if (t == BODY) {
r = body(b, 0);
}
else if (t == CDECL) {
r = cdecl(b, 0);
}
else if (t == CLASSDECL) {
r = classdecl(b, 0);
}
else if (t == CLSCONTEXT) {
r = clscontext(b, 0);
}
else if (t == CON) {
r = con(b, 0);
}
else if (t == CONID) {
r = conid(b, 0);
}
else if (t == CONOP) {
r = conop(b, 0);
}
else if (t == CONSTR) {
r = constr(b, 0);
}
else if (t == CONSYM) {
r = consym(b, 0);
}
else if (t == CTYPE) {
r = ctype(b, 0);
}
else if (t == DATADECL) {
r = datadecl(b, 0);
}
else if (t == DEFAULTDECL) {
r = defaultdecl(b, 0);
}
else if (t == DERIVINGDECL) {
r = derivingdecl(b, 0);
}
else if (t == EXP) {
r = exp(b, 0);
}
else if (t == EXPORT) {
r = export(b, 0);
}
else if (t == EXPORTS) {
r = exports(b, 0);
}
else if (t == EXPORTSEMPTY) {
r = exportsempty(b, 0);
}
else if (t == FIXITY) {
r = fixity(b, 0);
}
else if (t == FOREIGNDECL) {
r = foreigndecl(b, 0);
}
else if (t == FUNORPATDECL) {
r = funorpatdecl(b, 0);
}
else if (t == GCONSYM) {
r = gconsym(b, 0);
}
else if (t == GENDECL) {
r = gendecl(b, 0);
}
else if (t == GUARD) {
r = guard(b, 0);
}
else if (t == IDECL) {
r = idecl(b, 0);
}
else if (t == IMPDECL) {
r = impdecl(b, 0);
}
else if (t == IMPEMPTY) {
r = impempty(b, 0);
}
else if (t == IMPORTT) {
r = importt(b, 0);
}
else if (t == INSTANCEDECL) {
r = instancedecl(b, 0);
}
else if (t == KIND) {
r = kind(b, 0);
}
else if (t == LETEXP) {
r = letexp(b, 0);
}
else if (t == LISTLIKE) {
r = listlike(b, 0);
}
else if (t == MODULEDECL) {
r = moduledecl(b, 0);
}
else if (t == NEWCONSTR) {
r = newconstr(b, 0);
}
else if (t == NEWTYPEDECL) {
r = newtypedecl(b, 0);
}
else if (t == OP) {
r = op(b, 0);
}
else if (t == OQTYCON) {
r = oqtycon(b, 0);
}
else if (t == PAT) {
r = pat(b, 0);
}
else if (t == PPRAGMA) {
r = ppragma(b, 0);
}
else if (t == PSTRINGTOKEN) {
r = pstringtoken(b, 0);
}
else if (t == QCON) {
r = qcon(b, 0);
}
else if (t == QCONID) {
r = qconid(b, 0);
}
else if (t == QCONOP) {
r = qconop(b, 0);
}
else if (t == QCONSYM) {
r = qconsym(b, 0);
}
else if (t == QOP) {
r = qop(b, 0);
}
else if (t == QQBLOB) {
r = qqblob(b, 0);
}
else if (t == QTYCLS) {
r = qtycls(b, 0);
}
else if (t == QTYCON) {
r = qtycon(b, 0);
}
else if (t == QTYCONOP) {
r = qtyconop(b, 0);
}
else if (t == QTYCONSYM) {
r = qtyconsym(b, 0);
}
else if (t == QVAR) {
r = qvar(b, 0);
}
else if (t == QVARID) {
r = qvarid(b, 0);
}
else if (t == QVAROP) {
r = qvarop(b, 0);
}
else if (t == QVARS) {
r = qvars(b, 0);
}
else if (t == QVARSYM) {
r = qvarsym(b, 0);
}
else if (t == RHS) {
r = rhs(b, 0);
}
else if (t == SHEBANG) {
r = shebang(b, 0);
}
else if (t == STMTS) {
r = stmts(b, 0);
}
else if (t == TV_BNDR) {
r = tv_bndr(b, 0);
}
else if (t == TYCLS) {
r = tycls(b, 0);
}
else if (t == TYCON) {
r = tycon(b, 0);
}
else if (t == TYCONSYM) {
r = tyconsym(b, 0);
}
else if (t == TYPEDECL) {
r = typedecl(b, 0);
}
else if (t == TYPEE) {
r = typee(b, 0);
}
else if (t == TYVAR) {
r = tyvar(b, 0);
}
else if (t == VARID) {
r = varid(b, 0);
}
else if (t == VAROP) {
r = varop(b, 0);
}
else if (t == VARS) {
r = vars(b, 0);
}
else if (t == VARSYM) {
r = varsym(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 module(b, l + 1);
}
/* ********************************************************** */
// parensplice exp i ')'
// | singlequote i (qvar | qcon)
// | idsplice
// | thquote i qcon
// | literal
// | thaexp
// | '(#' i '#)'
// | listlike
// | parenlike
// | [recordlikelhs] i '{' (fbind ',')* [e] (".." | fbind) [e] '}'
// | gcon
// | qvar
static boolean aexp(PsiBuilder b, int l) {
if (!recursion_guard_(b, l, "aexp")) return false;
boolean r;
Marker m = enter_section_(b);
r = aexp_0(b, l + 1);
if (!r) r = aexp_1(b, l + 1);
if (!r) r = consumeToken(b, IDSPLICE);
if (!r) r = aexp_3(b, l + 1);
if (!r) r = literal(b, l + 1);
if (!r) r = thaexp(b, l + 1);
if (!r) r = aexp_6(b, l + 1);
if (!r) r = listlike(b, l + 1);
if (!r) r = parenlike(b, l + 1);
if (!r) r = aexp_9(b, l + 1);
if (!r) r = gcon(b, l + 1);
if (!r) r = qvar(b, l + 1);
exit_section_(b, m, null, r);
return r;
}
// parensplice exp i ')'
private static boolean aexp_0(PsiBuilder b, int l) {
if (!recursion_guard_(b, l, "aexp_0")) return false;
boolean r;
Marker m = enter_section_(b);
r = consumeToken(b, PARENSPLICE);
r = r && exp(b, l + 1);
r = r && i(b, l + 1);
r = r && consumeToken(b, RPAREN);
exit_section_(b, m, null, r);
return r;
}
// singlequote i (qvar | qcon)
private static boolean aexp_1(PsiBuilder b, int l) {
if (!recursion_guard_(b, l, "aexp_1")) return false;
boolean r;
Marker m = enter_section_(b);
r = consumeToken(b, SINGLEQUOTE);
r = r && i(b, l + 1);
r = r && aexp_1_2(b, l + 1);
exit_section_(b, m, null, r);
return r;
}
// qvar | qcon
private static boolean aexp_1_2(PsiBuilder b, int l) {
if (!recursion_guard_(b, l, "aexp_1_2")) return false;
boolean r;
Marker m = enter_section_(b);
r = qvar(b, l + 1);
if (!r) r = qcon(b, l + 1);
exit_section_(b, m, null, r);
return r;
}
// thquote i qcon
private static boolean aexp_3(PsiBuilder b, int l) {
if (!recursion_guard_(b, l, "aexp_3")) return false;
boolean r;
Marker m = enter_section_(b);
r = consumeToken(b, THQUOTE);
r = r && i(b, l + 1);
r = r && qcon(b, l + 1);
exit_section_(b, m, null, r);
return r;
}
// '(#' i '#)'
private static boolean aexp_6(PsiBuilder b, int l) {
if (!recursion_guard_(b, l, "aexp_6")) return false;
boolean r;
Marker m = enter_section_(b);
r = consumeToken(b, LUNBOXPAREN);
r = r && i(b, l + 1);
r = r && consumeToken(b, RUNBOXPAREN);
exit_section_(b, m, null, r);
return r;
}
// [recordlikelhs] i '{' (fbind ',')* [e] (".." | fbind) [e] '}'
private static boolean aexp_9(PsiBuilder b, int l) {
if (!recursion_guard_(b, l, "aexp_9")) return false;
boolean r;
Marker m = enter_section_(b);
r = aexp_9_0(b, l + 1);
r = r && i(b, l + 1);
r = r && consumeToken(b, LBRACE);
r = r && aexp_9_3(b, l + 1);
r = r && aexp_9_4(b, l + 1);
r = r && aexp_9_5(b, l + 1);
r = r && aexp_9_6(b, l + 1);
r = r && consumeToken(b, RBRACE);
exit_section_(b, m, null, r);
return r;
}
// [recordlikelhs]
private static boolean aexp_9_0(PsiBuilder b, int l) {
if (!recursion_guard_(b, l, "aexp_9_0")) return false;
recordlikelhs(b, l + 1);
return true;
}
// (fbind ',')*
private static boolean aexp_9_3(PsiBuilder b, int l) {
if (!recursion_guard_(b, l, "aexp_9_3")) return false;
int c = current_position_(b);
while (true) {
if (!aexp_9_3_0(b, l + 1)) break;
if (!empty_element_parsed_guard_(b, "aexp_9_3", c)) break;
c = current_position_(b);
}
return true;
}
// fbind ','
private static boolean aexp_9_3_0(PsiBuilder b, int l) {
if (!recursion_guard_(b, l, "aexp_9_3_0")) return false;
boolean r;
Marker m = enter_section_(b);
r = fbind(b, l + 1);
r = r && consumeToken(b, COMMA);
exit_section_(b, m, null, r);
return r;
}
// [e]
private static boolean aexp_9_4(PsiBuilder b, int l) {
if (!recursion_guard_(b, l, "aexp_9_4")) return false;
e(b, l + 1);
return true;
}
// ".." | fbind
private static boolean aexp_9_5(PsiBuilder b, int l) {
if (!recursion_guard_(b, l, "aexp_9_5")) return false;
boolean r;
Marker m = enter_section_(b);
r = consumeToken(b, DOUBLEPERIOD);
if (!r) r = fbind(b, l + 1);
exit_section_(b, m, null, r);
return r;
}
// [e]
private static boolean aexp_9_6(PsiBuilder b, int l) {
if (!recursion_guard_(b, l, "aexp_9_6")) return false;
e(b, l + 1);
return true;
}
/* ********************************************************** */
// '*'
// | '!'
// | '(' kind ')'
// | pkind
// | tyvar
public static boolean akind(PsiBuilder b, int l) {
if (!recursion_guard_(b, l, "akind")) return false;
boolean r;
Marker m = enter_section_(b, l, _NONE_, AKIND, "<akind>");
r = consumeToken(b, ASTERISK);
if (!r) r = consumeToken(b, EXCLAMATION);
if (!r) r = akind_2(b, l + 1);
if (!r) r = pkind(b, l + 1);
if (!r) r = tyvar(b, l + 1);
exit_section_(b, l, m, r, false, null);
return r;
}
// '(' kind ')'
private static boolean akind_2(PsiBuilder b, int l) {
if (!recursion_guard_(b, l, "akind_2")) return false;
boolean r;
Marker m = enter_section_(b);
r = consumeToken(b, LPAREN);
r = r && kind(b, l + 1);
r = r && consumeToken(b, RPAREN);
exit_section_(b, m, null, r);
return r;
}
/* ********************************************************** */
// pat i ('->' exp | gdpat) [wheredecls]
public static boolean alt(PsiBuilder b, int l) {
if (!recursion_guard_(b, l, "alt")) return false;
boolean r, p;
Marker m = enter_section_(b, l, _NONE_, ALT, "<alt>");
r = pat(b, l + 1);
r = r && i(b, l + 1);
r = r && alt_2(b, l + 1);
p = r; // pin = 3
r = r && alt_3(b, l + 1);
exit_section_(b, l, m, r, p, null);
return r || p;
}
// '->' exp | gdpat
private static boolean alt_2(PsiBuilder b, int l) {
if (!recursion_guard_(b, l, "alt_2")) return false;
boolean r;
Marker m = enter_section_(b);
r = alt_2_0(b, l + 1);
if (!r) r = gdpat(b, l + 1);
exit_section_(b, m, null, r);
return r;
}
// '->' exp
private static boolean alt_2_0(PsiBuilder b, int l) {
if (!recursion_guard_(b, l, "alt_2_0")) return false;
boolean r;
Marker m = enter_section_(b);
r = consumeToken(b, RIGHTARROW);
r = r && exp(b, l + 1);
exit_section_(b, m, null, r);
return r;
}
// [wheredecls]
private static boolean alt_3(PsiBuilder b, int l) {
if (!recursion_guard_(b, l, "alt_3")) return false;
wheredecls(b, l + 1);
return true;
}
/* ********************************************************** */
// '{' alt (semi alt)* '}'
// | iAlts
static boolean altslist(PsiBuilder b, int l) {
if (!recursion_guard_(b, l, "altslist")) return false;
if (!nextTokenIs(b, "", LBRACE, WHITESPACELBRACETOK)) return false;
boolean r;
Marker m = enter_section_(b);
r = altslist_0(b, l + 1);
if (!r) r = iAlts(b, l + 1);
exit_section_(b, m, null, r);
return r;
}
// '{' alt (semi alt)* '}'
private static boolean altslist_0(PsiBuilder b, int l) {
if (!recursion_guard_(b, l, "altslist_0")) return false;
boolean r;
Marker m = enter_section_(b);
r = consumeToken(b, LBRACE);
r = r && alt(b, l + 1);
r = r && altslist_0_2(b, l + 1);
r = r && consumeToken(b, RBRACE);
exit_section_(b, m, null, r);
return r;
}
// (semi alt)*
private static boolean altslist_0_2(PsiBuilder b, int l) {
if (!recursion_guard_(b, l, "altslist_0_2")) return false;
int c = current_position_(b);
while (true) {
if (!altslist_0_2_0(b, l + 1)) break;
if (!empty_element_parsed_guard_(b, "altslist_0_2", c)) break;
c = current_position_(b);
}
return true;
}
// semi alt
private static boolean altslist_0_2_0(PsiBuilder b, int l) {
if (!recursion_guard_(b, l, "altslist_0_2_0")) return false;
boolean r;
Marker m = enter_section_(b);
r = semi(b, l + 1);
r = r && alt(b, l + 1);
exit_section_(b, m, null, r);
return r;
}
/* ********************************************************** */
// literal
// | '_'
// | ('!'|'~') apat
// | var ('+' integertoken | ['@' apat])
// | qcon '{' [(fpat ',')* fpat] '}'
// | '(' pat (apat* "->" pat | [',' (pat ',')* pat]) ')'
// // Second option is quasiquotes. See TemplateHaskell00002.hs.
// | '[' (pat (',' pat)* ']' | exp '|' [semi] exp [semi]'|]')
// | gcon
// | qvar
static boolean apat(PsiBuilder b, int l) {
if (!recursion_guard_(b, l, "apat")) return false;
boolean r;
Marker m = enter_section_(b);
r = literal(b, l + 1);
if (!r) r = consumeToken(b, UNDERSCORE);
if (!r) r = apat_2(b, l + 1);
if (!r) r = apat_3(b, l + 1);
if (!r) r = apat_4(b, l + 1);
if (!r) r = apat_5(b, l + 1);
if (!r) r = apat_6(b, l + 1);
if (!r) r = gcon(b, l + 1);
if (!r) r = qvar(b, l + 1);
exit_section_(b, m, null, r);
return r;
}
// ('!'|'~') apat
private static boolean apat_2(PsiBuilder b, int l) {
if (!recursion_guard_(b, l, "apat_2")) return false;
boolean r;
Marker m = enter_section_(b);
r = apat_2_0(b, l + 1);
r = r && apat(b, l + 1);
exit_section_(b, m, null, r);
return r;
}
// '!'|'~'
private static boolean apat_2_0(PsiBuilder b, int l) {
if (!recursion_guard_(b, l, "apat_2_0")) return false;
boolean r;
Marker m = enter_section_(b);
r = consumeToken(b, EXCLAMATION);
if (!r) r = consumeToken(b, TILDE);
exit_section_(b, m, null, r);
return r;
}
// var ('+' integertoken | ['@' apat])
private static boolean apat_3(PsiBuilder b, int l) {
if (!recursion_guard_(b, l, "apat_3")) return false;
boolean r;
Marker m = enter_section_(b);
r = var(b, l + 1);
r = r && apat_3_1(b, l + 1);
exit_section_(b, m, null, r);
return r;
}
// '+' integertoken | ['@' apat]
private static boolean apat_3_1(PsiBuilder b, int l) {
if (!recursion_guard_(b, l, "apat_3_1")) return false;
boolean r;
Marker m = enter_section_(b);
r = apat_3_1_0(b, l + 1);
if (!r) r = apat_3_1_1(b, l + 1);
exit_section_(b, m, null, r);
return r;
}
// '+' integertoken
private static boolean apat_3_1_0(PsiBuilder b, int l) {
if (!recursion_guard_(b, l, "apat_3_1_0")) return false;
boolean r;
Marker m = enter_section_(b);
r = consumeToken(b, PLUS);
r = r && consumeToken(b, INTEGERTOKEN);
exit_section_(b, m, null, r);
return r;
}
// ['@' apat]
private static boolean apat_3_1_1(PsiBuilder b, int l) {
if (!recursion_guard_(b, l, "apat_3_1_1")) return false;
apat_3_1_1_0(b, l + 1);
return true;
}
// '@' apat
private static boolean apat_3_1_1_0(PsiBuilder b, int l) {
if (!recursion_guard_(b, l, "apat_3_1_1_0")) return false;
boolean r;
Marker m = enter_section_(b);
r = consumeToken(b, AMPERSAT);
r = r && apat(b, l + 1);
exit_section_(b, m, null, r);
return r;
}
// qcon '{' [(fpat ',')* fpat] '}'
private static boolean apat_4(PsiBuilder b, int l) {
if (!recursion_guard_(b, l, "apat_4")) return false;
boolean r;
Marker m = enter_section_(b);
r = qcon(b, l + 1);
r = r && consumeToken(b, LBRACE);
r = r && apat_4_2(b, l + 1);
r = r && consumeToken(b, RBRACE);
exit_section_(b, m, null, r);
return r;
}
// [(fpat ',')* fpat]
private static boolean apat_4_2(PsiBuilder b, int l) {
if (!recursion_guard_(b, l, "apat_4_2")) return false;
apat_4_2_0(b, l + 1);
return true;
}
// (fpat ',')* fpat
private static boolean apat_4_2_0(PsiBuilder b, int l) {
if (!recursion_guard_(b, l, "apat_4_2_0")) return false;
boolean r;
Marker m = enter_section_(b);
r = apat_4_2_0_0(b, l + 1);
r = r && fpat(b, l + 1);
exit_section_(b, m, null, r);
return r;
}
// (fpat ',')*
private static boolean apat_4_2_0_0(PsiBuilder b, int l) {
if (!recursion_guard_(b, l, "apat_4_2_0_0")) return false;
int c = current_position_(b);
while (true) {
if (!apat_4_2_0_0_0(b, l + 1)) break;
if (!empty_element_parsed_guard_(b, "apat_4_2_0_0", c)) break;
c = current_position_(b);
}
return true;
}
// fpat ','
private static boolean apat_4_2_0_0_0(PsiBuilder b, int l) {
if (!recursion_guard_(b, l, "apat_4_2_0_0_0")) return false;
boolean r;
Marker m = enter_section_(b);
r = fpat(b, l + 1);
r = r && consumeToken(b, COMMA);
exit_section_(b, m, null, r);
return r;
}
// '(' pat (apat* "->" pat | [',' (pat ',')* pat]) ')'
private static boolean apat_5(PsiBuilder b, int l) {
if (!recursion_guard_(b, l, "apat_5")) return false;
boolean r;
Marker m = enter_section_(b);
r = consumeToken(b, LPAREN);
r = r && pat(b, l + 1);
r = r && apat_5_2(b, l + 1);
r = r && consumeToken(b, RPAREN);
exit_section_(b, m, null, r);
return r;
}
// apat* "->" pat | [',' (pat ',')* pat]
private static boolean apat_5_2(PsiBuilder b, int l) {
if (!recursion_guard_(b, l, "apat_5_2")) return false;
boolean r;
Marker m = enter_section_(b);
r = apat_5_2_0(b, l + 1);
if (!r) r = apat_5_2_1(b, l + 1);
exit_section_(b, m, null, r);
return r;
}
// apat* "->" pat
private static boolean apat_5_2_0(PsiBuilder b, int l) {
if (!recursion_guard_(b, l, "apat_5_2_0")) return false;
boolean r;
Marker m = enter_section_(b);
r = apat_5_2_0_0(b, l + 1);
r = r && consumeToken(b, RIGHTARROW);
r = r && pat(b, l + 1);
exit_section_(b, m, null, r);
return r;
}
// apat*
private static boolean apat_5_2_0_0(PsiBuilder b, int l) {
if (!recursion_guard_(b, l, "apat_5_2_0_0")) return false;
int c = current_position_(b);
while (true) {
if (!apat(b, l + 1)) break;
if (!empty_element_parsed_guard_(b, "apat_5_2_0_0", c)) break;
c = current_position_(b);
}
return true;
}
// [',' (pat ',')* pat]
private static boolean apat_5_2_1(PsiBuilder b, int l) {
if (!recursion_guard_(b, l, "apat_5_2_1")) return false;
apat_5_2_1_0(b, l + 1);
return true;
}
// ',' (pat ',')* pat
private static boolean apat_5_2_1_0(PsiBuilder b, int l) {
if (!recursion_guard_(b, l, "apat_5_2_1_0")) return false;
boolean r;
Marker m = enter_section_(b);
r = consumeToken(b, COMMA);
r = r && apat_5_2_1_0_1(b, l + 1);
r = r && pat(b, l + 1);
exit_section_(b, m, null, r);
return r;
}
// (pat ',')*
private static boolean apat_5_2_1_0_1(PsiBuilder b, int l) {
if (!recursion_guard_(b, l, "apat_5_2_1_0_1")) return false;
int c = current_position_(b);
while (true) {
if (!apat_5_2_1_0_1_0(b, l + 1)) break;
if (!empty_element_parsed_guard_(b, "apat_5_2_1_0_1", c)) break;
c = current_position_(b);
}
return true;
}
// pat ','
private static boolean apat_5_2_1_0_1_0(PsiBuilder b, int l) {
if (!recursion_guard_(b, l, "apat_5_2_1_0_1_0")) return false;
boolean r;
Marker m = enter_section_(b);
r = pat(b, l + 1);
r = r && consumeToken(b, COMMA);
exit_section_(b, m, null, r);
return r;
}
// '[' (pat (',' pat)* ']' | exp '|' [semi] exp [semi]'|]')
private static boolean apat_6(PsiBuilder b, int l) {
if (!recursion_guard_(b, l, "apat_6")) return false;
boolean r;
Marker m = enter_section_(b);
r = consumeToken(b, LBRACKET);
r = r && apat_6_1(b, l + 1);
exit_section_(b, m, null, r);
return r;
}
// pat (',' pat)* ']' | exp '|' [semi] exp [semi]'|]'
private static boolean apat_6_1(PsiBuilder b, int l) {
if (!recursion_guard_(b, l, "apat_6_1")) return false;
boolean r;
Marker m = enter_section_(b);
r = apat_6_1_0(b, l + 1);
if (!r) r = apat_6_1_1(b, l + 1);
exit_section_(b, m, null, r);
return r;
}
// pat (',' pat)* ']'
private static boolean apat_6_1_0(PsiBuilder b, int l) {
if (!recursion_guard_(b, l, "apat_6_1_0")) return false;
boolean r;
Marker m = enter_section_(b);
r = pat(b, l + 1);
r = r && apat_6_1_0_1(b, l + 1);
r = r && consumeToken(b, RBRACKET);
exit_section_(b, m, null, r);
return r;
}
// (',' pat)*
private static boolean apat_6_1_0_1(PsiBuilder b, int l) {
if (!recursion_guard_(b, l, "apat_6_1_0_1")) return false;
int c = current_position_(b);
while (true) {
if (!apat_6_1_0_1_0(b, l + 1)) break;
if (!empty_element_parsed_guard_(b, "apat_6_1_0_1", c)) break;
c = current_position_(b);
}
return true;
}
// ',' pat
private static boolean apat_6_1_0_1_0(PsiBuilder b, int l) {
if (!recursion_guard_(b, l, "apat_6_1_0_1_0")) return false;
boolean r;
Marker m = enter_section_(b);
r = consumeToken(b, COMMA);
r = r && pat(b, l + 1);
exit_section_(b, m, null, r);
return r;
}
// exp '|' [semi] exp [semi]'|]'
private static boolean apat_6_1_1(PsiBuilder b, int l) {
if (!recursion_guard_(b, l, "apat_6_1_1")) return false;
boolean r;
Marker m = enter_section_(b);
r = exp(b, l + 1);
r = r && consumeToken(b, PIPE);
r = r && apat_6_1_1_2(b, l + 1);
r = r && exp(b, l + 1);
r = r && apat_6_1_1_4(b, l + 1);
r = r && consumeToken(b, RTHCLOSE);
exit_section_(b, m, null, r);
return r;
}
// [semi]
private static boolean apat_6_1_1_2(PsiBuilder b, int l) {
if (!recursion_guard_(b, l, "apat_6_1_1_2")) return false;
semi(b, l + 1);
return true;
}
// [semi]
private static boolean apat_6_1_1_4(PsiBuilder b, int l) {
if (!recursion_guard_(b, l, "apat_6_1_1_4")) return false;
semi(b, l + 1);
return true;
}
/* ********************************************************** */
// "type" ["instance"] (typee [kindsig] | ctype '=' ctype)
// | "data" ["instance"] ctype [kindsig]
static boolean atdecl(PsiBuilder b, int l) {
if (!recursion_guard_(b, l, "atdecl")) return false;
if (!nextTokenIs(b, "", DATA, TYPE)) return false;
boolean r;
Marker m = enter_section_(b);
r = atdecl_0(b, l + 1);
if (!r) r = atdecl_1(b, l + 1);
exit_section_(b, m, null, r);
return r;
}
// "type" ["instance"] (typee [kindsig] | ctype '=' ctype)
private static boolean atdecl_0(PsiBuilder b, int l) {
if (!recursion_guard_(b, l, "atdecl_0")) return false;
boolean r;
Marker m = enter_section_(b);
r = consumeToken(b, TYPE);
r = r && atdecl_0_1(b, l + 1);
r = r && atdecl_0_2(b, l + 1);
exit_section_(b, m, null, r);
return r;
}
// ["instance"]
private static boolean atdecl_0_1(PsiBuilder b, int l) {
if (!recursion_guard_(b, l, "atdecl_0_1")) return false;
consumeToken(b, INSTANCE);
return true;
}
// typee [kindsig] | ctype '=' ctype
private static boolean atdecl_0_2(PsiBuilder b, int l) {
if (!recursion_guard_(b, l, "atdecl_0_2")) return false;
boolean r;
Marker m = enter_section_(b);
r = atdecl_0_2_0(b, l + 1);
if (!r) r = atdecl_0_2_1(b, l + 1);
exit_section_(b, m, null, r);
return r;
}
// typee [kindsig]
private static boolean atdecl_0_2_0(PsiBuilder b, int l) {
if (!recursion_guard_(b, l, "atdecl_0_2_0")) return false;
boolean r;
Marker m = enter_section_(b);
r = typee(b, l + 1);
r = r && atdecl_0_2_0_1(b, l + 1);
exit_section_(b, m, null, r);
return r;
}
// [kindsig]
private static boolean atdecl_0_2_0_1(PsiBuilder b, int l) {
if (!recursion_guard_(b, l, "atdecl_0_2_0_1")) return false;
kindsig(b, l + 1);
return true;
}
// ctype '=' ctype
private static boolean atdecl_0_2_1(PsiBuilder b, int l) {
if (!recursion_guard_(b, l, "atdecl_0_2_1")) return false;
boolean r;
Marker m = enter_section_(b);
r = ctype(b, l + 1);
r = r && consumeToken(b, EQUALS);
r = r && ctype(b, l + 1);
exit_section_(b, m, null, r);
return r;
}
// "data" ["instance"] ctype [kindsig]
private static boolean atdecl_1(PsiBuilder b, int l) {
if (!recursion_guard_(b, l, "atdecl_1")) return false;
boolean r;
Marker m = enter_section_(b);
r = consumeToken(b, DATA);
r = r && atdecl_1_1(b, l + 1);
r = r && ctype(b, l + 1);
r = r && atdecl_1_3(b, l + 1);
exit_section_(b, m, null, r);
return r;
}
// ["instance"]
private static boolean atdecl_1_1(PsiBuilder b, int l) {
if (!recursion_guard_(b, l, "atdecl_1_1")) return false;
consumeToken(b, INSTANCE);
return true;
}
// [kindsig]
private static boolean atdecl_1_3(PsiBuilder b, int l) {
if (!recursion_guard_(b, l, "atdecl_1_3")) return false;
kindsig(b, l + 1);
return true;
}
/* ********************************************************** */
// [singlequote] ntgtycon ['##'|'#']
// | tyvar
// | strict_mark atype
// | '{' fielddecls '}'
// | '(#' <<sequence ctype>> '#)'
// | '(' ['?'] ctype "::" (kind | ctype)')'
// | [singlequote] ('(' [<<sequence ctype>>] ')' | '[' <<sequence ctype>> ']')
// | integertoken
// | pstringtoken
// | foralltype
public static boolean atype(PsiBuilder b, int l) {
if (!recursion_guard_(b, l, "atype")) return false;
boolean r;
Marker m = enter_section_(b, l, _NONE_, ATYPE, "<atype>");
r = atype_0(b, l + 1);
if (!r) r = tyvar(b, l + 1);
if (!r) r = atype_2(b, l + 1);
if (!r) r = atype_3(b, l + 1);
if (!r) r = atype_4(b, l + 1);
if (!r) r = atype_5(b, l + 1);
if (!r) r = atype_6(b, l + 1);
if (!r) r = consumeToken(b, INTEGERTOKEN);
if (!r) r = pstringtoken(b, l + 1);
if (!r) r = foralltype(b, l + 1);
exit_section_(b, l, m, r, false, null);
return r;
}
// [singlequote] ntgtycon ['##'|'#']
private static boolean atype_0(PsiBuilder b, int l) {
if (!recursion_guard_(b, l, "atype_0")) return false;
boolean r;
Marker m = enter_section_(b);
r = atype_0_0(b, l + 1);
r = r && ntgtycon(b, l + 1);
r = r && atype_0_2(b, l + 1);
exit_section_(b, m, null, r);
return r;
}
// [singlequote]
private static boolean atype_0_0(PsiBuilder b, int l) {
if (!recursion_guard_(b, l, "atype_0_0")) return false;
consumeToken(b, SINGLEQUOTE);
return true;
}
// ['##'|'#']
private static boolean atype_0_2(PsiBuilder b, int l) {
if (!recursion_guard_(b, l, "atype_0_2")) return false;
atype_0_2_0(b, l + 1);
return true;
}
// '##'|'#'
private static boolean atype_0_2_0(PsiBuilder b, int l) {
if (!recursion_guard_(b, l, "atype_0_2_0")) return false;
boolean r;
Marker m = enter_section_(b);
r = consumeToken(b, DOUBLEHASH);
if (!r) r = consumeToken(b, HASH);
exit_section_(b, m, null, r);
return r;
}
// strict_mark atype
private static boolean atype_2(PsiBuilder b, int l) {
if (!recursion_guard_(b, l, "atype_2")) return false;
boolean r;
Marker m = enter_section_(b);
r = strict_mark(b, l + 1);
r = r && atype(b, l + 1);
exit_section_(b, m, null, r);
return r;
}
// '{' fielddecls '}'
private static boolean atype_3(PsiBuilder b, int l) {
if (!recursion_guard_(b, l, "atype_3")) return false;
boolean r;
Marker m = enter_section_(b);
r = consumeToken(b, LBRACE);
r = r && fielddecls(b, l + 1);
r = r && consumeToken(b, RBRACE);
exit_section_(b, m, null, r);
return r;
}
// '(#' <<sequence ctype>> '#)'
private static boolean atype_4(PsiBuilder b, int l) {
if (!recursion_guard_(b, l, "atype_4")) return false;
boolean r;
Marker m = enter_section_(b);
r = consumeToken(b, LUNBOXPAREN);
r = r && sequence(b, l + 1, ctype_parser_);
r = r && consumeToken(b, RUNBOXPAREN);
exit_section_(b, m, null, r);
return r;
}
// '(' ['?'] ctype "::" (kind | ctype)')'
private static boolean atype_5(PsiBuilder b, int l) {
if (!recursion_guard_(b, l, "atype_5")) return false;
boolean r;
Marker m = enter_section_(b);
r = consumeToken(b, LPAREN);
r = r && atype_5_1(b, l + 1);
r = r && ctype(b, l + 1);
r = r && consumeToken(b, DOUBLECOLON);
r = r && atype_5_4(b, l + 1);
r = r && consumeToken(b, RPAREN);
exit_section_(b, m, null, r);
return r;
}
// ['?']
private static boolean atype_5_1(PsiBuilder b, int l) {
if (!recursion_guard_(b, l, "atype_5_1")) return false;
consumeToken(b, QUESTION);
return true;
}
// kind | ctype
private static boolean atype_5_4(PsiBuilder b, int l) {
if (!recursion_guard_(b, l, "atype_5_4")) return false;
boolean r;
Marker m = enter_section_(b);
r = kind(b, l + 1);
if (!r) r = ctype(b, l + 1);
exit_section_(b, m, null, r);
return r;
}
// [singlequote] ('(' [<<sequence ctype>>] ')' | '[' <<sequence ctype>> ']')
private static boolean atype_6(PsiBuilder b, int l) {
if (!recursion_guard_(b, l, "atype_6")) return false;
boolean r;
Marker m = enter_section_(b);
r = atype_6_0(b, l + 1);
r = r && atype_6_1(b, l + 1);
exit_section_(b, m, null, r);
return r;
}
// [singlequote]
private static boolean atype_6_0(PsiBuilder b, int l) {
if (!recursion_guard_(b, l, "atype_6_0")) return false;
consumeToken(b, SINGLEQUOTE);
return true;
}
// '(' [<<sequence ctype>>] ')' | '[' <<sequence ctype>> ']'
private static boolean atype_6_1(PsiBuilder b, int l) {
if (!recursion_guard_(b, l, "atype_6_1")) return false;
boolean r;
Marker m = enter_section_(b);
r = atype_6_1_0(b, l + 1);
if (!r) r = atype_6_1_1(b, l + 1);
exit_section_(b, m, null, r);
return r;
}
// '(' [<<sequence ctype>>] ')'
private static boolean atype_6_1_0(PsiBuilder b, int l) {
if (!recursion_guard_(b, l, "atype_6_1_0")) return false;
boolean r;
Marker m = enter_section_(b);
r = consumeToken(b, LPAREN);
r = r && atype_6_1_0_1(b, l + 1);
r = r && consumeToken(b, RPAREN);
exit_section_(b, m, null, r);
return r;
}
// [<<sequence ctype>>]
private static boolean atype_6_1_0_1(PsiBuilder b, int l) {
if (!recursion_guard_(b, l, "atype_6_1_0_1")) return false;
sequence(b, l + 1, ctype_parser_);
return true;
}
// '[' <<sequence ctype>> ']'
private static boolean atype_6_1_1(PsiBuilder b, int l) {
if (!recursion_guard_(b, l, "atype_6_1_1")) return false;
boolean r;
Marker m = enter_section_(b);
r = consumeToken(b, LBRACKET);
r = r && sequence(b, l + 1, ctype_parser_);
r = r && consumeToken(b, RBRACKET);
exit_section_(b, m, null, r);
return r;
}
/* ********************************************************** */
// akind [bkind]
public static boolean bkind(PsiBuilder b, int l) {
if (!recursion_guard_(b, l, "bkind")) return false;
boolean r;
Marker m = enter_section_(b, l, _NONE_, BKIND, "<bkind>");
r = akind(b, l + 1);
r = r && bkind_1(b, l + 1);
exit_section_(b, l, m, r, false, null);
return r;
}
// [bkind]
private static boolean bkind_1(PsiBuilder b, int l) {
if (!recursion_guard_(b, l, "bkind_1")) return false;
bkind(b, l + 1);
return true;
}
/* ********************************************************** */
// ppragma* open bodyaux close
public static boolean body(PsiBuilder b, int l) {
if (!recursion_guard_(b, l, "body")) return false;
boolean r, p;
Marker m = enter_section_(b, l, _NONE_, BODY, "<body>");
r = body_0(b, l + 1);
r = r && open(b, l + 1);
p = r; // pin = 2
r = r && report_error_(b, bodyaux(b, l + 1));
r = p && close(b, l + 1) && r;
exit_section_(b, l, m, r, p, null);
return r || p;
}
// ppragma*
private static boolean body_0(PsiBuilder b, int l) {
if (!recursion_guard_(b, l, "body_0")) return false;
int c = current_position_(b);
while (true) {
if (!ppragma(b, l + 1)) break;
if (!empty_element_parsed_guard_(b, "body_0", c)) break;
c = current_position_(b);
}
return true;
}
/* ********************************************************** */
// impdecls* ppragma* [[semi] topdecls]
static boolean bodyaux(PsiBuilder b, int l) {
if (!recursion_guard_(b, l, "bodyaux")) return false;
boolean r;
Marker m = enter_section_(b);
r = bodyaux_0(b, l + 1);
r = r && bodyaux_1(b, l + 1);
r = r && bodyaux_2(b, l + 1);
exit_section_(b, m, null, r);
return r;
}
// impdecls*
private static boolean bodyaux_0(PsiBuilder b, int l) {
if (!recursion_guard_(b, l, "bodyaux_0")) return false;
int c = current_position_(b);
while (true) {
if (!impdecls(b, l + 1)) break;
if (!empty_element_parsed_guard_(b, "bodyaux_0", c)) break;
c = current_position_(b);
}
return true;
}
// ppragma*
private static boolean bodyaux_1(PsiBuilder b, int l) {
if (!recursion_guard_(b, l, "bodyaux_1")) return false;
int c = current_position_(b);
while (true) {
if (!ppragma(b, l + 1)) break;
if (!empty_element_parsed_guard_(b, "bodyaux_1", c)) break;
c = current_position_(b);
}
return true;
}
// [[semi] topdecls]
private static boolean bodyaux_2(PsiBuilder b, int l) {
if (!recursion_guard_(b, l, "bodyaux_2")) return false;
bodyaux_2_0(b, l + 1);
return true;
}
// [semi] topdecls
private static boolean bodyaux_2_0(PsiBuilder b, int l) {
if (!recursion_guard_(b, l, "bodyaux_2_0")) return false;
boolean r;
Marker m = enter_section_(b);
r = bodyaux_2_0_0(b, l + 1);
r = r && topdecls(b, l + 1);
exit_section_(b, m, null, r);
return r;
}
// [semi]
private static boolean bodyaux_2_0_0(PsiBuilder b, int l) {
if (!recursion_guard_(b, l, "bodyaux_2_0_0")) return false;
semi(b, l + 1);
return true;
}
/* ********************************************************** */
// atype [btype]
static boolean btype(PsiBuilder b, int l) {
if (!recursion_guard_(b, l, "btype")) return false;
boolean r;
Marker m = enter_section_(b);
r = atype(b, l + 1);
r = r && btype_1(b, l + 1);
exit_section_(b, m, null, r);
return r;
}
// [btype]
private static boolean btype_1(PsiBuilder b, int l) {
if (!recursion_guard_(b, l, "btype_1")) return false;
btype(b, l + 1);
return true;
}
/* ********************************************************** */
// "ccall" | "stdcall" | "cplusplus"
// | "jvm" | "dotnet"
// | "java"
static boolean callconv(PsiBuilder b, int l) {
if (!recursion_guard_(b, l, "callconv")) return false;
boolean r;
Marker m = enter_section_(b);
r = consumeToken(b, "ccall");
if (!r) r = consumeToken(b, "stdcall");
if (!r) r = consumeToken(b, "cplusplus");
if (!r) r = consumeToken(b, "jvm");
if (!r) r = consumeToken(b, "dotnet");
if (!r) r = consumeToken(b, "java");
exit_section_(b, m, null, r);
return r;
}
/* ********************************************************** */
// atdecl
// | (funlhs | var) rhs
// | gendecl
// | ppragma
public static boolean cdecl(PsiBuilder b, int l) {
if (!recursion_guard_(b, l, "cdecl")) return false;
boolean r;
Marker m = enter_section_(b, l, _NONE_, CDECL, "<cdecl>");
r = atdecl(b, l + 1);
if (!r) r = cdecl_1(b, l + 1);
if (!r) r = gendecl(b, l + 1);
if (!r) r = ppragma(b, l + 1);
exit_section_(b, l, m, r, false, null);
return r;
}
// (funlhs | var) rhs
private static boolean cdecl_1(PsiBuilder b, int l) {
if (!recursion_guard_(b, l, "cdecl_1")) return false;
boolean r;
Marker m = enter_section_(b);
r = cdecl_1_0(b, l + 1);
r = r && rhs(b, l + 1);
exit_section_(b, m, null, r);
return r;
}
// funlhs | var
private static boolean cdecl_1_0(PsiBuilder b, int l) {
if (!recursion_guard_(b, l, "cdecl_1_0")) return false;
boolean r;
Marker m = enter_section_(b);
r = funlhs(b, l + 1);
if (!r) r = var(b, l + 1);
exit_section_(b, m, null, r);
return r;
}
/* ********************************************************** */
// open [cdecls1] close
static boolean cdecls(PsiBuilder b, int l) {
if (!recursion_guard_(b, l, "cdecls")) return false;
if (!nextTokenIs(b, "", LBRACE, WHITESPACELBRACETOK)) return false;
boolean r, p;
Marker m = enter_section_(b, l, _NONE_);
r = open(b, l + 1);
p = r; // pin = 1
r = r && report_error_(b, cdecls_1(b, l + 1));
r = p && close(b, l + 1) && r;
exit_section_(b, l, m, r, p, null);
return r || p;
}
// [cdecls1]
private static boolean cdecls_1(PsiBuilder b, int l) {
if (!recursion_guard_(b, l, "cdecls_1")) return false;
cdecls1(b, l + 1);
return true;
}
/* ********************************************************** */
// cdecl [semi cdecls1]
static boolean cdecls1(PsiBuilder b, int l) {
if (!recursion_guard_(b, l, "cdecls1")) return false;
boolean r;
Marker m = enter_section_(b);
r = cdecl(b, l + 1);
r = r && cdecls1_1(b, l + 1);
exit_section_(b, m, null, r);
return r;
}
// [semi cdecls1]
private static boolean cdecls1_1(PsiBuilder b, int l) {
if (!recursion_guard_(b, l, "cdecls1_1")) return false;
cdecls1_1_0(b, l + 1);
return true;
}
// semi cdecls1
private static boolean cdecls1_1_0(PsiBuilder b, int l) {
if (!recursion_guard_(b, l, "cdecls1_1_0")) return false;
boolean r;
Marker m = enter_section_(b);
r = semi(b, l + 1);
r = r && cdecls1(b, l + 1);
exit_section_(b, m, null, r);
return r;
}
/* ********************************************************** */
// "class" ctype [fundeps] ["where" ppragma* cdecls]
public static boolean classdecl(PsiBuilder b, int l) {
if (!recursion_guard_(b, l, "classdecl")) return false;
if (!nextTokenIs(b, CLASSTOKEN)) return false;
boolean r, p;
Marker m = enter_section_(b, l, _NONE_, CLASSDECL, null);
r = consumeToken(b, CLASSTOKEN);
p = r; // pin = 1
r = r && report_error_(b, ctype(b, l + 1));
r = p && report_error_(b, classdecl_2(b, l + 1)) && r;
r = p && classdecl_3(b, l + 1) && r;
exit_section_(b, l, m, r, p, null);
return r || p;
}
// [fundeps]
private static boolean classdecl_2(PsiBuilder b, int l) {
if (!recursion_guard_(b, l, "classdecl_2")) return false;
fundeps(b, l + 1);
return true;
}
// ["where" ppragma* cdecls]
private static boolean classdecl_3(PsiBuilder b, int l) {
if (!recursion_guard_(b, l, "classdecl_3")) return false;
classdecl_3_0(b, l + 1);
return true;
}
// "where" ppragma* cdecls
private static boolean classdecl_3_0(PsiBuilder b, int l) {
if (!recursion_guard_(b, l, "classdecl_3_0")) return false;
boolean r;
Marker m = enter_section_(b);
r = consumeToken(b, WHERE);
r = r && classdecl_3_0_1(b, l + 1);
r = r && cdecls(b, l + 1);
exit_section_(b, m, null, r);
return r;
}
// ppragma*
private static boolean classdecl_3_0_1(PsiBuilder b, int l) {
if (!recursion_guard_(b, l, "classdecl_3_0_1")) return false;
int c = current_position_(b);
while (true) {
if (!ppragma(b, l + 1)) break;
if (!empty_element_parsed_guard_(b, "classdecl_3_0_1", c)) break;
c = current_position_(b);
}
return true;
}
/* ********************************************************** */
// '}'
// | WHITESPACERBRACETOK
// | [<<stateHackMess>>]
static boolean close(PsiBuilder b, int l) {
if (!recursion_guard_(b, l, "close")) return false;
boolean r;
Marker m = enter_section_(b);
r = consumeToken(b, RBRACE);
if (!r) r = consumeToken(b, WHITESPACERBRACETOK);
if (!r) r = close_2(b, l + 1);
exit_section_(b, m, null, r);
return r;
}
// [<<stateHackMess>>]
private static boolean close_2(PsiBuilder b, int l) {
if (!recursion_guard_(b, l, "close_2")) return false;
stateHackMess(b, l + 1);
return true;
}
/* ********************************************************** */
// btype ['~' btype]
public static boolean clscontext(PsiBuilder b, int l) {
if (!recursion_guard_(b, l, "clscontext")) return false;
boolean r;
Marker m = enter_section_(b, l, _NONE_, CLSCONTEXT, "<clscontext>");
r = btype(b, l + 1);
r = r && clscontext_1(b, l + 1);
exit_section_(b, l, m, r, false, null);
return r;
}
// ['~' btype]
private static boolean clscontext_1(PsiBuilder b, int l) {
if (!recursion_guard_(b, l, "clscontext_1")) return false;
clscontext_1_0(b, l + 1);
return true;
}
// '~' btype
private static boolean clscontext_1_0(PsiBuilder b, int l) {
if (!recursion_guard_(b, l, "clscontext_1_0")) return false;
boolean r;
Marker m = enter_section_(b);
r = consumeToken(b, TILDE);
r = r && btype(b, l + 1);
exit_section_(b, m, null, r);
return r;
}
/* ********************************************************** */
// var | con
static boolean cname(PsiBuilder b, int l) {
if (!recursion_guard_(b, l, "cname")) return false;
boolean r;
Marker m = enter_section_(b);
r = var(b, l + 1);
if (!r) r = con(b, l + 1);
exit_section_(b, m, null, r);
return r;
}
/* ********************************************************** */
// <<sequence cname>>
static boolean cnames(PsiBuilder b, int l) {
return sequence(b, l + 1, cname_parser_);
}
/* ********************************************************** */
// '(' <<p>> (',' <<p>>)* ')'
static boolean commaSeparate(PsiBuilder b, int l, Parser _p) {
if (!recursion_guard_(b, l, "commaSeparate")) return false;
if (!nextTokenIs(b, LPAREN)) return false;
boolean r, p;
Marker m = enter_section_(b, l, _NONE_);
r = consumeToken(b, LPAREN);
p = r; // pin = 1
r = r && report_error_(b, _p.parse(b, l));
r = p && report_error_(b, commaSeparate_2(b, l + 1, _p)) && r;
r = p && consumeToken(b, RPAREN) && r;
exit_section_(b, l, m, r, p, null);
return r || p;
}
// (',' <<p>>)*
private static boolean commaSeparate_2(PsiBuilder b, int l, Parser _p) {
if (!recursion_guard_(b, l, "commaSeparate_2")) return false;
int c = current_position_(b);
while (true) {
if (!commaSeparate_2_0(b, l + 1, _p)) break;
if (!empty_element_parsed_guard_(b, "commaSeparate_2", c)) break;
c = current_position_(b);
}
return true;
}
// ',' <<p>>
private static boolean commaSeparate_2_0(PsiBuilder b, int l, Parser _p) {
if (!recursion_guard_(b, l, "commaSeparate_2_0")) return false;
boolean r, p;
Marker m = enter_section_(b, l, _NONE_);
r = consumeToken(b, COMMA);
p = r; // pin = 1
r = r && _p.parse(b, l);
exit_section_(b, l, m, r, p, null);
return r || p;
}
/* ********************************************************** */
// '(' <<p>> (',' (<<p>> | &')'))* ')'
static boolean commaSeparate2(PsiBuilder b, int l, Parser _p) {
if (!recursion_guard_(b, l, "commaSeparate2")) return false;
if (!nextTokenIs(b, LPAREN)) return false;
boolean r, p;
Marker m = enter_section_(b, l, _NONE_);
r = consumeToken(b, LPAREN);
p = r; // pin = 1
r = r && report_error_(b, _p.parse(b, l));
r = p && report_error_(b, commaSeparate2_2(b, l + 1, _p)) && r;
r = p && consumeToken(b, RPAREN) && r;
exit_section_(b, l, m, r, p, null);
return r || p;
}
// (',' (<<p>> | &')'))*
private static boolean commaSeparate2_2(PsiBuilder b, int l, Parser _p) {
if (!recursion_guard_(b, l, "commaSeparate2_2")) return false;
int c = current_position_(b);
while (true) {
if (!commaSeparate2_2_0(b, l + 1, _p)) break;
if (!empty_element_parsed_guard_(b, "commaSeparate2_2", c)) break;
c = current_position_(b);
}
return true;
}
// ',' (<<p>> | &')')
private static boolean commaSeparate2_2_0(PsiBuilder b, int l, Parser _p) {
if (!recursion_guard_(b, l, "commaSeparate2_2_0")) return false;
boolean r, p;
Marker m = enter_section_(b, l, _NONE_);
r = consumeToken(b, COMMA);
p = r; // pin = 1
r = r && commaSeparate2_2_0_1(b, l + 1, _p);
exit_section_(b, l, m, r, p, null);
return r || p;
}
// <<p>> | &')'
private static boolean commaSeparate2_2_0_1(PsiBuilder b, int l, Parser _p) {
if (!recursion_guard_(b, l, "commaSeparate2_2_0_1")) return false;
boolean r;
Marker m = enter_section_(b);
r = _p.parse(b, l);
if (!r) r = commaSeparate2_2_0_1_1(b, l + 1);
exit_section_(b, m, null, r);
return r;
}
// &')'
private static boolean commaSeparate2_2_0_1_1(PsiBuilder b, int l) {
if (!recursion_guard_(b, l, "commaSeparate2_2_0_1_1")) return false;
boolean r;
Marker m = enter_section_(b, l, _AND_);
r = consumeToken(b, RPAREN);
exit_section_(b, l, m, r, false, null);
return r;
}
/* ********************************************************** */
// kind [',' comma_kinds1]
static boolean comma_kinds1(PsiBuilder b, int l) {
if (!recursion_guard_(b, l, "comma_kinds1")) return false;
boolean r;
Marker m = enter_section_(b);
r = kind(b, l + 1);
r = r && comma_kinds1_1(b, l + 1);
exit_section_(b, m, null, r);
return r;
}
// [',' comma_kinds1]
private static boolean comma_kinds1_1(PsiBuilder b, int l) {
if (!recursion_guard_(b, l, "comma_kinds1_1")) return false;
comma_kinds1_1_0(b, l + 1);
return true;
}
// ',' comma_kinds1
private static boolean comma_kinds1_1_0(PsiBuilder b, int l) {
if (!recursion_guard_(b, l, "comma_kinds1_1_0")) return false;
boolean r;
Marker m = enter_section_(b);
r = consumeToken(b, COMMA);
r = r && comma_kinds1(b, l + 1);
exit_section_(b, m, null, r);
return r;
}
/* ********************************************************** */
// ','+
static boolean commas(PsiBuilder b, int l) {
if (!recursion_guard_(b, l, "commas")) return false;
if (!nextTokenIs(b, COMMA)) return false;
boolean r;
Marker m = enter_section_(b);
r = consumeToken(b, COMMA);
int c = current_position_(b);
while (r) {
if (!consumeToken(b, COMMA)) break;
if (!empty_element_parsed_guard_(b, "commas", c)) break;
c = current_position_(b);
}
exit_section_(b, m, null, r);
return r;
}
/* ********************************************************** */
// conid | '(' consym ')'
public static boolean con(PsiBuilder b, int l) {
if (!recursion_guard_(b, l, "con")) return false;
if (!nextTokenIs(b, "<con>", LPAREN, CONIDREGEXP)) return false;
boolean r;
Marker m = enter_section_(b, l, _NONE_, CON, "<con>");
r = conid(b, l + 1);
if (!r) r = con_1(b, l + 1);
exit_section_(b, l, m, r, false, null);
return r;
}
// '(' consym ')'
private static boolean con_1(PsiBuilder b, int l) {
if (!recursion_guard_(b, l, "con_1")) return false;
boolean r;
Marker m = enter_section_(b);
r = consumeToken(b, LPAREN);
r = r && consym(b, l + 1);
r = r && consumeToken(b, RPAREN);
exit_section_(b, m, null, r);
return r;
}
/* ********************************************************** */
// conidRegexp
public static boolean conid(PsiBuilder b, int l) {
if (!recursion_guard_(b, l, "conid")) return false;
if (!nextTokenIs(b, CONIDREGEXP)) return false;
boolean r;
Marker m = enter_section_(b);
r = consumeToken(b, CONIDREGEXP);
exit_section_(b, m, CONID, r);
return r;
}
/* ********************************************************** */
// consym | '`' conid '`'
public static boolean conop(PsiBuilder b, int l) {
if (!recursion_guard_(b, l, "conop")) return false;
if (!nextTokenIs(b, "<conop>", BACKTICK, CONSYMTOK)) return false;
boolean r;
Marker m = enter_section_(b, l, _NONE_, CONOP, "<conop>");
r = consym(b, l + 1);
if (!r) r = conop_1(b, l + 1);
exit_section_(b, l, m, r, false, null);
return r;
}
// '`' conid '`'
private static boolean conop_1(PsiBuilder b, int l) {
if (!recursion_guard_(b, l, "conop_1")) return false;
boolean r;
Marker m = enter_section_(b);
r = consumeToken(b, BACKTICK);
r = r && conid(b, l + 1);
r = r && consumeToken(b, BACKTICK);
exit_section_(b, m, null, r);
return r;
}
/* ********************************************************** */
// btype conop btype
// | con ('{' [(fielddecl ',')* fielddecl] '}' | btype*)
public static boolean constr(PsiBuilder b, int l) {
if (!recursion_guard_(b, l, "constr")) return false;
boolean r;
Marker m = enter_section_(b, l, _NONE_, CONSTR, "<constr>");
r = constr_0(b, l + 1);
if (!r) r = constr_1(b, l + 1);
exit_section_(b, l, m, r, false, null);
return r;
}
// btype conop btype
private static boolean constr_0(PsiBuilder b, int l) {
if (!recursion_guard_(b, l, "constr_0")) return false;
boolean r;
Marker m = enter_section_(b);
r = btype(b, l + 1);
r = r && conop(b, l + 1);
r = r && btype(b, l + 1);
exit_section_(b, m, null, r);
return r;
}
// con ('{' [(fielddecl ',')* fielddecl] '}' | btype*)
private static boolean constr_1(PsiBuilder b, int l) {
if (!recursion_guard_(b, l, "constr_1")) return false;
boolean r;
Marker m = enter_section_(b);
r = con(b, l + 1);
r = r && constr_1_1(b, l + 1);
exit_section_(b, m, null, r);
return r;
}
// '{' [(fielddecl ',')* fielddecl] '}' | btype*
private static boolean constr_1_1(PsiBuilder b, int l) {
if (!recursion_guard_(b, l, "constr_1_1")) return false;
boolean r;
Marker m = enter_section_(b);
r = constr_1_1_0(b, l + 1);
if (!r) r = constr_1_1_1(b, l + 1);
exit_section_(b, m, null, r);
return r;
}
// '{' [(fielddecl ',')* fielddecl] '}'
private static boolean constr_1_1_0(PsiBuilder b, int l) {
if (!recursion_guard_(b, l, "constr_1_1_0")) return false;
boolean r;
Marker m = enter_section_(b);
r = consumeToken(b, LBRACE);
r = r && constr_1_1_0_1(b, l + 1);
r = r && consumeToken(b, RBRACE);
exit_section_(b, m, null, r);
return r;
}
// [(fielddecl ',')* fielddecl]
private static boolean constr_1_1_0_1(PsiBuilder b, int l) {
if (!recursion_guard_(b, l, "constr_1_1_0_1")) return false;
constr_1_1_0_1_0(b, l + 1);
return true;
}
// (fielddecl ',')* fielddecl
private static boolean constr_1_1_0_1_0(PsiBuilder b, int l) {
if (!recursion_guard_(b, l, "constr_1_1_0_1_0")) return false;
boolean r;
Marker m = enter_section_(b);
r = constr_1_1_0_1_0_0(b, l + 1);
r = r && fielddecl(b, l + 1);
exit_section_(b, m, null, r);
return r;
}
// (fielddecl ',')*
private static boolean constr_1_1_0_1_0_0(PsiBuilder b, int l) {
if (!recursion_guard_(b, l, "constr_1_1_0_1_0_0")) return false;
int c = current_position_(b);
while (true) {
if (!constr_1_1_0_1_0_0_0(b, l + 1)) break;
if (!empty_element_parsed_guard_(b, "constr_1_1_0_1_0_0", c)) break;
c = current_position_(b);
}
return true;
}
// fielddecl ','
private static boolean constr_1_1_0_1_0_0_0(PsiBuilder b, int l) {
if (!recursion_guard_(b, l, "constr_1_1_0_1_0_0_0")) return false;
boolean r;
Marker m = enter_section_(b);
r = fielddecl(b, l + 1);
r = r && consumeToken(b, COMMA);
exit_section_(b, m, null, r);
return r;
}
// btype*
private static boolean constr_1_1_1(PsiBuilder b, int l) {
if (!recursion_guard_(b, l, "constr_1_1_1")) return false;
int c = current_position_(b);
while (true) {
if (!btype(b, l + 1)) break;
if (!empty_element_parsed_guard_(b, "constr_1_1_1", c)) break;
c = current_position_(b);
}
return true;
}
/* ********************************************************** */
// [clscontext "=>"] constr ('|' constr)*
static boolean constrs(PsiBuilder b, int l) {
if (!recursion_guard_(b, l, "constrs")) return false;
boolean r;
Marker m = enter_section_(b);
r = constrs_0(b, l + 1);
r = r && constr(b, l + 1);
r = r && constrs_2(b, l + 1);
exit_section_(b, m, null, r);
return r;
}
// [clscontext "=>"]
private static boolean constrs_0(PsiBuilder b, int l) {
if (!recursion_guard_(b, l, "constrs_0")) return false;
constrs_0_0(b, l + 1);
return true;
}
// clscontext "=>"
private static boolean constrs_0_0(PsiBuilder b, int l) {
if (!recursion_guard_(b, l, "constrs_0_0")) return false;
boolean r;
Marker m = enter_section_(b);
r = clscontext(b, l + 1);
r = r && consumeToken(b, DOUBLEARROW);
exit_section_(b, m, null, r);
return r;
}
// ('|' constr)*
private static boolean constrs_2(PsiBuilder b, int l) {
if (!recursion_guard_(b, l, "constrs_2")) return false;
int c = current_position_(b);
while (true) {
if (!constrs_2_0(b, l + 1)) break;
if (!empty_element_parsed_guard_(b, "constrs_2", c)) break;
c = current_position_(b);
}
return true;
}
// '|' constr
private static boolean constrs_2_0(PsiBuilder b, int l) {
if (!recursion_guard_(b, l, "constrs_2_0")) return false;
boolean r;
Marker m = enter_section_(b);
r = consumeToken(b, PIPE);
r = r && constr(b, l + 1);
exit_section_(b, m, null, r);
return r;
}
/* ********************************************************** */
// CONSYMTOK
public static boolean consym(PsiBuilder b, int l) {
if (!recursion_guard_(b, l, "consym")) return false;
if (!nextTokenIs(b, CONSYMTOK)) return false;
boolean r;
Marker m = enter_section_(b);
r = consumeToken(b, CONSYMTOK);
exit_section_(b, m, CONSYM, r);
return r;
}
/* ********************************************************** */
// clscontext '=>' ctype
static boolean contexttype(PsiBuilder b, int l) {
if (!recursion_guard_(b, l, "contexttype")) return false;
boolean r, p;
Marker m = enter_section_(b, l, _NONE_);
r = clscontext(b, l + 1);
r = r && consumeToken(b, DOUBLEARROW);
p = r; // pin = 2
r = r && ctype(b, l + 1);
exit_section_(b, l, m, r, p, null);
return r || p;
}
/* ********************************************************** */
// foralltype
// | contexttype
// | typee
public static boolean ctype(PsiBuilder b, int l) {
if (!recursion_guard_(b, l, "ctype")) return false;
boolean r;
Marker m = enter_section_(b, l, _NONE_, CTYPE, "<ctype>");
r = foralltype(b, l + 1);
if (!r) r = contexttype(b, l + 1);
if (!r) r = typee(b, l + 1);
exit_section_(b, l, m, r, false, null);
return r;
}
/* ********************************************************** */
// "data" ["instance"] [clscontext "=>"] [ppragma] typee ['=' ["forall" tv_bndr* '.'] constrs| [kindsig] ["where" gadtconstrs]] [deriving]
public static boolean datadecl(PsiBuilder b, int l) {
if (!recursion_guard_(b, l, "datadecl")) return false;
if (!nextTokenIs(b, DATA)) return false;
boolean r, p;
Marker m = enter_section_(b, l, _NONE_, DATADECL, null);
r = consumeToken(b, DATA);
p = r; // pin = 1
r = r && report_error_(b, datadecl_1(b, l + 1));
r = p && report_error_(b, datadecl_2(b, l + 1)) && r;
r = p && report_error_(b, datadecl_3(b, l + 1)) && r;
r = p && report_error_(b, typee(b, l + 1)) && r;
r = p && report_error_(b, datadecl_5(b, l + 1)) && r;
r = p && datadecl_6(b, l + 1) && r;
exit_section_(b, l, m, r, p, null);
return r || p;
}
// ["instance"]
private static boolean datadecl_1(PsiBuilder b, int l) {
if (!recursion_guard_(b, l, "datadecl_1")) return false;
consumeToken(b, INSTANCE);
return true;
}
// [clscontext "=>"]
private static boolean datadecl_2(PsiBuilder b, int l) {
if (!recursion_guard_(b, l, "datadecl_2")) return false;
datadecl_2_0(b, l + 1);
return true;
}
// clscontext "=>"
private static boolean datadecl_2_0(PsiBuilder b, int l) {
if (!recursion_guard_(b, l, "datadecl_2_0")) return false;
boolean r;
Marker m = enter_section_(b);
r = clscontext(b, l + 1);
r = r && consumeToken(b, DOUBLEARROW);
exit_section_(b, m, null, r);
return r;
}
// [ppragma]
private static boolean datadecl_3(PsiBuilder b, int l) {
if (!recursion_guard_(b, l, "datadecl_3")) return false;
ppragma(b, l + 1);
return true;
}
// ['=' ["forall" tv_bndr* '.'] constrs| [kindsig] ["where" gadtconstrs]]
private static boolean datadecl_5(PsiBuilder b, int l) {
if (!recursion_guard_(b, l, "datadecl_5")) return false;
datadecl_5_0(b, l + 1);
return true;
}
// '=' ["forall" tv_bndr* '.'] constrs| [kindsig] ["where" gadtconstrs]
private static boolean datadecl_5_0(PsiBuilder b, int l) {
if (!recursion_guard_(b, l, "datadecl_5_0")) return false;
boolean r;
Marker m = enter_section_(b);
r = datadecl_5_0_0(b, l + 1);
if (!r) r = datadecl_5_0_1(b, l + 1);
exit_section_(b, m, null, r);
return r;
}
// '=' ["forall" tv_bndr* '.'] constrs
private static boolean datadecl_5_0_0(PsiBuilder b, int l) {
if (!recursion_guard_(b, l, "datadecl_5_0_0")) return false;
boolean r;
Marker m = enter_section_(b);
r = consumeToken(b, EQUALS);
r = r && datadecl_5_0_0_1(b, l + 1);
r = r && constrs(b, l + 1);
exit_section_(b, m, null, r);
return r;
}
// ["forall" tv_bndr* '.']
private static boolean datadecl_5_0_0_1(PsiBuilder b, int l) {
if (!recursion_guard_(b, l, "datadecl_5_0_0_1")) return false;
datadecl_5_0_0_1_0(b, l + 1);
return true;
}
// "forall" tv_bndr* '.'
private static boolean datadecl_5_0_0_1_0(PsiBuilder b, int l) {
if (!recursion_guard_(b, l, "datadecl_5_0_0_1_0")) return false;
boolean r;
Marker m = enter_section_(b);
r = consumeToken(b, FORALLTOKEN);
r = r && datadecl_5_0_0_1_0_1(b, l + 1);
r = r && consumeToken(b, PERIOD);
exit_section_(b, m, null, r);
return r;
}
// tv_bndr*
private static boolean datadecl_5_0_0_1_0_1(PsiBuilder b, int l) {
if (!recursion_guard_(b, l, "datadecl_5_0_0_1_0_1")) return false;
int c = current_position_(b);
while (true) {
if (!tv_bndr(b, l + 1)) break;
if (!empty_element_parsed_guard_(b, "datadecl_5_0_0_1_0_1", c)) break;
c = current_position_(b);
}
return true;
}
// [kindsig] ["where" gadtconstrs]
private static boolean datadecl_5_0_1(PsiBuilder b, int l) {
if (!recursion_guard_(b, l, "datadecl_5_0_1")) return false;
boolean r;
Marker m = enter_section_(b);
r = datadecl_5_0_1_0(b, l + 1);
r = r && datadecl_5_0_1_1(b, l + 1);
exit_section_(b, m, null, r);
return r;
}
// [kindsig]
private static boolean datadecl_5_0_1_0(PsiBuilder b, int l) {
if (!recursion_guard_(b, l, "datadecl_5_0_1_0")) return false;
kindsig(b, l + 1);
return true;
}
// ["where" gadtconstrs]
private static boolean datadecl_5_0_1_1(PsiBuilder b, int l) {
if (!recursion_guard_(b, l, "datadecl_5_0_1_1")) return false;
datadecl_5_0_1_1_0(b, l + 1);
return true;
}
// "where" gadtconstrs
private static boolean datadecl_5_0_1_1_0(PsiBuilder b, int l) {
if (!recursion_guard_(b, l, "datadecl_5_0_1_1_0")) return false;
boolean r;
Marker m = enter_section_(b);
r = consumeToken(b, WHERE);
r = r && gadtconstrs(b, l + 1);
exit_section_(b, m, null, r);
return r;
}
// [deriving]
private static boolean datadecl_6(PsiBuilder b, int l) {
if (!recursion_guard_(b, l, "datadecl_6")) return false;
deriving(b, l + 1);
return true;
}
/* ********************************************************** */
// qtycls (dclass|tyvar)*
static boolean dclass(PsiBuilder b, int l) {
if (!recursion_guard_(b, l, "dclass")) return false;
if (!nextTokenIs(b, CONIDREGEXP)) return false;
boolean r;
Marker m = enter_section_(b);
r = qtycls(b, l + 1);
r = r && dclass_1(b, l + 1);
exit_section_(b, m, null, r);
return r;
}
// (dclass|tyvar)*
private static boolean dclass_1(PsiBuilder b, int l) {
if (!recursion_guard_(b, l, "dclass_1")) return false;
int c = current_position_(b);
while (true) {
if (!dclass_1_0(b, l + 1)) break;
if (!empty_element_parsed_guard_(b, "dclass_1", c)) break;
c = current_position_(b);
}
return true;
}
// dclass|tyvar
private static boolean dclass_1_0(PsiBuilder b, int l) {
if (!recursion_guard_(b, l, "dclass_1_0")) return false;
boolean r;
Marker m = enter_section_(b);
r = dclass(b, l + 1);
if (!r) r = tyvar(b, l + 1);
exit_section_(b, m, null, r);
return r;
}
/* ********************************************************** */
// funorpatdecl
// | gendecl
static boolean decl(PsiBuilder b, int l) {
if (!recursion_guard_(b, l, "decl")) return false;
boolean r;
Marker m = enter_section_(b);
r = funorpatdecl(b, l + 1);
if (!r) r = gendecl(b, l + 1);
exit_section_(b, m, null, r);
return r;
}
/* ********************************************************** */
// open [decls1] close
static boolean decls(PsiBuilder b, int l) {
if (!recursion_guard_(b, l, "decls")) return false;
if (!nextTokenIs(b, "", LBRACE, WHITESPACELBRACETOK)) return false;
boolean r, p;
Marker m = enter_section_(b, l, _NONE_);
r = open(b, l + 1);
p = r; // pin = 1
r = r && report_error_(b, decls_1(b, l + 1));
r = p && close(b, l + 1) && r;
exit_section_(b, l, m, r, p, null);
return r || p;
}
// [decls1]
private static boolean decls_1(PsiBuilder b, int l) {
if (!recursion_guard_(b, l, "decls_1")) return false;
decls1(b, l + 1);
return true;
}
/* ********************************************************** */
// ppragma* decl ppragma* [semi decls1]
static boolean decls1(PsiBuilder b, int l) {
if (!recursion_guard_(b, l, "decls1")) return false;
boolean r;
Marker m = enter_section_(b);
r = decls1_0(b, l + 1);
r = r && decl(b, l + 1);
r = r && decls1_2(b, l + 1);
r = r && decls1_3(b, l + 1);
exit_section_(b, m, null, r);
return r;
}
// ppragma*
private static boolean decls1_0(PsiBuilder b, int l) {
if (!recursion_guard_(b, l, "decls1_0")) return false;
int c = current_position_(b);
while (true) {
if (!ppragma(b, l + 1)) break;
if (!empty_element_parsed_guard_(b, "decls1_0", c)) break;
c = current_position_(b);
}
return true;
}
// ppragma*
private static boolean decls1_2(PsiBuilder b, int l) {
if (!recursion_guard_(b, l, "decls1_2")) return false;
int c = current_position_(b);
while (true) {
if (!ppragma(b, l + 1)) break;
if (!empty_element_parsed_guard_(b, "decls1_2", c)) break;
c = current_position_(b);
}
return true;
}
// [semi decls1]
private static boolean decls1_3(PsiBuilder b, int l) {
if (!recursion_guard_(b, l, "decls1_3")) return false;
decls1_3_0(b, l + 1);
return true;
}
// semi decls1
private static boolean decls1_3_0(PsiBuilder b, int l) {
if (!recursion_guard_(b, l, "decls1_3_0")) return false;
boolean r;
Marker m = enter_section_(b);
r = semi(b, l + 1);
r = r && decls1(b, l + 1);
exit_section_(b, m, null, r);
return r;
}
/* ********************************************************** */
// "default" <<commaSeparate typee>>
public static boolean defaultdecl(PsiBuilder b, int l) {
if (!recursion_guard_(b, l, "defaultdecl")) return false;
if (!nextTokenIs(b, DEFAULT)) return false;
boolean r, p;
Marker m = enter_section_(b, l, _NONE_, DEFAULTDECL, null);
r = consumeToken(b, DEFAULT);
p = r; // pin = 1
r = r && commaSeparate(b, l + 1, typee_parser_);
exit_section_(b, l, m, r, p, null);
return r || p;
}
/* ********************************************************** */
// "deriving" (dclass | <<commaSeparate dclass>>)
static boolean deriving(PsiBuilder b, int l) {
if (!recursion_guard_(b, l, "deriving")) return false;
if (!nextTokenIs(b, DERIVING)) return false;
boolean r, p;
Marker m = enter_section_(b, l, _NONE_);
r = consumeToken(b, DERIVING);
p = r; // pin = 1
r = r && deriving_1(b, l + 1);
exit_section_(b, l, m, r, p, null);
return r || p;
}
// dclass | <<commaSeparate dclass>>
private static boolean deriving_1(PsiBuilder b, int l) {
if (!recursion_guard_(b, l, "deriving_1")) return false;
boolean r;
Marker m = enter_section_(b);
r = dclass(b, l + 1);
if (!r) r = commaSeparate(b, l + 1, dclass_parser_);
exit_section_(b, m, null, r);
return r;
}
/* ********************************************************** */
// "deriving" "instance" [ppragma] ctype
public static boolean derivingdecl(PsiBuilder b, int l) {
if (!recursion_guard_(b, l, "derivingdecl")) return false;
if (!nextTokenIs(b, DERIVING)) return false;
boolean r, p;
Marker m = enter_section_(b, l, _NONE_, DERIVINGDECL, null);
r = consumeToken(b, DERIVING);
p = r; // pin = 1
r = r && report_error_(b, consumeToken(b, INSTANCE));
r = p && report_error_(b, derivingdecl_2(b, l + 1)) && r;
r = p && ctype(b, l + 1) && r;
exit_section_(b, l, m, r, p, null);
return r || p;
}
// [ppragma]
private static boolean derivingdecl_2(PsiBuilder b, int l) {
if (!recursion_guard_(b, l, "derivingdecl_2")) return false;
ppragma(b, l + 1);
return true;
}
/* ********************************************************** */
// <<indented true>>
static boolean e(PsiBuilder b, int l) {
return indented(b, l + 1, TRUE_parser_);
}
/* ********************************************************** */
// ppragma* infixexp ["::" [clscontext "=>"] typee]
public static boolean exp(PsiBuilder b, int l) {
if (!recursion_guard_(b, l, "exp")) return false;
boolean r;
Marker m = enter_section_(b, l, _COLLAPSE_, EXP, "<exp>");
r = exp_0(b, l + 1);
r = r && infixexp(b, l + 1);
r = r && exp_2(b, l + 1);
exit_section_(b, l, m, r, false, null);
return r;
}
// ppragma*
private static boolean exp_0(PsiBuilder b, int l) {
if (!recursion_guard_(b, l, "exp_0")) return false;
int c = current_position_(b);
while (true) {
if (!ppragma(b, l + 1)) break;
if (!empty_element_parsed_guard_(b, "exp_0", c)) break;
c = current_position_(b);
}
return true;
}
// ["::" [clscontext "=>"] typee]
private static boolean exp_2(PsiBuilder b, int l) {
if (!recursion_guard_(b, l, "exp_2")) return false;
exp_2_0(b, l + 1);
return true;
}
// "::" [clscontext "=>"] typee
private static boolean exp_2_0(PsiBuilder b, int l) {
if (!recursion_guard_(b, l, "exp_2_0")) return false;
boolean r;
Marker m = enter_section_(b);
r = consumeToken(b, DOUBLECOLON);
r = r && exp_2_0_1(b, l + 1);
r = r && typee(b, l + 1);
exit_section_(b, m, null, r);
return r;
}
// [clscontext "=>"]
private static boolean exp_2_0_1(PsiBuilder b, int l) {
if (!recursion_guard_(b, l, "exp_2_0_1")) return false;
exp_2_0_1_0(b, l + 1);
return true;
}
// clscontext "=>"
private static boolean exp_2_0_1_0(PsiBuilder b, int l) {
if (!recursion_guard_(b, l, "exp_2_0_1_0")) return false;
boolean r;
Marker m = enter_section_(b);
r = clscontext(b, l + 1);
r = r && consumeToken(b, DOUBLEARROW);
exit_section_(b, m, null, r);
return r;
}
/* ********************************************************** */
// pstringtoken
static boolean expent(PsiBuilder b, int l) {
return pstringtoken(b, l + 1);
}
/* ********************************************************** */
// conid ('.' conid)* (varsym | '..')
static boolean explicitqvarsym(PsiBuilder b, int l) {
if (!recursion_guard_(b, l, "explicitqvarsym")) return false;
if (!nextTokenIs(b, CONIDREGEXP)) return false;
boolean r;
Marker m = enter_section_(b);
r = conid(b, l + 1);
r = r && explicitqvarsym_1(b, l + 1);
r = r && explicitqvarsym_2(b, l + 1);
exit_section_(b, m, null, r);
return r;
}
// ('.' conid)*
private static boolean explicitqvarsym_1(PsiBuilder b, int l) {
if (!recursion_guard_(b, l, "explicitqvarsym_1")) return false;
int c = current_position_(b);
while (true) {
if (!explicitqvarsym_1_0(b, l + 1)) break;
if (!empty_element_parsed_guard_(b, "explicitqvarsym_1", c)) break;
c = current_position_(b);
}
return true;
}
// '.' conid
private static boolean explicitqvarsym_1_0(PsiBuilder b, int l) {
if (!recursion_guard_(b, l, "explicitqvarsym_1_0")) return false;
boolean r;
Marker m = enter_section_(b);
r = consumeToken(b, PERIOD);
r = r && conid(b, l + 1);
exit_section_(b, m, null, r);
return r;
}
// varsym | '..'
private static boolean explicitqvarsym_2(PsiBuilder b, int l) {
if (!recursion_guard_(b, l, "explicitqvarsym_2")) return false;
boolean r;
Marker m = enter_section_(b);
r = varsym(b, l + 1);
if (!r) r = consumeToken(b, DOUBLEPERIOD);
exit_section_(b, m, null, r);
return r;
}
/* ********************************************************** */
// "module" qconid
// // Really (qtycon|qtycls) but they are both ::= qconid.
// | qtycon [ '(' (".." | cnames | qvars) ')']
// | qvar
public static boolean export(PsiBuilder b, int l) {
if (!recursion_guard_(b, l, "export")) return false;
boolean r;
Marker m = enter_section_(b, l, _NONE_, EXPORT, "<export>");
r = export_0(b, l + 1);
if (!r) r = export_1(b, l + 1);
if (!r) r = qvar(b, l + 1);
exit_section_(b, l, m, r, false, null);
return r;
}
// "module" qconid
private static boolean export_0(PsiBuilder b, int l) {
if (!recursion_guard_(b, l, "export_0")) return false;
boolean r, p;
Marker m = enter_section_(b, l, _NONE_);
r = consumeToken(b, MODULETOKEN);
p = r; // pin = 1
r = r && qconid(b, l + 1);
exit_section_(b, l, m, r, p, null);
return r || p;
}
// qtycon [ '(' (".." | cnames | qvars) ')']
private static boolean export_1(PsiBuilder b, int l) {
if (!recursion_guard_(b, l, "export_1")) return false;
boolean r, p;
Marker m = enter_section_(b, l, _NONE_);
r = qtycon(b, l + 1);
p = r; // pin = 1
r = r && export_1_1(b, l + 1);
exit_section_(b, l, m, r, p, null);
return r || p;
}
// [ '(' (".." | cnames | qvars) ')']
private static boolean export_1_1(PsiBuilder b, int l) {
if (!recursion_guard_(b, l, "export_1_1")) return false;
export_1_1_0(b, l + 1);
return true;
}
// '(' (".." | cnames | qvars) ')'
private static boolean export_1_1_0(PsiBuilder b, int l) {
if (!recursion_guard_(b, l, "export_1_1_0")) return false;
boolean r, p;
Marker m = enter_section_(b, l, _NONE_);
r = consumeToken(b, LPAREN);
p = r; // pin = 1
r = r && report_error_(b, export_1_1_0_1(b, l + 1));
r = p && consumeToken(b, RPAREN) && r;
exit_section_(b, l, m, r, p, null);
return r || p;
}
// ".." | cnames | qvars
private static boolean export_1_1_0_1(PsiBuilder b, int l) {
if (!recursion_guard_(b, l, "export_1_1_0_1")) return false;
boolean r;
Marker m = enter_section_(b);
r = consumeToken(b, DOUBLEPERIOD);
if (!r) r = cnames(b, l + 1);
if (!r) r = qvars(b, l + 1);
exit_section_(b, m, null, r);
return r;
}
/* ********************************************************** */
// "export" callconv [expent]
static boolean exportdecl(PsiBuilder b, int l) {
if (!recursion_guard_(b, l, "exportdecl")) return false;
if (!nextTokenIs(b, EXPORTTOKEN)) return false;
boolean r, p;
Marker m = enter_section_(b, l, _NONE_);
r = consumeToken(b, EXPORTTOKEN);
p = r; // pin = 1
r = r && report_error_(b, callconv(b, l + 1));
r = p && exportdecl_2(b, l + 1) && r;
exit_section_(b, l, m, r, p, null);
return r || p;
}
// [expent]
private static boolean exportdecl_2(PsiBuilder b, int l) {
if (!recursion_guard_(b, l, "exportdecl_2")) return false;
expent(b, l + 1);
return true;
}
/* ********************************************************** */
// <<commaSeparate2 [export]>>
public static boolean exports(PsiBuilder b, int l) {
if (!recursion_guard_(b, l, "exports")) return false;
if (!nextTokenIs(b, LPAREN)) return false;
boolean r;
Marker m = enter_section_(b);
r = commaSeparate2(b, l + 1, exports_0_0_parser_);
exit_section_(b, m, EXPORTS, r);
return r;
}
// [export]
private static boolean exports_0_0(PsiBuilder b, int l) {
if (!recursion_guard_(b, l, "exports_0_0")) return false;
export(b, l + 1);
return true;
}
/* ********************************************************** */
// "()" | '(' ')'
public static boolean exportsempty(PsiBuilder b, int l) {
if (!recursion_guard_(b, l, "exportsempty")) return false;
boolean r;
Marker m = enter_section_(b, l, _NONE_, EXPORTSEMPTY, "<exportsempty>");
r = consumeToken(b, "()");
if (!r) r = exportsempty_1(b, l + 1);
exit_section_(b, l, m, r, false, null);
return r;
}
// '(' ')'
private static boolean exportsempty_1(PsiBuilder b, int l) {
if (!recursion_guard_(b, l, "exportsempty_1")) return false;
boolean r;
Marker m = enter_section_(b);
r = consumeToken(b, LPAREN);
r = r && consumeToken(b, RPAREN);
exit_section_(b, m, null, r);
return r;
}
/* ********************************************************** */
// (qtycon|tyvar) atype*
static boolean fatype(PsiBuilder b, int l) {
if (!recursion_guard_(b, l, "fatype")) return false;
boolean r;
Marker m = enter_section_(b);
r = fatype_0(b, l + 1);
r = r && fatype_1(b, l + 1);
exit_section_(b, m, null, r);
return r;
}
// qtycon|tyvar
private static boolean fatype_0(PsiBuilder b, int l) {
if (!recursion_guard_(b, l, "fatype_0")) return false;
boolean r;
Marker m = enter_section_(b);
r = qtycon(b, l + 1);
if (!r) r = tyvar(b, l + 1);
exit_section_(b, m, null, r);
return r;
}
// atype*
private static boolean fatype_1(PsiBuilder b, int l) {
if (!recursion_guard_(b, l, "fatype_1")) return false;
int c = current_position_(b);
while (true) {
if (!atype(b, l + 1)) break;
if (!empty_element_parsed_guard_(b, "fatype_1", c)) break;
c = current_position_(b);
}
return true;
}
/* ********************************************************** */
// qvar '=' exp
static boolean fbind(PsiBuilder b, int l) {
if (!recursion_guard_(b, l, "fbind")) return false;
boolean r, p;
Marker m = enter_section_(b, l, _NONE_);
r = qvar(b, l + 1);
r = r && consumeToken(b, EQUALS);
p = r; // pin = 2
r = r && exp(b, l + 1);
exit_section_(b, l, m, r, p, null);
return r || p;
}
/* ********************************************************** */
// (importdecl | exportdecl) var "::" [clscontext "=>"] ftype
static boolean fdecl(PsiBuilder b, int l) {
if (!recursion_guard_(b, l, "fdecl")) return false;
if (!nextTokenIs(b, "", EXPORTTOKEN, IMPORT)) return false;
boolean r;
Marker m = enter_section_(b);
r = fdecl_0(b, l + 1);
r = r && var(b, l + 1);
r = r && consumeToken(b, DOUBLECOLON);
r = r && fdecl_3(b, l + 1);
r = r && ftype(b, l + 1);
exit_section_(b, m, null, r);
return r;
}
// importdecl | exportdecl
private static boolean fdecl_0(PsiBuilder b, int l) {
if (!recursion_guard_(b, l, "fdecl_0")) return false;
boolean r;
Marker m = enter_section_(b);
r = importdecl(b, l + 1);
if (!r) r = exportdecl(b, l + 1);
exit_section_(b, m, null, r);
return r;
}
// [clscontext "=>"]
private static boolean fdecl_3(PsiBuilder b, int l) {
if (!recursion_guard_(b, l, "fdecl_3")) return false;
fdecl_3_0(b, l + 1);
return true;
}
// clscontext "=>"
private static boolean fdecl_3_0(PsiBuilder b, int l) {
if (!recursion_guard_(b, l, "fdecl_3_0")) return false;
boolean r;
Marker m = enter_section_(b);
r = clscontext(b, l + 1);
r = r && consumeToken(b, DOUBLEARROW);
exit_section_(b, m, null, r);
return r;
}
/* ********************************************************** */
// vars "::" (typee | '!' atype)
static boolean fielddecl(PsiBuilder b, int l) {
if (!recursion_guard_(b, l, "fielddecl")) return false;
boolean r, p;
Marker m = enter_section_(b, l, _NONE_);
r = vars(b, l + 1);
r = r && consumeToken(b, DOUBLECOLON);
p = r; // pin = 2
r = r && fielddecl_2(b, l + 1);
exit_section_(b, l, m, r, p, null);
return r || p;
}
// typee | '!' atype
private static boolean fielddecl_2(PsiBuilder b, int l) {
if (!recursion_guard_(b, l, "fielddecl_2")) return false;
boolean r;
Marker m = enter_section_(b);
r = typee(b, l + 1);
if (!r) r = fielddecl_2_1(b, l + 1);
exit_section_(b, m, null, r);
return r;
}
// '!' atype
private static boolean fielddecl_2_1(PsiBuilder b, int l) {
if (!recursion_guard_(b, l, "fielddecl_2_1")) return false;
boolean r;
Marker m = enter_section_(b);
r = consumeToken(b, EXCLAMATION);
r = r && atype(b, l + 1);
exit_section_(b, m, null, r);
return r;
}
/* ********************************************************** */
// fielddecl [',' fielddecls]
static boolean fielddecls(PsiBuilder b, int l) {
if (!recursion_guard_(b, l, "fielddecls")) return false;
boolean r, p;
Marker m = enter_section_(b, l, _NONE_);
r = fielddecl(b, l + 1);
p = r; // pin = 1
r = r && fielddecls_1(b, l + 1);
exit_section_(b, l, m, r, p, null);
return r || p;
}
// [',' fielddecls]
private static boolean fielddecls_1(PsiBuilder b, int l) {
if (!recursion_guard_(b, l, "fielddecls_1")) return false;
fielddecls_1_0(b, l + 1);
return true;
}
// ',' fielddecls
private static boolean fielddecls_1_0(PsiBuilder b, int l) {
if (!recursion_guard_(b, l, "fielddecls_1_0")) return false;
boolean r, p;
Marker m = enter_section_(b, l, _NONE_);
r = consumeToken(b, COMMA);
p = r; // pin = 1
r = r && fielddecls(b, l + 1);
exit_section_(b, l, m, r, p, null);
return r || p;
}
/* ********************************************************** */
// "infix" | "infixr" | "infixl"
public static boolean fixity(PsiBuilder b, int l) {
if (!recursion_guard_(b, l, "fixity")) return false;
boolean r;
Marker m = enter_section_(b, l, _NONE_, FIXITY, "<fixity>");
r = consumeToken(b, INFIX);
if (!r) r = consumeToken(b, INFIXR);
if (!r) r = consumeToken(b, INFIXL);
exit_section_(b, l, m, r, false, null);
return r;
}
/* ********************************************************** */
// "forall" tv_bndr* '.' ctype
static boolean foralltype(PsiBuilder b, int l) {
if (!recursion_guard_(b, l, "foralltype")) return false;
if (!nextTokenIs(b, FORALLTOKEN)) return false;
boolean r, p;
Marker m = enter_section_(b, l, _NONE_);
r = consumeToken(b, FORALLTOKEN);
p = r; // pin = 1
r = r && report_error_(b, foralltype_1(b, l + 1));
r = p && report_error_(b, consumeToken(b, PERIOD)) && r;
r = p && ctype(b, l + 1) && r;
exit_section_(b, l, m, r, p, null);
return r || p;
}
// tv_bndr*
private static boolean foralltype_1(PsiBuilder b, int l) {
if (!recursion_guard_(b, l, "foralltype_1")) return false;
int c = current_position_(b);
while (true) {
if (!tv_bndr(b, l + 1)) break;
if (!empty_element_parsed_guard_(b, "foralltype_1", c)) break;
c = current_position_(b);
}
return true;
}
/* ********************************************************** */
// "foreign" fdecl
public static boolean foreigndecl(PsiBuilder b, int l) {
if (!recursion_guard_(b, l, "foreigndecl")) return false;
if (!nextTokenIs(b, FOREIGN)) return false;
boolean r, p;
Marker m = enter_section_(b, l, _NONE_, FOREIGNDECL, null);
r = consumeToken(b, FOREIGN);
p = r; // pin = 1
r = r && fdecl(b, l + 1);
exit_section_(b, l, m, r, p, null);
return r || p;
}
/* ********************************************************** */
// qvar ['=' pat]
// | ".."
static boolean fpat(PsiBuilder b, int l) {
if (!recursion_guard_(b, l, "fpat")) return false;
boolean r;
Marker m = enter_section_(b);
r = fpat_0(b, l + 1);
if (!r) r = consumeToken(b, DOUBLEPERIOD);
exit_section_(b, m, null, r);
return r;
}
// qvar ['=' pat]
private static boolean fpat_0(PsiBuilder b, int l) {
if (!recursion_guard_(b, l, "fpat_0")) return false;
boolean r, p;
Marker m = enter_section_(b, l, _NONE_);
r = qvar(b, l + 1);
p = r; // pin = 1
r = r && fpat_0_1(b, l + 1);
exit_section_(b, l, m, r, p, null);
return r || p;
}
// ['=' pat]
private static boolean fpat_0_1(PsiBuilder b, int l) {
if (!recursion_guard_(b, l, "fpat_0_1")) return false;
fpat_0_1_0(b, l + 1);
return true;
}
// '=' pat
private static boolean fpat_0_1_0(PsiBuilder b, int l) {
if (!recursion_guard_(b, l, "fpat_0_1_0")) return false;
boolean r, p;
Marker m = enter_section_(b, l, _NONE_);
r = consumeToken(b, EQUALS);
p = r; // pin = 1
r = r && pat(b, l + 1);
exit_section_(b, l, m, r, p, null);
return r || p;
}
/* ********************************************************** */
// fatype ["->" ftype]
// | "()"
static boolean ftype(PsiBuilder b, int l) {
if (!recursion_guard_(b, l, "ftype")) return false;
boolean r;
Marker m = enter_section_(b);
r = ftype_0(b, l + 1);
if (!r) r = consumeToken(b, "()");
exit_section_(b, m, null, r);
return r;
}
// fatype ["->" ftype]
private static boolean ftype_0(PsiBuilder b, int l) {
if (!recursion_guard_(b, l, "ftype_0")) return false;
boolean r;
Marker m = enter_section_(b);
r = fatype(b, l + 1);
r = r && ftype_0_1(b, l + 1);
exit_section_(b, m, null, r);
return r;
}
// ["->" ftype]
private static boolean ftype_0_1(PsiBuilder b, int l) {
if (!recursion_guard_(b, l, "ftype_0_1")) return false;
ftype_0_1_0(b, l + 1);
return true;
}
// "->" ftype
private static boolean ftype_0_1_0(PsiBuilder b, int l) {
if (!recursion_guard_(b, l, "ftype_0_1_0")) return false;
boolean r;
Marker m = enter_section_(b);
r = consumeToken(b, RIGHTARROW);
r = r && ftype(b, l + 1);
exit_section_(b, m, null, r);
return r;
}
/* ********************************************************** */
// tyvar+ "->" tyvar+
static boolean fundep(PsiBuilder b, int l) {
if (!recursion_guard_(b, l, "fundep")) return false;
boolean r, p;
Marker m = enter_section_(b, l, _NONE_);
r = fundep_0(b, l + 1);
r = r && consumeToken(b, RIGHTARROW);
p = r; // pin = 2
r = r && fundep_2(b, l + 1);
exit_section_(b, l, m, r, p, null);
return r || p;
}
// tyvar+
private static boolean fundep_0(PsiBuilder b, int l) {
if (!recursion_guard_(b, l, "fundep_0")) return false;
boolean r;
Marker m = enter_section_(b);
r = tyvar(b, l + 1);
int c = current_position_(b);
while (r) {
if (!tyvar(b, l + 1)) break;
if (!empty_element_parsed_guard_(b, "fundep_0", c)) break;
c = current_position_(b);
}
exit_section_(b, m, null, r);
return r;
}
// tyvar+
private static boolean fundep_2(PsiBuilder b, int l) {
if (!recursion_guard_(b, l, "fundep_2")) return false;
boolean r;
Marker m = enter_section_(b);
r = tyvar(b, l + 1);
int c = current_position_(b);
while (r) {
if (!tyvar(b, l + 1)) break;
if (!empty_element_parsed_guard_(b, "fundep_2", c)) break;
c = current_position_(b);
}
exit_section_(b, m, null, r);
return r;
}
/* ********************************************************** */
// '|' <<sequence fundep>>
static boolean fundeps(PsiBuilder b, int l) {
if (!recursion_guard_(b, l, "fundeps")) return false;
if (!nextTokenIs(b, PIPE)) return false;
boolean r, p;
Marker m = enter_section_(b, l, _NONE_);
r = consumeToken(b, PIPE);
p = r; // pin = 1
r = r && sequence(b, l + 1, fundep_parser_);
exit_section_(b, l, m, r, p, null);
return r || p;
}
/* ********************************************************** */
// (var |'(' funlhs ')') apat+
// | pat varop pat
static boolean funlhs(PsiBuilder b, int l) {
if (!recursion_guard_(b, l, "funlhs")) return false;
boolean r;
Marker m = enter_section_(b);
r = funlhs_0(b, l + 1);
if (!r) r = funlhs_1(b, l + 1);
exit_section_(b, m, null, r);
return r;
}
// (var |'(' funlhs ')') apat+
private static boolean funlhs_0(PsiBuilder b, int l) {
if (!recursion_guard_(b, l, "funlhs_0")) return false;
boolean r;
Marker m = enter_section_(b);
r = funlhs_0_0(b, l + 1);
r = r && funlhs_0_1(b, l + 1);
exit_section_(b, m, null, r);
return r;
}
// var |'(' funlhs ')'
private static boolean funlhs_0_0(PsiBuilder b, int l) {
if (!recursion_guard_(b, l, "funlhs_0_0")) return false;
boolean r;
Marker m = enter_section_(b);
r = var(b, l + 1);
if (!r) r = funlhs_0_0_1(b, l + 1);
exit_section_(b, m, null, r);
return r;
}
// '(' funlhs ')'
private static boolean funlhs_0_0_1(PsiBuilder b, int l) {
if (!recursion_guard_(b, l, "funlhs_0_0_1")) return false;
boolean r;
Marker m = enter_section_(b);
r = consumeToken(b, LPAREN);
r = r && funlhs(b, l + 1);
r = r && consumeToken(b, RPAREN);
exit_section_(b, m, null, r);
return r;
}
// apat+
private static boolean funlhs_0_1(PsiBuilder b, int l) {
if (!recursion_guard_(b, l, "funlhs_0_1")) return false;
boolean r;
Marker m = enter_section_(b);
r = apat(b, l + 1);
int c = current_position_(b);
while (r) {
if (!apat(b, l + 1)) break;
if (!empty_element_parsed_guard_(b, "funlhs_0_1", c)) break;
c = current_position_(b);
}
exit_section_(b, m, null, r);
return r;
}
// pat varop pat
private static boolean funlhs_1(PsiBuilder b, int l) {
if (!recursion_guard_(b, l, "funlhs_1")) return false;
boolean r;
Marker m = enter_section_(b);
r = pat(b, l + 1);
r = r && varop(b, l + 1);
r = r && pat(b, l + 1);
exit_section_(b, m, null, r);
return r;
}
/* ********************************************************** */
// (funlhs | pat) rhs
public static boolean funorpatdecl(PsiBuilder b, int l) {
if (!recursion_guard_(b, l, "funorpatdecl")) return false;
boolean r;
Marker m = enter_section_(b, l, _NONE_, FUNORPATDECL, "<funorpatdecl>");
r = funorpatdecl_0(b, l + 1);
r = r && rhs(b, l + 1);
exit_section_(b, l, m, r, false, null);
return r;
}
// funlhs | pat
private static boolean funorpatdecl_0(PsiBuilder b, int l) {
if (!recursion_guard_(b, l, "funorpatdecl_0")) return false;
boolean r;
Marker m = enter_section_(b);
r = funlhs(b, l + 1);
if (!r) r = pat(b, l + 1);
exit_section_(b, m, null, r);
return r;
}
/* ********************************************************** */
// <<sequence con>> "::" ctype
// | oqtycon '{' fielddecls '}' "::" ctype
static boolean gadtconstr(PsiBuilder b, int l) {
if (!recursion_guard_(b, l, "gadtconstr")) return false;
if (!nextTokenIs(b, "", LPAREN, CONIDREGEXP)) return false;
boolean r;
Marker m = enter_section_(b);
r = gadtconstr_0(b, l + 1);
if (!r) r = gadtconstr_1(b, l + 1);
exit_section_(b, m, null, r);
return r;
}
// <<sequence con>> "::" ctype
private static boolean gadtconstr_0(PsiBuilder b, int l) {
if (!recursion_guard_(b, l, "gadtconstr_0")) return false;
boolean r;
Marker m = enter_section_(b);
r = sequence(b, l + 1, con_parser_);
r = r && consumeToken(b, DOUBLECOLON);
r = r && ctype(b, l + 1);
exit_section_(b, m, null, r);
return r;
}
// oqtycon '{' fielddecls '}' "::" ctype
private static boolean gadtconstr_1(PsiBuilder b, int l) {
if (!recursion_guard_(b, l, "gadtconstr_1")) return false;
boolean r;
Marker m = enter_section_(b);
r = oqtycon(b, l + 1);
r = r && consumeToken(b, LBRACE);
r = r && fielddecls(b, l + 1);
r = r && consumeToken(b, RBRACE);
r = r && consumeToken(b, DOUBLECOLON);
r = r && ctype(b, l + 1);
exit_section_(b, m, null, r);
return r;
}
/* ********************************************************** */
// open [gadtconstrs1] close
static boolean gadtconstrs(PsiBuilder b, int l) {
if (!recursion_guard_(b, l, "gadtconstrs")) return false;
if (!nextTokenIs(b, "", LBRACE, WHITESPACELBRACETOK)) return false;
boolean r;
Marker m = enter_section_(b);
r = open(b, l + 1);
r = r && gadtconstrs_1(b, l + 1);
r = r && close(b, l + 1);
exit_section_(b, m, null, r);
return r;
}
// [gadtconstrs1]
private static boolean gadtconstrs_1(PsiBuilder b, int l) {
if (!recursion_guard_(b, l, "gadtconstrs_1")) return false;
gadtconstrs1(b, l + 1);
return true;
}
/* ********************************************************** */
// gadtconstr semi gadtconstrs1
// | gadtconstr
static boolean gadtconstrs1(PsiBuilder b, int l) {
if (!recursion_guard_(b, l, "gadtconstrs1")) return false;
if (!nextTokenIs(b, "", LPAREN, CONIDREGEXP)) return false;
boolean r;
Marker m = enter_section_(b);
r = gadtconstrs1_0(b, l + 1);
if (!r) r = gadtconstr(b, l + 1);
exit_section_(b, m, null, r);
return r;
}
// gadtconstr semi gadtconstrs1
private static boolean gadtconstrs1_0(PsiBuilder b, int l) {
if (!recursion_guard_(b, l, "gadtconstrs1_0")) return false;
boolean r;
Marker m = enter_section_(b);
r = gadtconstr(b, l + 1);
r = r && semi(b, l + 1);
r = r && gadtconstrs1(b, l + 1);
exit_section_(b, m, null, r);
return r;
}
/* ********************************************************** */
// '[' ']'
// | '(' [commas] ')'
// | qcon
static boolean gcon(PsiBuilder b, int l) {
if (!recursion_guard_(b, l, "gcon")) return false;
boolean r;
Marker m = enter_section_(b);
r = gcon_0(b, l + 1);
if (!r) r = gcon_1(b, l + 1);
if (!r) r = qcon(b, l + 1);
exit_section_(b, m, null, r);
return r;
}
// '[' ']'
private static boolean gcon_0(PsiBuilder b, int l) {
if (!recursion_guard_(b, l, "gcon_0")) return false;
boolean r;
Marker m = enter_section_(b);
r = consumeToken(b, LBRACKET);
r = r && consumeToken(b, RBRACKET);
exit_section_(b, m, null, r);
return r;
}
// '(' [commas] ')'
private static boolean gcon_1(PsiBuilder b, int l) {
if (!recursion_guard_(b, l, "gcon_1")) return false;
boolean r;
Marker m = enter_section_(b);
r = consumeToken(b, LPAREN);
r = r && gcon_1_1(b, l + 1);
r = r && consumeToken(b, RPAREN);
exit_section_(b, m, null, r);
return r;
}
// [commas]
private static boolean gcon_1_1(PsiBuilder b, int l) {
if (!recursion_guard_(b, l, "gcon_1_1")) return false;
commas(b, l + 1);
return true;
}
/* ********************************************************** */
// ':' | qconsym
public static boolean gconsym(PsiBuilder b, int l) {
if (!recursion_guard_(b, l, "gconsym")) return false;
boolean r;
Marker m = enter_section_(b, l, _NONE_, GCONSYM, "<gconsym>");
r = consumeToken(b, COLON);
if (!r) r = qconsym(b, l + 1);
exit_section_(b, l, m, r, false, null);
return r;
}
/* ********************************************************** */
// guards '->' exp [gdpat]
static boolean gdpat(PsiBuilder b, int l) {
if (!recursion_guard_(b, l, "gdpat")) return false;
if (!nextTokenIs(b, PIPE)) return false;
boolean r, p;
Marker m = enter_section_(b, l, _NONE_);
r = guards(b, l + 1);
r = r && consumeToken(b, RIGHTARROW);
p = r; // pin = 2
r = r && report_error_(b, exp(b, l + 1));
r = p && gdpat_3(b, l + 1) && r;
exit_section_(b, l, m, r, p, null);
return r || p;
}
// [gdpat]
private static boolean gdpat_3(PsiBuilder b, int l) {
if (!recursion_guard_(b, l, "gdpat_3")) return false;
gdpat(b, l + 1);
return true;
}
/* ********************************************************** */
// guards '=' exp
static boolean gdrhs(PsiBuilder b, int l) {
if (!recursion_guard_(b, l, "gdrhs")) return false;
if (!nextTokenIs(b, PIPE)) return false;
boolean r, p;
Marker m = enter_section_(b, l, _NONE_);
r = guards(b, l + 1);
r = r && consumeToken(b, EQUALS);
p = r; // pin = 2
r = r && exp(b, l + 1);
exit_section_(b, l, m, r, p, null);
return r || p;
}
/* ********************************************************** */
// gendeclfst
// | fixity [integertoken] (<<sequence op>>)
public static boolean gendecl(PsiBuilder b, int l) {
if (!recursion_guard_(b, l, "gendecl")) return false;
boolean r;
Marker m = enter_section_(b, l, _NONE_, GENDECL, "<gendecl>");
r = gendeclfst(b, l + 1);
if (!r) r = gendecl_1(b, l + 1);
exit_section_(b, l, m, r, false, null);
return r;
}
// fixity [integertoken] (<<sequence op>>)
private static boolean gendecl_1(PsiBuilder b, int l) {
if (!recursion_guard_(b, l, "gendecl_1")) return false;
boolean r, p;
Marker m = enter_section_(b, l, _NONE_);
r = fixity(b, l + 1);
p = r; // pin = 1
r = r && report_error_(b, gendecl_1_1(b, l + 1));
r = p && gendecl_1_2(b, l + 1) && r;
exit_section_(b, l, m, r, p, null);
return r || p;
}
// [integertoken]
private static boolean gendecl_1_1(PsiBuilder b, int l) {
if (!recursion_guard_(b, l, "gendecl_1_1")) return false;
consumeToken(b, INTEGERTOKEN);
return true;
}
// <<sequence op>>
private static boolean gendecl_1_2(PsiBuilder b, int l) {
return sequence(b, l + 1, op_parser_);
}
/* ********************************************************** */
// vars '::' ctype
static boolean gendeclfst(PsiBuilder b, int l) {
if (!recursion_guard_(b, l, "gendeclfst")) return false;
boolean r, p;
Marker m = enter_section_(b, l, _NONE_);
r = vars(b, l + 1);
r = r && consumeToken(b, DOUBLECOLON);
p = r; // pin = 2
r = r && ctype(b, l + 1);
exit_section_(b, l, m, r, p, null);
return r || p;
}
/* ********************************************************** */
// pat '<-' exp
// | "let" decls
// | infixexp
public static boolean guard(PsiBuilder b, int l) {
if (!recursion_guard_(b, l, "guard")) return false;
boolean r;
Marker m = enter_section_(b, l, _NONE_, GUARD, "<guard>");
r = guard_0(b, l + 1);
if (!r) r = guard_1(b, l + 1);
if (!r) r = infixexp(b, l + 1);
exit_section_(b, l, m, r, false, null);
return r;
}
// pat '<-' exp
private static boolean guard_0(PsiBuilder b, int l) {
if (!recursion_guard_(b, l, "guard_0")) return false;
boolean r;
Marker m = enter_section_(b);
r = pat(b, l + 1);
r = r && consumeToken(b, LEFTARROW);
r = r && exp(b, l + 1);
exit_section_(b, m, null, r);
return r;
}
// "let" decls
private static boolean guard_1(PsiBuilder b, int l) {
if (!recursion_guard_(b, l, "guard_1")) return false;
boolean r;
Marker m = enter_section_(b);
r = consumeToken(b, LET);
r = r && decls(b, l + 1);
exit_section_(b, m, null, r);
return r;
}
/* ********************************************************** */
// '|' guard (',' guard)*
static boolean guards(PsiBuilder b, int l) {
if (!recursion_guard_(b, l, "guards")) return false;
if (!nextTokenIs(b, PIPE)) return false;
boolean r, p;
Marker m = enter_section_(b, l, _NONE_);
r = consumeToken(b, PIPE);
p = r; // pin = 1
r = r && report_error_(b, guard(b, l + 1));
r = p && guards_2(b, l + 1) && r;
exit_section_(b, l, m, r, p, null);
return r || p;
}
// (',' guard)*
private static boolean guards_2(PsiBuilder b, int l) {
if (!recursion_guard_(b, l, "guards_2")) return false;
int c = current_position_(b);
while (true) {
if (!guards_2_0(b, l + 1)) break;
if (!empty_element_parsed_guard_(b, "guards_2", c)) break;
c = current_position_(b);
}
return true;
}
// ',' guard
private static boolean guards_2_0(PsiBuilder b, int l) {
if (!recursion_guard_(b, l, "guards_2_0")) return false;
boolean r;
Marker m = enter_section_(b);
r = consumeToken(b, COMMA);
r = r && guard(b, l + 1);
exit_section_(b, m, null, r);
return r;
}
/* ********************************************************** */
// <<indented false>>
static boolean i(PsiBuilder b, int l) {
return indented(b, l + 1, FALSE_parser_);
}
/* ********************************************************** */
// open (alt|exp) (semi alt)* close?
static boolean iAlts(PsiBuilder b, int l) {
if (!recursion_guard_(b, l, "iAlts")) return false;
if (!nextTokenIs(b, "", LBRACE, WHITESPACELBRACETOK)) return false;
boolean r;
Marker m = enter_section_(b);
r = open(b, l + 1);
r = r && iAlts_1(b, l + 1);
r = r && iAlts_2(b, l + 1);
r = r && iAlts_3(b, l + 1);
exit_section_(b, m, null, r);
return r;
}
// alt|exp
private static boolean iAlts_1(PsiBuilder b, int l) {
if (!recursion_guard_(b, l, "iAlts_1")) return false;
boolean r;
Marker m = enter_section_(b);
r = alt(b, l + 1);
if (!r) r = exp(b, l + 1);
exit_section_(b, m, null, r);
return r;
}
// (semi alt)*
private static boolean iAlts_2(PsiBuilder b, int l) {
if (!recursion_guard_(b, l, "iAlts_2")) return false;
int c = current_position_(b);
while (true) {
if (!iAlts_2_0(b, l + 1)) break;
if (!empty_element_parsed_guard_(b, "iAlts_2", c)) break;
c = current_position_(b);
}
return true;
}
// semi alt
private static boolean iAlts_2_0(PsiBuilder b, int l) {
if (!recursion_guard_(b, l, "iAlts_2_0")) return false;
boolean r;
Marker m = enter_section_(b);
r = semi(b, l + 1);
r = r && alt(b, l + 1);
exit_section_(b, m, null, r);
return r;
}
// close?
private static boolean iAlts_3(PsiBuilder b, int l) {
if (!recursion_guard_(b, l, "iAlts_3")) return false;
close(b, l + 1);
return true;
}
/* ********************************************************** */
// itdecl
// | funorpatdecl
public static boolean idecl(PsiBuilder b, int l) {
if (!recursion_guard_(b, l, "idecl")) return false;
boolean r;
Marker m = enter_section_(b, l, _NONE_, IDECL, "<idecl>");
r = itdecl(b, l + 1);
if (!r) r = funorpatdecl(b, l + 1);
exit_section_(b, l, m, r, false, null);
return r;
}
/* ********************************************************** */
// ppragma* idecl ppragma*
static boolean idecl0(PsiBuilder b, int l) {
if (!recursion_guard_(b, l, "idecl0")) return false;
boolean r;
Marker m = enter_section_(b);
r = idecl0_0(b, l + 1);
r = r && idecl(b, l + 1);
r = r && idecl0_2(b, l + 1);
exit_section_(b, m, null, r);
return r;
}
// ppragma*
private static boolean idecl0_0(PsiBuilder b, int l) {
if (!recursion_guard_(b, l, "idecl0_0")) return false;
int c = current_position_(b);
while (true) {
if (!ppragma(b, l + 1)) break;
if (!empty_element_parsed_guard_(b, "idecl0_0", c)) break;
c = current_position_(b);
}
return true;
}
// ppragma*
private static boolean idecl0_2(PsiBuilder b, int l) {
if (!recursion_guard_(b, l, "idecl0_2")) return false;
int c = current_position_(b);
while (true) {
if (!ppragma(b, l + 1)) break;
if (!empty_element_parsed_guard_(b, "idecl0_2", c)) break;
c = current_position_(b);
}
return true;
}
/* ********************************************************** */
// ppragma* open [idecls1] close
static boolean idecls(PsiBuilder b, int l) {
if (!recursion_guard_(b, l, "idecls")) return false;
boolean r, p;
Marker m = enter_section_(b, l, _NONE_);
r = idecls_0(b, l + 1);
r = r && open(b, l + 1);
p = r; // pin = 2
r = r && report_error_(b, idecls_2(b, l + 1));
r = p && close(b, l + 1) && r;
exit_section_(b, l, m, r, p, null);
return r || p;
}
// ppragma*
private static boolean idecls_0(PsiBuilder b, int l) {
if (!recursion_guard_(b, l, "idecls_0")) return false;
int c = current_position_(b);
while (true) {
if (!ppragma(b, l + 1)) break;
if (!empty_element_parsed_guard_(b, "idecls_0", c)) break;
c = current_position_(b);
}
return true;
}
// [idecls1]
private static boolean idecls_2(PsiBuilder b, int l) {
if (!recursion_guard_(b, l, "idecls_2")) return false;
idecls1(b, l + 1);
return true;
}
/* ********************************************************** */
// [gendecl semi] idecl0 [semi [gendecl semi] idecls1]
static boolean idecls1(PsiBuilder b, int l) {
if (!recursion_guard_(b, l, "idecls1")) return false;
boolean r;
Marker m = enter_section_(b);
r = idecls1_0(b, l + 1);
r = r && idecl0(b, l + 1);
r = r && idecls1_2(b, l + 1);
exit_section_(b, m, null, r);
return r;
}
// [gendecl semi]
private static boolean idecls1_0(PsiBuilder b, int l) {
if (!recursion_guard_(b, l, "idecls1_0")) return false;
idecls1_0_0(b, l + 1);
return true;
}
// gendecl semi
private static boolean idecls1_0_0(PsiBuilder b, int l) {
if (!recursion_guard_(b, l, "idecls1_0_0")) return false;
boolean r;
Marker m = enter_section_(b);
r = gendecl(b, l + 1);
r = r && semi(b, l + 1);
exit_section_(b, m, null, r);
return r;
}
// [semi [gendecl semi] idecls1]
private static boolean idecls1_2(PsiBuilder b, int l) {
if (!recursion_guard_(b, l, "idecls1_2")) return false;
idecls1_2_0(b, l + 1);
return true;
}
// semi [gendecl semi] idecls1
private static boolean idecls1_2_0(PsiBuilder b, int l) {
if (!recursion_guard_(b, l, "idecls1_2_0")) return false;
boolean r;
Marker m = enter_section_(b);
r = semi(b, l + 1);
r = r && idecls1_2_0_1(b, l + 1);
r = r && idecls1(b, l + 1);
exit_section_(b, m, null, r);
return r;
}
// [gendecl semi]
private static boolean idecls1_2_0_1(PsiBuilder b, int l) {
if (!recursion_guard_(b, l, "idecls1_2_0_1")) return false;
idecls1_2_0_1_0(b, l + 1);
return true;
}
// gendecl semi
private static boolean idecls1_2_0_1_0(PsiBuilder b, int l) {
if (!recursion_guard_(b, l, "idecls1_2_0_1_0")) return false;
boolean r;
Marker m = enter_section_(b);
r = gendecl(b, l + 1);
r = r && semi(b, l + 1);
exit_section_(b, m, null, r);
return r;
}
/* ********************************************************** */
// "import" ["qualified"] qconid ["as" qconid] [impspec]
public static boolean impdecl(PsiBuilder b, int l) {
if (!recursion_guard_(b, l, "impdecl")) return false;
if (!nextTokenIs(b, IMPORT)) return false;
boolean r, p;
Marker m = enter_section_(b, l, _NONE_, IMPDECL, null);
r = consumeToken(b, IMPORT);
p = r; // pin = 1
r = r && report_error_(b, impdecl_1(b, l + 1));
r = p && report_error_(b, qconid(b, l + 1)) && r;
r = p && report_error_(b, impdecl_3(b, l + 1)) && r;
r = p && impdecl_4(b, l + 1) && r;
exit_section_(b, l, m, r, p, null);
return r || p;
}
// ["qualified"]
private static boolean impdecl_1(PsiBuilder b, int l) {
if (!recursion_guard_(b, l, "impdecl_1")) return false;
consumeToken(b, QUALIFIED);
return true;
}
// ["as" qconid]
private static boolean impdecl_3(PsiBuilder b, int l) {
if (!recursion_guard_(b, l, "impdecl_3")) return false;
impdecl_3_0(b, l + 1);
return true;
}
// "as" qconid
private static boolean impdecl_3_0(PsiBuilder b, int l) {
if (!recursion_guard_(b, l, "impdecl_3_0")) return false;
boolean r, p;
Marker m = enter_section_(b, l, _NONE_);
r = consumeToken(b, AS);
p = r; // pin = 1
r = r && qconid(b, l + 1);
exit_section_(b, l, m, r, p, null);
return r || p;
}
// [impspec]
private static boolean impdecl_4(PsiBuilder b, int l) {
if (!recursion_guard_(b, l, "impdecl_4")) return false;
impspec(b, l + 1);
return true;
}
/* ********************************************************** */
// impdecl [semi impdecls]
static boolean impdecls(PsiBuilder b, int l) {
if (!recursion_guard_(b, l, "impdecls")) return false;
if (!nextTokenIs(b, IMPORT)) return false;
boolean r, p;
Marker m = enter_section_(b, l, _NONE_);
r = impdecl(b, l + 1);
p = r; // pin = 1
r = r && impdecls_1(b, l + 1);
exit_section_(b, l, m, r, p, null);
return r || p;
}
// [semi impdecls]
private static boolean impdecls_1(PsiBuilder b, int l) {
if (!recursion_guard_(b, l, "impdecls_1")) return false;
impdecls_1_0(b, l + 1);
return true;
}
// semi impdecls
private static boolean impdecls_1_0(PsiBuilder b, int l) {
if (!recursion_guard_(b, l, "impdecls_1_0")) return false;
boolean r;
Marker m = enter_section_(b);
r = semi(b, l + 1);
r = r && impdecls(b, l + 1);
exit_section_(b, m, null, r);
return r;
}
/* ********************************************************** */
// "()"
public static boolean impempty(PsiBuilder b, int l) {
if (!recursion_guard_(b, l, "impempty")) return false;
boolean r;
Marker m = enter_section_(b, l, _NONE_, IMPEMPTY, "<impempty>");
r = consumeToken(b, "()");
exit_section_(b, l, m, r, false, null);
return r;
}
/* ********************************************************** */
// '\"' "wrapper" '\"'
// | '\"' "dynamic" '\"'
// | pstringtoken
static boolean impent(PsiBuilder b, int l) {
if (!recursion_guard_(b, l, "impent")) return false;
boolean r;
Marker m = enter_section_(b);
r = impent_0(b, l + 1);
if (!r) r = impent_1(b, l + 1);
if (!r) r = pstringtoken(b, l + 1);
exit_section_(b, m, null, r);
return r;
}
// '\"' "wrapper" '\"'
private static boolean impent_0(PsiBuilder b, int l) {
if (!recursion_guard_(b, l, "impent_0")) return false;
boolean r;
Marker m = enter_section_(b);
r = consumeToken(b, "\\\"");
r = r && consumeToken(b, "wrapper");
r = r && consumeToken(b, "\\\"");
exit_section_(b, m, null, r);
return r;
}
// '\"' "dynamic" '\"'
private static boolean impent_1(PsiBuilder b, int l) {
if (!recursion_guard_(b, l, "impent_1")) return false;
boolean r;
Marker m = enter_section_(b);
r = consumeToken(b, "\\\"");
r = r && consumeToken(b, "dynamic");
r = r && consumeToken(b, "\\\"");
exit_section_(b, m, null, r);
return r;
}
/* ********************************************************** */
// "import" callconv [safety] impent
static boolean importdecl(PsiBuilder b, int l) {
if (!recursion_guard_(b, l, "importdecl")) return false;
if (!nextTokenIs(b, IMPORT)) return false;
boolean r, p;
Marker m = enter_section_(b, l, _NONE_);
r = consumeToken(b, IMPORT);
p = r; // pin = 1
r = r && report_error_(b, callconv(b, l + 1));
r = p && report_error_(b, importdecl_2(b, l + 1)) && r;
r = p && impent(b, l + 1) && r;
exit_section_(b, l, m, r, p, null);
return r || p;
}
// [safety]
private static boolean importdecl_2(PsiBuilder b, int l) {
if (!recursion_guard_(b, l, "importdecl_2")) return false;
safety(b, l + 1);
return true;
}
/* ********************************************************** */
// var
// // Really (tycon|tycls), but they are both ::= conid.
// | tycon ['(' (".." | cnames | vars) ')']
public static boolean importt(PsiBuilder b, int l) {
if (!recursion_guard_(b, l, "importt")) return false;
boolean r;
Marker m = enter_section_(b, l, _NONE_, IMPORTT, "<importt>");
r = var(b, l + 1);
if (!r) r = importt_1(b, l + 1);
exit_section_(b, l, m, r, false, null);
return r;
}
// tycon ['(' (".." | cnames | vars) ')']
private static boolean importt_1(PsiBuilder b, int l) {
if (!recursion_guard_(b, l, "importt_1")) return false;
boolean r;
Marker m = enter_section_(b);
r = tycon(b, l + 1);
r = r && importt_1_1(b, l + 1);
exit_section_(b, m, null, r);
return r;
}
// ['(' (".." | cnames | vars) ')']
private static boolean importt_1_1(PsiBuilder b, int l) {
if (!recursion_guard_(b, l, "importt_1_1")) return false;
importt_1_1_0(b, l + 1);
return true;
}
// '(' (".." | cnames | vars) ')'
private static boolean importt_1_1_0(PsiBuilder b, int l) {
if (!recursion_guard_(b, l, "importt_1_1_0")) return false;
boolean r;
Marker m = enter_section_(b);
r = consumeToken(b, LPAREN);
r = r && importt_1_1_0_1(b, l + 1);
r = r && consumeToken(b, RPAREN);
exit_section_(b, m, null, r);
return r;
}
// ".." | cnames | vars
private static boolean importt_1_1_0_1(PsiBuilder b, int l) {
if (!recursion_guard_(b, l, "importt_1_1_0_1")) return false;
boolean r;
Marker m = enter_section_(b);
r = consumeToken(b, DOUBLEPERIOD);
if (!r) r = cnames(b, l + 1);
if (!r) r = vars(b, l + 1);
exit_section_(b, m, null, r);
return r;
}
/* ********************************************************** */
// [i "hiding"] '(' [<<sequence [importt]>>] ')' | impempty
static boolean impspec(PsiBuilder b, int l) {
if (!recursion_guard_(b, l, "impspec")) return false;
boolean r;
Marker m = enter_section_(b);
r = impspec_0(b, l + 1);
if (!r) r = impempty(b, l + 1);
exit_section_(b, m, null, r);
return r;
}
// [i "hiding"] '(' [<<sequence [importt]>>] ')'
private static boolean impspec_0(PsiBuilder b, int l) {
if (!recursion_guard_(b, l, "impspec_0")) return false;
boolean r, p;
Marker m = enter_section_(b, l, _NONE_);
r = impspec_0_0(b, l + 1);
r = r && consumeToken(b, LPAREN);
p = r; // pin = 2
r = r && report_error_(b, impspec_0_2(b, l + 1));
r = p && consumeToken(b, RPAREN) && r;
exit_section_(b, l, m, r, p, null);
return r || p;
}
// [i "hiding"]
private static boolean impspec_0_0(PsiBuilder b, int l) {
if (!recursion_guard_(b, l, "impspec_0_0")) return false;
impspec_0_0_0(b, l + 1);
return true;
}
// i "hiding"
private static boolean impspec_0_0_0(PsiBuilder b, int l) {
if (!recursion_guard_(b, l, "impspec_0_0_0")) return false;
boolean r;
Marker m = enter_section_(b);
r = i(b, l + 1);
r = r && consumeToken(b, HIDING);
exit_section_(b, m, null, r);
return r;
}
// [<<sequence [importt]>>]
private static boolean impspec_0_2(PsiBuilder b, int l) {
if (!recursion_guard_(b, l, "impspec_0_2")) return false;
sequence(b, l + 1, impspec_0_2_0_0_parser_);
return true;
}
// [importt]
private static boolean impspec_0_2_0_0(PsiBuilder b, int l) {
if (!recursion_guard_(b, l, "impspec_0_2_0_0")) return false;
importt(b, l + 1);
return true;
}
/* ********************************************************** */
// '-'* lexp [qop infixexp]
static boolean infixexp(PsiBuilder b, int l) {
if (!recursion_guard_(b, l, "infixexp")) return false;
boolean r;
Marker m = enter_section_(b);
r = infixexp_0(b, l + 1);
r = r && lexp(b, l + 1);
r = r && infixexp_2(b, l + 1);
exit_section_(b, m, null, r);
return r;
}
// '-'*
private static boolean infixexp_0(PsiBuilder b, int l) {
if (!recursion_guard_(b, l, "infixexp_0")) return false;
int c = current_position_(b);
while (true) {
if (!consumeToken(b, MINUS)) break;
if (!empty_element_parsed_guard_(b, "infixexp_0", c)) break;
c = current_position_(b);
}
return true;
}
// [qop infixexp]
private static boolean infixexp_2(PsiBuilder b, int l) {
if (!recursion_guard_(b, l, "infixexp_2")) return false;
infixexp_2_0(b, l + 1);
return true;
}
// qop infixexp
private static boolean infixexp_2_0(PsiBuilder b, int l) {
if (!recursion_guard_(b, l, "infixexp_2_0")) return false;
boolean r;
Marker m = enter_section_(b);
r = qop(b, l + 1);
r = r && infixexp(b, l + 1);
exit_section_(b, m, null, r);
return r;
}
/* ********************************************************** */
// "instance" ctype ["where" idecls]
public static boolean instancedecl(PsiBuilder b, int l) {
if (!recursion_guard_(b, l, "instancedecl")) return false;
if (!nextTokenIs(b, INSTANCE)) return false;
boolean r, p;
Marker m = enter_section_(b, l, _NONE_, INSTANCEDECL, null);
r = consumeToken(b, INSTANCE);
p = r; // pin = 1
r = r && report_error_(b, ctype(b, l + 1));
r = p && instancedecl_2(b, l + 1) && r;
exit_section_(b, l, m, r, p, null);
return r || p;
}
// ["where" idecls]
private static boolean instancedecl_2(PsiBuilder b, int l) {
if (!recursion_guard_(b, l, "instancedecl_2")) return false;
instancedecl_2_0(b, l + 1);
return true;
}
// "where" idecls
private static boolean instancedecl_2_0(PsiBuilder b, int l) {
if (!recursion_guard_(b, l, "instancedecl_2_0")) return false;
boolean r;
Marker m = enter_section_(b);
r = consumeToken(b, WHERE);
r = r && idecls(b, l + 1);
exit_section_(b, m, null, r);
return r;
}
/* ********************************************************** */
// "type" ctype '=' ctype
// | ("data" | "newtype") ctype ([kindsig] gadtconstrs | ['=' constrs]) [deriving]
static boolean itdecl(PsiBuilder b, int l) {
if (!recursion_guard_(b, l, "itdecl")) return false;
boolean r;
Marker m = enter_section_(b);
r = itdecl_0(b, l + 1);
if (!r) r = itdecl_1(b, l + 1);
exit_section_(b, m, null, r);
return r;
}
// "type" ctype '=' ctype
private static boolean itdecl_0(PsiBuilder b, int l) {
if (!recursion_guard_(b, l, "itdecl_0")) return false;
boolean r;
Marker m = enter_section_(b);
r = consumeToken(b, TYPE);
r = r && ctype(b, l + 1);
r = r && consumeToken(b, EQUALS);
r = r && ctype(b, l + 1);
exit_section_(b, m, null, r);
return r;
}
// ("data" | "newtype") ctype ([kindsig] gadtconstrs | ['=' constrs]) [deriving]
private static boolean itdecl_1(PsiBuilder b, int l) {
if (!recursion_guard_(b, l, "itdecl_1")) return false;
boolean r;
Marker m = enter_section_(b);
r = itdecl_1_0(b, l + 1);
r = r && ctype(b, l + 1);
r = r && itdecl_1_2(b, l + 1);
r = r && itdecl_1_3(b, l + 1);
exit_section_(b, m, null, r);
return r;
}
// "data" | "newtype"
private static boolean itdecl_1_0(PsiBuilder b, int l) {
if (!recursion_guard_(b, l, "itdecl_1_0")) return false;
boolean r;
Marker m = enter_section_(b);
r = consumeToken(b, DATA);
if (!r) r = consumeToken(b, NEWTYPE);
exit_section_(b, m, null, r);
return r;
}
// [kindsig] gadtconstrs | ['=' constrs]
private static boolean itdecl_1_2(PsiBuilder b, int l) {
if (!recursion_guard_(b, l, "itdecl_1_2")) return false;
boolean r;
Marker m = enter_section_(b);
r = itdecl_1_2_0(b, l + 1);
if (!r) r = itdecl_1_2_1(b, l + 1);
exit_section_(b, m, null, r);
return r;
}
// [kindsig] gadtconstrs
private static boolean itdecl_1_2_0(PsiBuilder b, int l) {
if (!recursion_guard_(b, l, "itdecl_1_2_0")) return false;
boolean r;
Marker m = enter_section_(b);
r = itdecl_1_2_0_0(b, l + 1);
r = r && gadtconstrs(b, l + 1);
exit_section_(b, m, null, r);
return r;
}
// [kindsig]
private static boolean itdecl_1_2_0_0(PsiBuilder b, int l) {
if (!recursion_guard_(b, l, "itdecl_1_2_0_0")) return false;
kindsig(b, l + 1);
return true;
}
// ['=' constrs]
private static boolean itdecl_1_2_1(PsiBuilder b, int l) {
if (!recursion_guard_(b, l, "itdecl_1_2_1")) return false;
itdecl_1_2_1_0(b, l + 1);
return true;
}
// '=' constrs
private static boolean itdecl_1_2_1_0(PsiBuilder b, int l) {
if (!recursion_guard_(b, l, "itdecl_1_2_1_0")) return false;
boolean r;
Marker m = enter_section_(b);
r = consumeToken(b, EQUALS);
r = r && constrs(b, l + 1);
exit_section_(b, m, null, r);
return r;
}
// [deriving]
private static boolean itdecl_1_3(PsiBuilder b, int l) {
if (!recursion_guard_(b, l, "itdecl_1_3")) return false;
deriving(b, l + 1);
return true;
}
/* ********************************************************** */
// bkind ['->' kind]
public static boolean kind(PsiBuilder b, int l) {
if (!recursion_guard_(b, l, "kind")) return false;
boolean r;
Marker m = enter_section_(b, l, _NONE_, KIND, "<kind>");
r = bkind(b, l + 1);
r = r && kind_1(b, l + 1);
exit_section_(b, l, m, r, false, null);
return r;
}
// ['->' kind]
private static boolean kind_1(PsiBuilder b, int l) {
if (!recursion_guard_(b, l, "kind_1")) return false;
kind_1_0(b, l + 1);
return true;
}
// '->' kind
private static boolean kind_1_0(PsiBuilder b, int l) {
if (!recursion_guard_(b, l, "kind_1_0")) return false;
boolean r;
Marker m = enter_section_(b);
r = consumeToken(b, RIGHTARROW);
r = r && kind(b, l + 1);
exit_section_(b, m, null, r);
return r;
}
/* ********************************************************** */
// typee (typee | '(' tyvar kindsig ')')* [kindsig]
static boolean kindedvars(PsiBuilder b, int l) {
if (!recursion_guard_(b, l, "kindedvars")) return false;
boolean r;
Marker m = enter_section_(b);
r = typee(b, l + 1);
r = r && kindedvars_1(b, l + 1);
r = r && kindedvars_2(b, l + 1);
exit_section_(b, m, null, r);
return r;
}
// (typee | '(' tyvar kindsig ')')*
private static boolean kindedvars_1(PsiBuilder b, int l) {
if (!recursion_guard_(b, l, "kindedvars_1")) return false;
int c = current_position_(b);
while (true) {
if (!kindedvars_1_0(b, l + 1)) break;
if (!empty_element_parsed_guard_(b, "kindedvars_1", c)) break;
c = current_position_(b);
}
return true;
}
// typee | '(' tyvar kindsig ')'
private static boolean kindedvars_1_0(PsiBuilder b, int l) {
if (!recursion_guard_(b, l, "kindedvars_1_0")) return false;
boolean r;
Marker m = enter_section_(b);
r = typee(b, l + 1);
if (!r) r = kindedvars_1_0_1(b, l + 1);
exit_section_(b, m, null, r);
return r;
}
// '(' tyvar kindsig ')'
private static boolean kindedvars_1_0_1(PsiBuilder b, int l) {
if (!recursion_guard_(b, l, "kindedvars_1_0_1")) return false;
boolean r;
Marker m = enter_section_(b);
r = consumeToken(b, LPAREN);
r = r && tyvar(b, l + 1);
r = r && kindsig(b, l + 1);
r = r && consumeToken(b, RPAREN);
exit_section_(b, m, null, r);
return r;
}
// [kindsig]
private static boolean kindedvars_2(PsiBuilder b, int l) {
if (!recursion_guard_(b, l, "kindedvars_2")) return false;
kindsig(b, l + 1);
return true;
}
/* ********************************************************** */
// "::" kind
static boolean kindsig(PsiBuilder b, int l) {
if (!recursion_guard_(b, l, "kindsig")) return false;
if (!nextTokenIs(b, DOUBLECOLON)) return false;
boolean r, p;
Marker m = enter_section_(b, l, _NONE_);
r = consumeToken(b, DOUBLECOLON);
p = r; // pin = 1
r = r && kind(b, l + 1);
exit_section_(b, l, m, r, p, null);
return r || p;
}
/* ********************************************************** */
// "let" decls ["in" exp]
public static boolean letexp(PsiBuilder b, int l) {
if (!recursion_guard_(b, l, "letexp")) return false;
if (!nextTokenIs(b, LET)) return false;
boolean r;
Marker m = enter_section_(b);
r = consumeToken(b, LET);
r = r && decls(b, l + 1);
r = r && letexp_2(b, l + 1);
exit_section_(b, m, LETEXP, r);
return r;
}
// ["in" exp]
private static boolean letexp_2(PsiBuilder b, int l) {
if (!recursion_guard_(b, l, "letexp_2")) return false;
letexp_2_0(b, l + 1);
return true;
}
// "in" exp
private static boolean letexp_2_0(PsiBuilder b, int l) {
if (!recursion_guard_(b, l, "letexp_2_0")) return false;
boolean r;
Marker m = enter_section_(b);
r = consumeToken(b, IN);
r = r && exp(b, l + 1);
exit_section_(b, m, null, r);
return r;
}
/* ********************************************************** */
// "\\case" altslist
// | '\' (apat | thaexp)+ "->" exp
// | letexp
// | "if" exp [semi] "then" exp [semi] "else" exp
// | "case" exp "of" altslist
// | "do" open stmts close
// | "mdo" open stmts close
// // proc might just be a variable name.
// | "proc" (aexp "->" exp | aexp*)
// | aexp+
static boolean lexp(PsiBuilder b, int l) {
if (!recursion_guard_(b, l, "lexp")) return false;
boolean r;
Marker m = enter_section_(b);
r = lexp_0(b, l + 1);
if (!r) r = lexp_1(b, l + 1);
if (!r) r = letexp(b, l + 1);
if (!r) r = lexp_3(b, l + 1);
if (!r) r = lexp_4(b, l + 1);
if (!r) r = lexp_5(b, l + 1);
if (!r) r = lexp_6(b, l + 1);
if (!r) r = lexp_7(b, l + 1);
if (!r) r = lexp_8(b, l + 1);
exit_section_(b, m, null, r);
return r;
}
// "\\case" altslist
private static boolean lexp_0(PsiBuilder b, int l) {
if (!recursion_guard_(b, l, "lexp_0")) return false;
boolean r;
Marker m = enter_section_(b);
r = consumeToken(b, "\\case");
r = r && altslist(b, l + 1);
exit_section_(b, m, null, r);
return r;
}
// '\' (apat | thaexp)+ "->" exp
private static boolean lexp_1(PsiBuilder b, int l) {
if (!recursion_guard_(b, l, "lexp_1")) return false;
boolean r, p;
Marker m = enter_section_(b, l, _NONE_);
r = consumeToken(b, BACKSLASH);
r = r && lexp_1_1(b, l + 1);
p = r; // pin = 2
r = r && report_error_(b, consumeToken(b, RIGHTARROW));
r = p && exp(b, l + 1) && r;
exit_section_(b, l, m, r, p, null);
return r || p;
}
// (apat | thaexp)+
private static boolean lexp_1_1(PsiBuilder b, int l) {
if (!recursion_guard_(b, l, "lexp_1_1")) return false;
boolean r;
Marker m = enter_section_(b);
r = lexp_1_1_0(b, l + 1);
int c = current_position_(b);
while (r) {
if (!lexp_1_1_0(b, l + 1)) break;
if (!empty_element_parsed_guard_(b, "lexp_1_1", c)) break;
c = current_position_(b);
}
exit_section_(b, m, null, r);
return r;
}
// apat | thaexp
private static boolean lexp_1_1_0(PsiBuilder b, int l) {
if (!recursion_guard_(b, l, "lexp_1_1_0")) return false;
boolean r;
Marker m = enter_section_(b);
r = apat(b, l + 1);
if (!r) r = thaexp(b, l + 1);
exit_section_(b, m, null, r);
return r;
}
// "if" exp [semi] "then" exp [semi] "else" exp
private static boolean lexp_3(PsiBuilder b, int l) {
if (!recursion_guard_(b, l, "lexp_3")) return false;
boolean r, p;
Marker m = enter_section_(b, l, _NONE_);
r = consumeToken(b, IF);
r = r && exp(b, l + 1);
p = r; // pin = 2
r = r && report_error_(b, lexp_3_2(b, l + 1));
r = p && report_error_(b, consumeToken(b, THEN)) && r;
r = p && report_error_(b, exp(b, l + 1)) && r;
r = p && report_error_(b, lexp_3_5(b, l + 1)) && r;
r = p && report_error_(b, consumeToken(b, ELSE)) && r;
r = p && exp(b, l + 1) && r;
exit_section_(b, l, m, r, p, null);
return r || p;
}
// [semi]
private static boolean lexp_3_2(PsiBuilder b, int l) {
if (!recursion_guard_(b, l, "lexp_3_2")) return false;
semi(b, l + 1);
return true;
}
// [semi]
private static boolean lexp_3_5(PsiBuilder b, int l) {
if (!recursion_guard_(b, l, "lexp_3_5")) return false;
semi(b, l + 1);
return true;
}
// "case" exp "of" altslist
private static boolean lexp_4(PsiBuilder b, int l) {
if (!recursion_guard_(b, l, "lexp_4")) return false;
boolean r, p;
Marker m = enter_section_(b, l, _NONE_);
r = consumeToken(b, CASE);
r = r && exp(b, l + 1);
p = r; // pin = 2
r = r && report_error_(b, consumeToken(b, OF));
r = p && altslist(b, l + 1) && r;
exit_section_(b, l, m, r, p, null);
return r || p;
}
// "do" open stmts close
private static boolean lexp_5(PsiBuilder b, int l) {
if (!recursion_guard_(b, l, "lexp_5")) return false;
boolean r, p;
Marker m = enter_section_(b, l, _NONE_);
r = consumeToken(b, DO);
r = r && open(b, l + 1);
p = r; // pin = 2
r = r && report_error_(b, stmts(b, l + 1));
r = p && close(b, l + 1) && r;
exit_section_(b, l, m, r, p, null);
return r || p;
}
// "mdo" open stmts close
private static boolean lexp_6(PsiBuilder b, int l) {
if (!recursion_guard_(b, l, "lexp_6")) return false;
boolean r, p;
Marker m = enter_section_(b, l, _NONE_);
r = consumeToken(b, MDOTOK);
r = r && open(b, l + 1);
p = r; // pin = 2
r = r && report_error_(b, stmts(b, l + 1));
r = p && close(b, l + 1) && r;
exit_section_(b, l, m, r, p, null);
return r || p;
}
// "proc" (aexp "->" exp | aexp*)
private static boolean lexp_7(PsiBuilder b, int l) {
if (!recursion_guard_(b, l, "lexp_7")) return false;
boolean r;
Marker m = enter_section_(b);
r = consumeToken(b, "proc");
r = r && lexp_7_1(b, l + 1);
exit_section_(b, m, null, r);
return r;
}
// aexp "->" exp | aexp*
private static boolean lexp_7_1(PsiBuilder b, int l) {
if (!recursion_guard_(b, l, "lexp_7_1")) return false;
boolean r;
Marker m = enter_section_(b);
r = lexp_7_1_0(b, l + 1);
if (!r) r = lexp_7_1_1(b, l + 1);
exit_section_(b, m, null, r);
return r;
}
// aexp "->" exp
private static boolean lexp_7_1_0(PsiBuilder b, int l) {
if (!recursion_guard_(b, l, "lexp_7_1_0")) return false;
boolean r, p;
Marker m = enter_section_(b, l, _NONE_);
r = aexp(b, l + 1);
r = r && consumeToken(b, RIGHTARROW);
p = r; // pin = 2
r = r && exp(b, l + 1);
exit_section_(b, l, m, r, p, null);
return r || p;
}
// aexp*
private static boolean lexp_7_1_1(PsiBuilder b, int l) {
if (!recursion_guard_(b, l, "lexp_7_1_1")) return false;
int c = current_position_(b);
while (true) {
if (!aexp(b, l + 1)) break;
if (!empty_element_parsed_guard_(b, "lexp_7_1_1", c)) break;
c = current_position_(b);
}
return true;
}
// aexp+
private static boolean lexp_8(PsiBuilder b, int l) {
if (!recursion_guard_(b, l, "lexp_8")) return false;
boolean r;
Marker m = enter_section_(b);
r = aexp(b, l + 1);
int c = current_position_(b);
while (r) {
if (!aexp(b, l + 1)) break;
if (!empty_element_parsed_guard_(b, "lexp_8", c)) break;
c = current_position_(b);
}
exit_section_(b, m, null, r);
return r;
}
/* ********************************************************** */
// '[' exp [listlike1] ']'
public static boolean listlike(PsiBuilder b, int l) {
if (!recursion_guard_(b, l, "listlike")) return false;
if (!nextTokenIs(b, LBRACKET)) return false;
boolean r;
Marker m = enter_section_(b);
r = consumeToken(b, LBRACKET);
r = r && exp(b, l + 1);
r = r && listlike_2(b, l + 1);
r = r && consumeToken(b, RBRACKET);
exit_section_(b, m, LISTLIKE, r);
return r;
}
// [listlike1]
private static boolean listlike_2(PsiBuilder b, int l) {
if (!recursion_guard_(b, l, "listlike_2")) return false;
listlike1(b, l + 1);
return true;
}
/* ********************************************************** */
// ('|' (squal ',')* squal)+
// | [',' exp] '..' [exp]
// | (',' exp)+
static boolean listlike1(PsiBuilder b, int l) {
if (!recursion_guard_(b, l, "listlike1")) return false;
boolean r;
Marker m = enter_section_(b);
r = listlike1_0(b, l + 1);
if (!r) r = listlike1_1(b, l + 1);
if (!r) r = listlike1_2(b, l + 1);
exit_section_(b, m, null, r);
return r;
}
// ('|' (squal ',')* squal)+
private static boolean listlike1_0(PsiBuilder b, int l) {
if (!recursion_guard_(b, l, "listlike1_0")) return false;
boolean r;
Marker m = enter_section_(b);
r = listlike1_0_0(b, l + 1);
int c = current_position_(b);
while (r) {
if (!listlike1_0_0(b, l + 1)) break;
if (!empty_element_parsed_guard_(b, "listlike1_0", c)) break;
c = current_position_(b);
}
exit_section_(b, m, null, r);
return r;
}
// '|' (squal ',')* squal
private static boolean listlike1_0_0(PsiBuilder b, int l) {
if (!recursion_guard_(b, l, "listlike1_0_0")) return false;
boolean r;
Marker m = enter_section_(b);
r = consumeToken(b, PIPE);
r = r && listlike1_0_0_1(b, l + 1);
r = r && squal(b, l + 1);
exit_section_(b, m, null, r);
return r;
}
// (squal ',')*
private static boolean listlike1_0_0_1(PsiBuilder b, int l) {
if (!recursion_guard_(b, l, "listlike1_0_0_1")) return false;
int c = current_position_(b);
while (true) {
if (!listlike1_0_0_1_0(b, l + 1)) break;
if (!empty_element_parsed_guard_(b, "listlike1_0_0_1", c)) break;
c = current_position_(b);
}
return true;
}
// squal ','
private static boolean listlike1_0_0_1_0(PsiBuilder b, int l) {
if (!recursion_guard_(b, l, "listlike1_0_0_1_0")) return false;
boolean r;
Marker m = enter_section_(b);
r = squal(b, l + 1);
r = r && consumeToken(b, COMMA);
exit_section_(b, m, null, r);
return r;
}
// [',' exp] '..' [exp]
private static boolean listlike1_1(PsiBuilder b, int l) {
if (!recursion_guard_(b, l, "listlike1_1")) return false;
boolean r;
Marker m = enter_section_(b);
r = listlike1_1_0(b, l + 1);
r = r && consumeToken(b, DOUBLEPERIOD);
r = r && listlike1_1_2(b, l + 1);
exit_section_(b, m, null, r);
return r;
}
// [',' exp]
private static boolean listlike1_1_0(PsiBuilder b, int l) {
if (!recursion_guard_(b, l, "listlike1_1_0")) return false;
listlike1_1_0_0(b, l + 1);
return true;
}
// ',' exp
private static boolean listlike1_1_0_0(PsiBuilder b, int l) {
if (!recursion_guard_(b, l, "listlike1_1_0_0")) return false;
boolean r;
Marker m = enter_section_(b);
r = consumeToken(b, COMMA);
r = r && exp(b, l + 1);
exit_section_(b, m, null, r);
return r;
}
// [exp]
private static boolean listlike1_1_2(PsiBuilder b, int l) {
if (!recursion_guard_(b, l, "listlike1_1_2")) return false;
exp(b, l + 1);
return true;
}
// (',' exp)+
private static boolean listlike1_2(PsiBuilder b, int l) {
if (!recursion_guard_(b, l, "listlike1_2")) return false;
boolean r;
Marker m = enter_section_(b);
r = listlike1_2_0(b, l + 1);
int c = current_position_(b);
while (r) {
if (!listlike1_2_0(b, l + 1)) break;
if (!empty_element_parsed_guard_(b, "listlike1_2", c)) break;
c = current_position_(b);
}
exit_section_(b, m, null, r);
return r;
}
// ',' exp
private static boolean listlike1_2_0(PsiBuilder b, int l) {
if (!recursion_guard_(b, l, "listlike1_2_0")) return false;
boolean r;
Marker m = enter_section_(b);
r = consumeToken(b, COMMA);
r = r && exp(b, l + 1);
exit_section_(b, m, null, r);
return r;
}
/* ********************************************************** */
// floattoken | integertoken | chartoken | pstringtoken ['#']
static boolean literal(PsiBuilder b, int l) {
if (!recursion_guard_(b, l, "literal")) return false;
boolean r;
Marker m = enter_section_(b);
r = consumeToken(b, FLOATTOKEN);
if (!r) r = consumeToken(b, INTEGERTOKEN);
if (!r) r = consumeToken(b, CHARTOKEN);
if (!r) r = literal_3(b, l + 1);
exit_section_(b, m, null, r);
return r;
}
// pstringtoken ['#']
private static boolean literal_3(PsiBuilder b, int l) {
if (!recursion_guard_(b, l, "literal_3")) return false;
boolean r;
Marker m = enter_section_(b);
r = pstringtoken(b, l + 1);
r = r && literal_3_1(b, l + 1);
exit_section_(b, m, null, r);
return r;
}
// ['#']
private static boolean literal_3_1(PsiBuilder b, int l) {
if (!recursion_guard_(b, l, "literal_3_1")) return false;
consumeToken(b, HASH);
return true;
}
/* ********************************************************** */
// '-' (integertoken|floattoken)
// | gcon apat+
// | apat
static boolean lpat(PsiBuilder b, int l) {
if (!recursion_guard_(b, l, "lpat")) return false;
boolean r;
Marker m = enter_section_(b);
r = lpat_0(b, l + 1);
if (!r) r = lpat_1(b, l + 1);
if (!r) r = apat(b, l + 1);
exit_section_(b, m, null, r);
return r;
}
// '-' (integertoken|floattoken)
private static boolean lpat_0(PsiBuilder b, int l) {
if (!recursion_guard_(b, l, "lpat_0")) return false;
boolean r;
Marker m = enter_section_(b);
r = consumeToken(b, MINUS);
r = r && lpat_0_1(b, l + 1);
exit_section_(b, m, null, r);
return r;
}
// integertoken|floattoken
private static boolean lpat_0_1(PsiBuilder b, int l) {
if (!recursion_guard_(b, l, "lpat_0_1")) return false;
boolean r;
Marker m = enter_section_(b);
r = consumeToken(b, INTEGERTOKEN);
if (!r) r = consumeToken(b, FLOATTOKEN);
exit_section_(b, m, null, r);
return r;
}
// gcon apat+
private static boolean lpat_1(PsiBuilder b, int l) {
if (!recursion_guard_(b, l, "lpat_1")) return false;
boolean r;
Marker m = enter_section_(b);
r = gcon(b, l + 1);
r = r && lpat_1_1(b, l + 1);
exit_section_(b, m, null, r);
return r;
}
// apat+
private static boolean lpat_1_1(PsiBuilder b, int l) {
if (!recursion_guard_(b, l, "lpat_1_1")) return false;
boolean r;
Marker m = enter_section_(b);
r = apat(b, l + 1);
int c = current_position_(b);
while (r) {
if (!apat(b, l + 1)) break;
if (!empty_element_parsed_guard_(b, "lpat_1_1", c)) break;
c = current_position_(b);
}
exit_section_(b, m, null, r);
return r;
}
/* ********************************************************** */
// shebang? ppragma* [moduledecl] [body]
static boolean module(PsiBuilder b, int l) {
if (!recursion_guard_(b, l, "module")) return false;
boolean r;
Marker m = enter_section_(b);
r = module_0(b, l + 1);
r = r && module_1(b, l + 1);
r = r && module_2(b, l + 1);
r = r && module_3(b, l + 1);
exit_section_(b, m, null, r);
return r;
}
// shebang?
private static boolean module_0(PsiBuilder b, int l) {
if (!recursion_guard_(b, l, "module_0")) return false;
shebang(b, l + 1);
return true;
}
// ppragma*
private static boolean module_1(PsiBuilder b, int l) {
if (!recursion_guard_(b, l, "module_1")) return false;
int c = current_position_(b);
while (true) {
if (!ppragma(b, l + 1)) break;
if (!empty_element_parsed_guard_(b, "module_1", c)) break;
c = current_position_(b);
}
return true;
}
// [moduledecl]
private static boolean module_2(PsiBuilder b, int l) {
if (!recursion_guard_(b, l, "module_2")) return false;
moduledecl(b, l + 1);
return true;
}
// [body]
private static boolean module_3(PsiBuilder b, int l) {
if (!recursion_guard_(b, l, "module_3")) return false;
body(b, l + 1);
return true;
}
/* ********************************************************** */
// (conid '.')+
static boolean modulePrefix(PsiBuilder b, int l) {
if (!recursion_guard_(b, l, "modulePrefix")) return false;
if (!nextTokenIs(b, CONIDREGEXP)) return false;
boolean r;
Marker m = enter_section_(b);
r = modulePrefix_0(b, l + 1);
int c = current_position_(b);
while (r) {
if (!modulePrefix_0(b, l + 1)) break;
if (!empty_element_parsed_guard_(b, "modulePrefix", c)) break;
c = current_position_(b);
}
exit_section_(b, m, null, r);
return r;
}
// conid '.'
private static boolean modulePrefix_0(PsiBuilder b, int l) {
if (!recursion_guard_(b, l, "modulePrefix_0")) return false;
boolean r;
Marker m = enter_section_(b);
r = conid(b, l + 1);
r = r && consumeToken(b, PERIOD);
exit_section_(b, m, null, r);
return r;
}
/* ********************************************************** */
// "module" qconid [ppragma] [exportsempty|exports] "where"
public static boolean moduledecl(PsiBuilder b, int l) {
if (!recursion_guard_(b, l, "moduledecl")) return false;
if (!nextTokenIs(b, MODULETOKEN)) return false;
boolean r, p;
Marker m = enter_section_(b, l, _NONE_, MODULEDECL, null);
r = consumeToken(b, MODULETOKEN);
p = r; // pin = 1
r = r && report_error_(b, qconid(b, l + 1));
r = p && report_error_(b, moduledecl_2(b, l + 1)) && r;
r = p && report_error_(b, moduledecl_3(b, l + 1)) && r;
r = p && consumeToken(b, WHERE) && r;
exit_section_(b, l, m, r, p, null);
return r || p;
}
// [ppragma]
private static boolean moduledecl_2(PsiBuilder b, int l) {
if (!recursion_guard_(b, l, "moduledecl_2")) return false;
ppragma(b, l + 1);
return true;
}
// [exportsempty|exports]
private static boolean moduledecl_3(PsiBuilder b, int l) {
if (!recursion_guard_(b, l, "moduledecl_3")) return false;
moduledecl_3_0(b, l + 1);
return true;
}
// exportsempty|exports
private static boolean moduledecl_3_0(PsiBuilder b, int l) {
if (!recursion_guard_(b, l, "moduledecl_3_0")) return false;
boolean r;
Marker m = enter_section_(b);
r = exportsempty(b, l + 1);
if (!r) r = exports(b, l + 1);
exit_section_(b, m, null, r);
return r;
}
/* ********************************************************** */
// con (atype | '{' var '::' typee '}')
public static boolean newconstr(PsiBuilder b, int l) {
if (!recursion_guard_(b, l, "newconstr")) return false;
if (!nextTokenIs(b, "<newconstr>", LPAREN, CONIDREGEXP)) return false;
boolean r, p;
Marker m = enter_section_(b, l, _NONE_, NEWCONSTR, "<newconstr>");
r = con(b, l + 1);
p = r; // pin = 1
r = r && newconstr_1(b, l + 1);
exit_section_(b, l, m, r, p, null);
return r || p;
}
// atype | '{' var '::' typee '}'
private static boolean newconstr_1(PsiBuilder b, int l) {
if (!recursion_guard_(b, l, "newconstr_1")) return false;
boolean r;
Marker m = enter_section_(b);
r = atype(b, l + 1);
if (!r) r = newconstr_1_1(b, l + 1);
exit_section_(b, m, null, r);
return r;
}
// '{' var '::' typee '}'
private static boolean newconstr_1_1(PsiBuilder b, int l) {
if (!recursion_guard_(b, l, "newconstr_1_1")) return false;
boolean r, p;
Marker m = enter_section_(b, l, _NONE_);
r = consumeToken(b, LBRACE);
p = r; // pin = 1
r = r && report_error_(b, var(b, l + 1));
r = p && report_error_(b, consumeToken(b, DOUBLECOLON)) && r;
r = p && report_error_(b, typee(b, l + 1)) && r;
r = p && consumeToken(b, RBRACE) && r;
exit_section_(b, l, m, r, p, null);
return r || p;
}
/* ********************************************************** */
// "newtype" [clscontext "=>"] simpletype '=' newconstr [deriving]
public static boolean newtypedecl(PsiBuilder b, int l) {
if (!recursion_guard_(b, l, "newtypedecl")) return false;
if (!nextTokenIs(b, NEWTYPE)) return false;
boolean r, p;
Marker m = enter_section_(b, l, _NONE_, NEWTYPEDECL, null);
r = consumeToken(b, NEWTYPE);
p = r; // pin = 1
r = r && report_error_(b, newtypedecl_1(b, l + 1));
r = p && report_error_(b, simpletype(b, l + 1)) && r;
r = p && report_error_(b, consumeToken(b, EQUALS)) && r;
r = p && report_error_(b, newconstr(b, l + 1)) && r;
r = p && newtypedecl_5(b, l + 1) && r;
exit_section_(b, l, m, r, p, null);
return r || p;
}
// [clscontext "=>"]
private static boolean newtypedecl_1(PsiBuilder b, int l) {
if (!recursion_guard_(b, l, "newtypedecl_1")) return false;
newtypedecl_1_0(b, l + 1);
return true;
}
// clscontext "=>"
private static boolean newtypedecl_1_0(PsiBuilder b, int l) {
if (!recursion_guard_(b, l, "newtypedecl_1_0")) return false;
boolean r;
Marker m = enter_section_(b);
r = clscontext(b, l + 1);
r = r && consumeToken(b, DOUBLEARROW);
exit_section_(b, m, null, r);
return r;
}
// [deriving]
private static boolean newtypedecl_5(PsiBuilder b, int l) {
if (!recursion_guard_(b, l, "newtypedecl_5")) return false;
deriving(b, l + 1);
return true;
}
/* ********************************************************** */
// '(#' commas '#)'
// | '(' ('->' | commas) ')'
// // | '[:' ':]'
// | '[' ']'
// // | '(' '~#' ')'
// | oqtycon
static boolean ntgtycon(PsiBuilder b, int l) {
if (!recursion_guard_(b, l, "ntgtycon")) return false;
boolean r;
Marker m = enter_section_(b);
r = ntgtycon_0(b, l + 1);
if (!r) r = ntgtycon_1(b, l + 1);
if (!r) r = ntgtycon_2(b, l + 1);
if (!r) r = oqtycon(b, l + 1);
exit_section_(b, m, null, r);
return r;
}
// '(#' commas '#)'
private static boolean ntgtycon_0(PsiBuilder b, int l) {
if (!recursion_guard_(b, l, "ntgtycon_0")) return false;
boolean r;
Marker m = enter_section_(b);
r = consumeToken(b, LUNBOXPAREN);
r = r && commas(b, l + 1);
r = r && consumeToken(b, RUNBOXPAREN);
exit_section_(b, m, null, r);
return r;
}
// '(' ('->' | commas) ')'
private static boolean ntgtycon_1(PsiBuilder b, int l) {
if (!recursion_guard_(b, l, "ntgtycon_1")) return false;
boolean r;
Marker m = enter_section_(b);
r = consumeToken(b, LPAREN);
r = r && ntgtycon_1_1(b, l + 1);
r = r && consumeToken(b, RPAREN);
exit_section_(b, m, null, r);
return r;
}
// '->' | commas
private static boolean ntgtycon_1_1(PsiBuilder b, int l) {
if (!recursion_guard_(b, l, "ntgtycon_1_1")) return false;
boolean r;
Marker m = enter_section_(b);
r = consumeToken(b, RIGHTARROW);
if (!r) r = commas(b, l + 1);
exit_section_(b, m, null, r);
return r;
}
// '[' ']'
private static boolean ntgtycon_2(PsiBuilder b, int l) {
if (!recursion_guard_(b, l, "ntgtycon_2")) return false;
boolean r;
Marker m = enter_section_(b);
r = consumeToken(b, LBRACKET);
r = r && consumeToken(b, RBRACKET);
exit_section_(b, m, null, r);
return r;
}
/* ********************************************************** */
// varop | conop
public static boolean op(PsiBuilder b, int l) {
if (!recursion_guard_(b, l, "op")) return false;
boolean r;
Marker m = enter_section_(b, l, _NONE_, OP, "<op>");
r = varop(b, l + 1);
if (!r) r = conop(b, l + 1);
exit_section_(b, l, m, r, false, null);
return r;
}
/* ********************************************************** */
// '{'
// | WHITESPACELBRACETOK
static boolean open(PsiBuilder b, int l) {
if (!recursion_guard_(b, l, "open")) return false;
if (!nextTokenIs(b, "", LBRACE, WHITESPACELBRACETOK)) return false;
boolean r;
Marker m = enter_section_(b);
r = consumeToken(b, LBRACE);
if (!r) r = consumeToken(b, WHITESPACELBRACETOK);
exit_section_(b, m, null, r);
return r;
}
/* ********************************************************** */
// '(' ('~' | qtyconsym) ')' // An "ordinary" qualified tycon;
// | qtycon
public static boolean oqtycon(PsiBuilder b, int l) {
if (!recursion_guard_(b, l, "oqtycon")) return false;
if (!nextTokenIs(b, "<oqtycon>", LPAREN, CONIDREGEXP)) return false;
boolean r;
Marker m = enter_section_(b, l, _NONE_, OQTYCON, "<oqtycon>");
r = oqtycon_0(b, l + 1);
if (!r) r = qtycon(b, l + 1);
exit_section_(b, l, m, r, false, null);
return r;
}
// '(' ('~' | qtyconsym) ')'
private static boolean oqtycon_0(PsiBuilder b, int l) {
if (!recursion_guard_(b, l, "oqtycon_0")) return false;
boolean r;
Marker m = enter_section_(b);
r = consumeToken(b, LPAREN);
r = r && oqtycon_0_1(b, l + 1);
r = r && consumeToken(b, RPAREN);
exit_section_(b, m, null, r);
return r;
}
// '~' | qtyconsym
private static boolean oqtycon_0_1(PsiBuilder b, int l) {
if (!recursion_guard_(b, l, "oqtycon_0_1")) return false;
boolean r;
Marker m = enter_section_(b);
r = consumeToken(b, TILDE);
if (!r) r = qtyconsym(b, l + 1);
exit_section_(b, m, null, r);
return r;
}
/* ********************************************************** */
// '(' parenlike1
static boolean parenlike(PsiBuilder b, int l) {
if (!recursion_guard_(b, l, "parenlike")) return false;
if (!nextTokenIs(b, LPAREN)) return false;
boolean r;
Marker m = enter_section_(b);
r = consumeToken(b, LPAREN);
r = r && parenlike1(b, l + 1);
exit_section_(b, m, null, r);
return r;
}
/* ********************************************************** */
// exp (',' exp)* ')'
// | (infixexp qop | qop infixexp) ')'
static boolean parenlike1(PsiBuilder b, int l) {
if (!recursion_guard_(b, l, "parenlike1")) return false;
boolean r;
Marker m = enter_section_(b);
r = parenlike1_0(b, l + 1);
if (!r) r = parenlike1_1(b, l + 1);
exit_section_(b, m, null, r);
return r;
}
// exp (',' exp)* ')'
private static boolean parenlike1_0(PsiBuilder b, int l) {
if (!recursion_guard_(b, l, "parenlike1_0")) return false;
boolean r;
Marker m = enter_section_(b);
r = exp(b, l + 1);
r = r && parenlike1_0_1(b, l + 1);
r = r && consumeToken(b, RPAREN);
exit_section_(b, m, null, r);
return r;
}
// (',' exp)*
private static boolean parenlike1_0_1(PsiBuilder b, int l) {
if (!recursion_guard_(b, l, "parenlike1_0_1")) return false;
int c = current_position_(b);
while (true) {
if (!parenlike1_0_1_0(b, l + 1)) break;
if (!empty_element_parsed_guard_(b, "parenlike1_0_1", c)) break;
c = current_position_(b);
}
return true;
}
// ',' exp
private static boolean parenlike1_0_1_0(PsiBuilder b, int l) {
if (!recursion_guard_(b, l, "parenlike1_0_1_0")) return false;
boolean r;
Marker m = enter_section_(b);
r = consumeToken(b, COMMA);
r = r && exp(b, l + 1);
exit_section_(b, m, null, r);
return r;
}
// (infixexp qop | qop infixexp) ')'
private static boolean parenlike1_1(PsiBuilder b, int l) {
if (!recursion_guard_(b, l, "parenlike1_1")) return false;
boolean r;
Marker m = enter_section_(b);
r = parenlike1_1_0(b, l + 1);
r = r && consumeToken(b, RPAREN);
exit_section_(b, m, null, r);
return r;
}
// infixexp qop | qop infixexp
private static boolean parenlike1_1_0(PsiBuilder b, int l) {
if (!recursion_guard_(b, l, "parenlike1_1_0")) return false;
boolean r;
Marker m = enter_section_(b);
r = parenlike1_1_0_0(b, l + 1);
if (!r) r = parenlike1_1_0_1(b, l + 1);
exit_section_(b, m, null, r);
return r;
}
// infixexp qop
private static boolean parenlike1_1_0_0(PsiBuilder b, int l) {
if (!recursion_guard_(b, l, "parenlike1_1_0_0")) return false;
boolean r;
Marker m = enter_section_(b);
r = infixexp(b, l + 1);
r = r && qop(b, l + 1);
exit_section_(b, m, null, r);
return r;
}
// qop infixexp
private static boolean parenlike1_1_0_1(PsiBuilder b, int l) {
if (!recursion_guard_(b, l, "parenlike1_1_0_1")) return false;
boolean r;
Marker m = enter_section_(b);
r = qop(b, l + 1);
r = r && infixexp(b, l + 1);
exit_section_(b, m, null, r);
return r;
}
/* ********************************************************** */
// "rec" [open stmts close | "let" decls]
// | [pat '<-'] exp
static boolean partialstmt(PsiBuilder b, int l) {
if (!recursion_guard_(b, l, "partialstmt")) return false;
boolean r;
Marker m = enter_section_(b);
r = partialstmt_0(b, l + 1);
if (!r) r = partialstmt_1(b, l + 1);
exit_section_(b, m, null, r);
return r;
}
// "rec" [open stmts close | "let" decls]
private static boolean partialstmt_0(PsiBuilder b, int l) {
if (!recursion_guard_(b, l, "partialstmt_0")) return false;
boolean r;
Marker m = enter_section_(b);
r = consumeToken(b, RECTOK);
r = r && partialstmt_0_1(b, l + 1);
exit_section_(b, m, null, r);
return r;
}
// [open stmts close | "let" decls]
private static boolean partialstmt_0_1(PsiBuilder b, int l) {
if (!recursion_guard_(b, l, "partialstmt_0_1")) return false;
partialstmt_0_1_0(b, l + 1);
return true;
}
// open stmts close | "let" decls
private static boolean partialstmt_0_1_0(PsiBuilder b, int l) {
if (!recursion_guard_(b, l, "partialstmt_0_1_0")) return false;
boolean r;
Marker m = enter_section_(b);
r = partialstmt_0_1_0_0(b, l + 1);
if (!r) r = partialstmt_0_1_0_1(b, l + 1);
exit_section_(b, m, null, r);
return r;
}
// open stmts close
private static boolean partialstmt_0_1_0_0(PsiBuilder b, int l) {
if (!recursion_guard_(b, l, "partialstmt_0_1_0_0")) return false;
boolean r;
Marker m = enter_section_(b);
r = open(b, l + 1);
r = r && stmts(b, l + 1);
r = r && close(b, l + 1);
exit_section_(b, m, null, r);
return r;
}
// "let" decls
private static boolean partialstmt_0_1_0_1(PsiBuilder b, int l) {
if (!recursion_guard_(b, l, "partialstmt_0_1_0_1")) return false;
boolean r;
Marker m = enter_section_(b);
r = consumeToken(b, LET);
r = r && decls(b, l + 1);
exit_section_(b, m, null, r);
return r;
}
// [pat '<-'] exp
private static boolean partialstmt_1(PsiBuilder b, int l) {
if (!recursion_guard_(b, l, "partialstmt_1")) return false;
boolean r;
Marker m = enter_section_(b);
r = partialstmt_1_0(b, l + 1);
r = r && exp(b, l + 1);
exit_section_(b, m, null, r);
return r;
}
// [pat '<-']
private static boolean partialstmt_1_0(PsiBuilder b, int l) {
if (!recursion_guard_(b, l, "partialstmt_1_0")) return false;
partialstmt_1_0_0(b, l + 1);
return true;
}
// pat '<-'
private static boolean partialstmt_1_0_0(PsiBuilder b, int l) {
if (!recursion_guard_(b, l, "partialstmt_1_0_0")) return false;
boolean r;
Marker m = enter_section_(b);
r = pat(b, l + 1);
r = r && consumeToken(b, LEFTARROW);
exit_section_(b, m, null, r);
return r;
}
/* ********************************************************** */
// lpat ((qconop|explicitqvarsym) pat | ["::" ctype])
public static boolean pat(PsiBuilder b, int l) {
if (!recursion_guard_(b, l, "pat")) return false;
boolean r;
Marker m = enter_section_(b, l, _COLLAPSE_, PAT, "<pat>");
r = lpat(b, l + 1);
r = r && pat_1(b, l + 1);
exit_section_(b, l, m, r, false, null);
return r;
}
// (qconop|explicitqvarsym) pat | ["::" ctype]
private static boolean pat_1(PsiBuilder b, int l) {
if (!recursion_guard_(b, l, "pat_1")) return false;
boolean r;
Marker m = enter_section_(b);
r = pat_1_0(b, l + 1);
if (!r) r = pat_1_1(b, l + 1);
exit_section_(b, m, null, r);
return r;
}
// (qconop|explicitqvarsym) pat
private static boolean pat_1_0(PsiBuilder b, int l) {
if (!recursion_guard_(b, l, "pat_1_0")) return false;
boolean r;
Marker m = enter_section_(b);
r = pat_1_0_0(b, l + 1);
r = r && pat(b, l + 1);
exit_section_(b, m, null, r);
return r;
}
// qconop|explicitqvarsym
private static boolean pat_1_0_0(PsiBuilder b, int l) {
if (!recursion_guard_(b, l, "pat_1_0_0")) return false;
boolean r;
Marker m = enter_section_(b);
r = qconop(b, l + 1);
if (!r) r = explicitqvarsym(b, l + 1);
exit_section_(b, m, null, r);
return r;
}
// ["::" ctype]
private static boolean pat_1_1(PsiBuilder b, int l) {
if (!recursion_guard_(b, l, "pat_1_1")) return false;
pat_1_1_0(b, l + 1);
return true;
}
// "::" ctype
private static boolean pat_1_1_0(PsiBuilder b, int l) {
if (!recursion_guard_(b, l, "pat_1_1_0")) return false;
boolean r;
Marker m = enter_section_(b);
r = consumeToken(b, DOUBLECOLON);
r = r && ctype(b, l + 1);
exit_section_(b, m, null, r);
return r;
}
/* ********************************************************** */
// qtycon
// | '(' [kind ',' comma_kinds1] ')'
// | '[' kind [',' comma_kinds1] ']'
static boolean pkind(PsiBuilder b, int l) {
if (!recursion_guard_(b, l, "pkind")) return false;
boolean r;
Marker m = enter_section_(b);
r = qtycon(b, l + 1);
if (!r) r = pkind_1(b, l + 1);
if (!r) r = pkind_2(b, l + 1);
exit_section_(b, m, null, r);
return r;
}
// '(' [kind ',' comma_kinds1] ')'
private static boolean pkind_1(PsiBuilder b, int l) {
if (!recursion_guard_(b, l, "pkind_1")) return false;
boolean r;
Marker m = enter_section_(b);
r = consumeToken(b, LPAREN);
r = r && pkind_1_1(b, l + 1);
r = r && consumeToken(b, RPAREN);
exit_section_(b, m, null, r);
return r;
}
// [kind ',' comma_kinds1]
private static boolean pkind_1_1(PsiBuilder b, int l) {
if (!recursion_guard_(b, l, "pkind_1_1")) return false;
pkind_1_1_0(b, l + 1);
return true;
}
// kind ',' comma_kinds1
private static boolean pkind_1_1_0(PsiBuilder b, int l) {
if (!recursion_guard_(b, l, "pkind_1_1_0")) return false;
boolean r;
Marker m = enter_section_(b);
r = kind(b, l + 1);
r = r && consumeToken(b, COMMA);
r = r && comma_kinds1(b, l + 1);
exit_section_(b, m, null, r);
return r;
}
// '[' kind [',' comma_kinds1] ']'
private static boolean pkind_2(PsiBuilder b, int l) {
if (!recursion_guard_(b, l, "pkind_2")) return false;
boolean r;
Marker m = enter_section_(b);
r = consumeToken(b, LBRACKET);
r = r && kind(b, l + 1);
r = r && pkind_2_2(b, l + 1);
r = r && consumeToken(b, RBRACKET);
exit_section_(b, m, null, r);
return r;
}
// [',' comma_kinds1]
private static boolean pkind_2_2(PsiBuilder b, int l) {
if (!recursion_guard_(b, l, "pkind_2_2")) return false;
pkind_2_2_0(b, l + 1);
return true;
}
// ',' comma_kinds1
private static boolean pkind_2_2_0(PsiBuilder b, int l) {
if (!recursion_guard_(b, l, "pkind_2_2_0")) return false;
boolean r;
Marker m = enter_section_(b);
r = consumeToken(b, COMMA);
r = r && comma_kinds1(b, l + 1);
exit_section_(b, m, null, r);
return r;
}
/* ********************************************************** */
// openpragma PRAGMA+ closepragma
public static boolean ppragma(PsiBuilder b, int l) {
if (!recursion_guard_(b, l, "ppragma")) return false;
if (!nextTokenIs(b, OPENPRAGMA)) return false;
boolean r;
Marker m = enter_section_(b);
r = consumeToken(b, OPENPRAGMA);
r = r && ppragma_1(b, l + 1);
r = r && consumeToken(b, CLOSEPRAGMA);
exit_section_(b, m, PPRAGMA, r);
return r;
}
// PRAGMA+
private static boolean ppragma_1(PsiBuilder b, int l) {
if (!recursion_guard_(b, l, "ppragma_1")) return false;
boolean r;
Marker m = enter_section_(b);
r = consumeToken(b, PRAGMA);
int c = current_position_(b);
while (r) {
if (!consumeToken(b, PRAGMA)) break;
if (!empty_element_parsed_guard_(b, "ppragma_1", c)) break;
c = current_position_(b);
}
exit_section_(b, m, null, r);
return r;
}
/* ********************************************************** */
// '"' STRINGTOKEN* '"'
public static boolean pstringtoken(PsiBuilder b, int l) {
if (!recursion_guard_(b, l, "pstringtoken")) return false;
if (!nextTokenIs(b, DOUBLEQUOTE)) return false;
boolean r;
Marker m = enter_section_(b);
r = consumeToken(b, DOUBLEQUOTE);
r = r && pstringtoken_1(b, l + 1);
r = r && consumeToken(b, DOUBLEQUOTE);
exit_section_(b, m, PSTRINGTOKEN, r);
return r;
}
// STRINGTOKEN*
private static boolean pstringtoken_1(PsiBuilder b, int l) {
if (!recursion_guard_(b, l, "pstringtoken_1")) return false;
int c = current_position_(b);
while (true) {
if (!consumeToken(b, STRINGTOKEN)) break;
if (!empty_element_parsed_guard_(b, "pstringtoken_1", c)) break;
c = current_position_(b);
}
return true;
}
/* ********************************************************** */
// qconid | '(' gconsym ')'
public static boolean qcon(PsiBuilder b, int l) {
if (!recursion_guard_(b, l, "qcon")) return false;
if (!nextTokenIs(b, "<qcon>", LPAREN, CONIDREGEXP)) return false;
boolean r;
Marker m = enter_section_(b, l, _NONE_, QCON, "<qcon>");
r = qconid(b, l + 1);
if (!r) r = qcon_1(b, l + 1);
exit_section_(b, l, m, r, false, null);
return r;
}
// '(' gconsym ')'
private static boolean qcon_1(PsiBuilder b, int l) {
if (!recursion_guard_(b, l, "qcon_1")) return false;
boolean r;
Marker m = enter_section_(b);
r = consumeToken(b, LPAREN);
r = r && gconsym(b, l + 1);
r = r && consumeToken(b, RPAREN);
exit_section_(b, m, null, r);
return r;
}
/* ********************************************************** */
// [modulePrefix] conid ['#']
public static boolean qconid(PsiBuilder b, int l) {
if (!recursion_guard_(b, l, "qconid")) return false;
if (!nextTokenIs(b, CONIDREGEXP)) return false;
boolean r;
Marker m = enter_section_(b);
r = qconid_0(b, l + 1);
r = r && conid(b, l + 1);
r = r && qconid_2(b, l + 1);
exit_section_(b, m, QCONID, r);
return r;
}
// [modulePrefix]
private static boolean qconid_0(PsiBuilder b, int l) {
if (!recursion_guard_(b, l, "qconid_0")) return false;
modulePrefix(b, l + 1);
return true;
}
// ['#']
private static boolean qconid_2(PsiBuilder b, int l) {
if (!recursion_guard_(b, l, "qconid_2")) return false;
consumeToken(b, HASH);
return true;
}
/* ********************************************************** */
// gconsym | '`' qconid '`'
public static boolean qconop(PsiBuilder b, int l) {
if (!recursion_guard_(b, l, "qconop")) return false;
boolean r;
Marker m = enter_section_(b, l, _NONE_, QCONOP, "<qconop>");
r = gconsym(b, l + 1);
if (!r) r = qconop_1(b, l + 1);
exit_section_(b, l, m, r, false, null);
return r;
}
// '`' qconid '`'
private static boolean qconop_1(PsiBuilder b, int l) {
if (!recursion_guard_(b, l, "qconop_1")) return false;
boolean r;
Marker m = enter_section_(b);
r = consumeToken(b, BACKTICK);
r = r && qconid(b, l + 1);
r = r && consumeToken(b, BACKTICK);
exit_section_(b, m, null, r);
return r;
}
/* ********************************************************** */
// [modulePrefix] consym
public static boolean qconsym(PsiBuilder b, int l) {
if (!recursion_guard_(b, l, "qconsym")) return false;
if (!nextTokenIs(b, "<qconsym>", CONSYMTOK, CONIDREGEXP)) return false;
boolean r;
Marker m = enter_section_(b, l, _NONE_, QCONSYM, "<qconsym>");
r = qconsym_0(b, l + 1);
r = r && consym(b, l + 1);
exit_section_(b, l, m, r, false, null);
return r;
}
// [modulePrefix]
private static boolean qconsym_0(PsiBuilder b, int l) {
if (!recursion_guard_(b, l, "qconsym_0")) return false;
modulePrefix(b, l + 1);
return true;
}
/* ********************************************************** */
// qvarop | qconop
public static boolean qop(PsiBuilder b, int l) {
if (!recursion_guard_(b, l, "qop")) return false;
boolean r;
Marker m = enter_section_(b, l, _NONE_, QOP, "<qop>");
r = qvarop(b, l + 1);
if (!r) r = qconop(b, l + 1);
exit_section_(b, l, m, r, false, null);
return r;
}
/* ********************************************************** */
// qqtext+
public static boolean qqblob(PsiBuilder b, int l) {
if (!recursion_guard_(b, l, "qqblob")) return false;
if (!nextTokenIs(b, QQTEXT)) return false;
boolean r;
Marker m = enter_section_(b);
r = consumeToken(b, QQTEXT);
int c = current_position_(b);
while (r) {
if (!consumeToken(b, QQTEXT)) break;
if (!empty_element_parsed_guard_(b, "qqblob", c)) break;
c = current_position_(b);
}
exit_section_(b, m, QQBLOB, r);
return r;
}
/* ********************************************************** */
// [modulePrefix] tycls
public static boolean qtycls(PsiBuilder b, int l) {
if (!recursion_guard_(b, l, "qtycls")) return false;
if (!nextTokenIs(b, CONIDREGEXP)) return false;
boolean r;
Marker m = enter_section_(b);
r = qtycls_0(b, l + 1);
r = r && tycls(b, l + 1);
exit_section_(b, m, QTYCLS, r);
return r;
}
// [modulePrefix]
private static boolean qtycls_0(PsiBuilder b, int l) {
if (!recursion_guard_(b, l, "qtycls_0")) return false;
modulePrefix(b, l + 1);
return true;
}
/* ********************************************************** */
// [modulePrefix] tycon
public static boolean qtycon(PsiBuilder b, int l) {
if (!recursion_guard_(b, l, "qtycon")) return false;
if (!nextTokenIs(b, CONIDREGEXP)) return false;
boolean r;
Marker m = enter_section_(b);
r = qtycon_0(b, l + 1);
r = r && tycon(b, l + 1);
exit_section_(b, m, QTYCON, r);
return r;
}
// [modulePrefix]
private static boolean qtycon_0(PsiBuilder b, int l) {
if (!recursion_guard_(b, l, "qtycon_0")) return false;
modulePrefix(b, l + 1);
return true;
}
/* ********************************************************** */
// qtyconsym | '`' qtycon '`'
public static boolean qtyconop(PsiBuilder b, int l) {
if (!recursion_guard_(b, l, "qtyconop")) return false;
boolean r;
Marker m = enter_section_(b, l, _NONE_, QTYCONOP, "<qtyconop>");
r = qtyconsym(b, l + 1);
if (!r) r = qtyconop_1(b, l + 1);
exit_section_(b, l, m, r, false, null);
return r;
}
// '`' qtycon '`'
private static boolean qtyconop_1(PsiBuilder b, int l) {
if (!recursion_guard_(b, l, "qtyconop_1")) return false;
boolean r;
Marker m = enter_section_(b);
r = consumeToken(b, BACKTICK);
r = r && qtycon(b, l + 1);
r = r && consumeToken(b, BACKTICK);
exit_section_(b, m, null, r);
return r;
}
/* ********************************************************** */
// qconsym | qvarsym | tyconsym
public static boolean qtyconsym(PsiBuilder b, int l) {
if (!recursion_guard_(b, l, "qtyconsym")) return false;
boolean r;
Marker m = enter_section_(b, l, _NONE_, QTYCONSYM, "<qtyconsym>");
r = qconsym(b, l + 1);
if (!r) r = qvarsym(b, l + 1);
if (!r) r = tyconsym(b, l + 1);
exit_section_(b, l, m, r, false, null);
return r;
}
/* ********************************************************** */
// pat '<-' exp
// | "let" decls
// | exp
static boolean qual(PsiBuilder b, int l) {
if (!recursion_guard_(b, l, "qual")) return false;
boolean r;
Marker m = enter_section_(b);
r = qual_0(b, l + 1);
if (!r) r = qual_1(b, l + 1);
if (!r) r = exp(b, l + 1);
exit_section_(b, m, null, r);
return r;
}
// pat '<-' exp
private static boolean qual_0(PsiBuilder b, int l) {
if (!recursion_guard_(b, l, "qual_0")) return false;
boolean r;
Marker m = enter_section_(b);
r = pat(b, l + 1);
r = r && consumeToken(b, LEFTARROW);
r = r && exp(b, l + 1);
exit_section_(b, m, null, r);
return r;
}
// "let" decls
private static boolean qual_1(PsiBuilder b, int l) {
if (!recursion_guard_(b, l, "qual_1")) return false;
boolean r;
Marker m = enter_section_(b);
r = consumeToken(b, LET);
r = r && decls(b, l + 1);
exit_section_(b, m, null, r);
return r;
}
/* ********************************************************** */
// qvarid | '(' qvarsym ')'
public static boolean qvar(PsiBuilder b, int l) {
if (!recursion_guard_(b, l, "qvar")) return false;
boolean r;
Marker m = enter_section_(b, l, _NONE_, QVAR, "<qvar>");
r = qvarid(b, l + 1);
if (!r) r = qvar_1(b, l + 1);
exit_section_(b, l, m, r, false, null);
return r;
}
// '(' qvarsym ')'
private static boolean qvar_1(PsiBuilder b, int l) {
if (!recursion_guard_(b, l, "qvar_1")) return false;
boolean r;
Marker m = enter_section_(b);
r = consumeToken(b, LPAREN);
r = r && qvarsym(b, l + 1);
r = r && consumeToken(b, RPAREN);
exit_section_(b, m, null, r);
return r;
}
/* ********************************************************** */
// [modulePrefix] varid
public static boolean qvarid(PsiBuilder b, int l) {
if (!recursion_guard_(b, l, "qvarid")) return false;
boolean r;
Marker m = enter_section_(b, l, _NONE_, QVARID, "<qvarid>");
r = qvarid_0(b, l + 1);
r = r && varid(b, l + 1);
exit_section_(b, l, m, r, false, null);
return r;
}
// [modulePrefix]
private static boolean qvarid_0(PsiBuilder b, int l) {
if (!recursion_guard_(b, l, "qvarid_0")) return false;
modulePrefix(b, l + 1);
return true;
}
/* ********************************************************** */
// qvarsym | '`' qvarid '`'
public static boolean qvarop(PsiBuilder b, int l) {
if (!recursion_guard_(b, l, "qvarop")) return false;
boolean r;
Marker m = enter_section_(b, l, _NONE_, QVAROP, "<qvarop>");
r = qvarsym(b, l + 1);
if (!r) r = qvarop_1(b, l + 1);
exit_section_(b, l, m, r, false, null);
return r;
}
// '`' qvarid '`'
private static boolean qvarop_1(PsiBuilder b, int l) {
if (!recursion_guard_(b, l, "qvarop_1")) return false;
boolean r;
Marker m = enter_section_(b);
r = consumeToken(b, BACKTICK);
r = r && qvarid(b, l + 1);
r = r && consumeToken(b, BACKTICK);
exit_section_(b, m, null, r);
return r;
}
/* ********************************************************** */
// <<sequence qvar>>
public static boolean qvars(PsiBuilder b, int l) {
if (!recursion_guard_(b, l, "qvars")) return false;
boolean r;
Marker m = enter_section_(b, l, _NONE_, QVARS, "<qvars>");
r = sequence(b, l + 1, qvar_parser_);
exit_section_(b, l, m, r, false, null);
return r;
}
/* ********************************************************** */
// varsym | explicitqvarsym
public static boolean qvarsym(PsiBuilder b, int l) {
if (!recursion_guard_(b, l, "qvarsym")) return false;
boolean r;
Marker m = enter_section_(b, l, _NONE_, QVARSYM, "<qvarsym>");
r = varsym(b, l + 1);
if (!r) r = explicitqvarsym(b, l + 1);
exit_section_(b, l, m, r, false, null);
return r;
}
/* ********************************************************** */
// qvar
// | qcon
// | gcon
// | '(' recordlikeparen ')'
static boolean recordlikelhs(PsiBuilder b, int l) {
if (!recursion_guard_(b, l, "recordlikelhs")) return false;
boolean r;
Marker m = enter_section_(b);
r = qvar(b, l + 1);
if (!r) r = qcon(b, l + 1);
if (!r) r = gcon(b, l + 1);
if (!r) r = recordlikelhs_3(b, l + 1);
exit_section_(b, m, null, r);
return r;
}
// '(' recordlikeparen ')'
private static boolean recordlikelhs_3(PsiBuilder b, int l) {
if (!recursion_guard_(b, l, "recordlikelhs_3")) return false;
boolean r;
Marker m = enter_section_(b);
r = consumeToken(b, LPAREN);
r = r && recordlikeparen(b, l + 1);
r = r && consumeToken(b, RPAREN);
exit_section_(b, m, null, r);
return r;
}
/* ********************************************************** */
// exp
// | infixexp qop
// | qop infixexp
static boolean recordlikeparen(PsiBuilder b, int l) {
if (!recursion_guard_(b, l, "recordlikeparen")) return false;
boolean r;
Marker m = enter_section_(b);
r = exp(b, l + 1);
if (!r) r = recordlikeparen_1(b, l + 1);
if (!r) r = recordlikeparen_2(b, l + 1);
exit_section_(b, m, null, r);
return r;
}
// infixexp qop
private static boolean recordlikeparen_1(PsiBuilder b, int l) {
if (!recursion_guard_(b, l, "recordlikeparen_1")) return false;
boolean r;
Marker m = enter_section_(b);
r = infixexp(b, l + 1);
r = r && qop(b, l + 1);
exit_section_(b, m, null, r);
return r;
}
// qop infixexp
private static boolean recordlikeparen_2(PsiBuilder b, int l) {
if (!recursion_guard_(b, l, "recordlikeparen_2")) return false;
boolean r;
Marker m = enter_section_(b);
r = qop(b, l + 1);
r = r && infixexp(b, l + 1);
exit_section_(b, m, null, r);
return r;
}
/* ********************************************************** */
// ('=' exp | gdrhs+) [wheredecls]
public static boolean rhs(PsiBuilder b, int l) {
if (!recursion_guard_(b, l, "rhs")) return false;
if (!nextTokenIs(b, "<rhs>", EQUALS, PIPE)) return false;
boolean r, p;
Marker m = enter_section_(b, l, _NONE_, RHS, "<rhs>");
r = rhs_0(b, l + 1);
p = r; // pin = 1
r = r && rhs_1(b, l + 1);
exit_section_(b, l, m, r, p, null);
return r || p;
}
// '=' exp | gdrhs+
private static boolean rhs_0(PsiBuilder b, int l) {
if (!recursion_guard_(b, l, "rhs_0")) return false;
boolean r;
Marker m = enter_section_(b);
r = rhs_0_0(b, l + 1);
if (!r) r = rhs_0_1(b, l + 1);
exit_section_(b, m, null, r);
return r;
}
// '=' exp
private static boolean rhs_0_0(PsiBuilder b, int l) {
if (!recursion_guard_(b, l, "rhs_0_0")) return false;
boolean r, p;
Marker m = enter_section_(b, l, _NONE_);
r = consumeToken(b, EQUALS);
p = r; // pin = 1
r = r && exp(b, l + 1);
exit_section_(b, l, m, r, p, null);
return r || p;
}
// gdrhs+
private static boolean rhs_0_1(PsiBuilder b, int l) {
if (!recursion_guard_(b, l, "rhs_0_1")) return false;
boolean r;
Marker m = enter_section_(b);
r = gdrhs(b, l + 1);
int c = current_position_(b);
while (r) {
if (!gdrhs(b, l + 1)) break;
if (!empty_element_parsed_guard_(b, "rhs_0_1", c)) break;
c = current_position_(b);
}
exit_section_(b, m, null, r);
return r;
}
// [wheredecls]
private static boolean rhs_1(PsiBuilder b, int l) {
if (!recursion_guard_(b, l, "rhs_1")) return false;
wheredecls(b, l + 1);
return true;
}
/* ********************************************************** */
// "unsafe" | "safe" | "interruptible"
static boolean safety(PsiBuilder b, int l) {
if (!recursion_guard_(b, l, "safety")) return false;
boolean r;
Marker m = enter_section_(b);
r = consumeToken(b, "unsafe");
if (!r) r = consumeToken(b, "safe");
if (!r) r = consumeToken(b, "interruptible");
exit_section_(b, m, null, r);
return r;
}
/* ********************************************************** */
// ';'
// | WHITESPACESEMITOK
static boolean semi(PsiBuilder b, int l) {
if (!recursion_guard_(b, l, "semi")) return false;
if (!nextTokenIs(b, "", SEMICOLON, WHITESPACESEMITOK)) return false;
boolean r;
Marker m = enter_section_(b);
r = consumeToken(b, SEMICOLON);
if (!r) r = consumeToken(b, WHITESPACESEMITOK);
exit_section_(b, m, null, r);
return r;
}
/* ********************************************************** */
// <<p>> (',' <<p>>)*
static boolean sequence(PsiBuilder b, int l, Parser _p) {
if (!recursion_guard_(b, l, "sequence")) return false;
boolean r, p;
Marker m = enter_section_(b, l, _NONE_);
r = _p.parse(b, l);
p = r; // pin = 1
r = r && sequence_1(b, l + 1, _p);
exit_section_(b, l, m, r, p, null);
return r || p;
}
// (',' <<p>>)*
private static boolean sequence_1(PsiBuilder b, int l, Parser _p) {
if (!recursion_guard_(b, l, "sequence_1")) return false;
int c = current_position_(b);
while (true) {
if (!sequence_1_0(b, l + 1, _p)) break;
if (!empty_element_parsed_guard_(b, "sequence_1", c)) break;
c = current_position_(b);
}
return true;
}
// ',' <<p>>
private static boolean sequence_1_0(PsiBuilder b, int l, Parser _p) {
if (!recursion_guard_(b, l, "sequence_1_0")) return false;
boolean r, p;
Marker m = enter_section_(b, l, _NONE_);
r = consumeToken(b, COMMA);
p = r; // pin = 1
r = r && _p.parse(b, l);
exit_section_(b, l, m, r, p, null);
return r || p;
}
/* ********************************************************** */
// SHEBANGSTART SHEBANGPATH?
public static boolean shebang(PsiBuilder b, int l) {
if (!recursion_guard_(b, l, "shebang")) return false;
if (!nextTokenIs(b, SHEBANGSTART)) return false;
boolean r;
Marker m = enter_section_(b);
r = consumeToken(b, SHEBANGSTART);
r = r && shebang_1(b, l + 1);
exit_section_(b, m, SHEBANG, r);
return r;
}
// SHEBANGPATH?
private static boolean shebang_1(PsiBuilder b, int l) {
if (!recursion_guard_(b, l, "shebang_1")) return false;
consumeToken(b, SHEBANGPATH);
return true;
}
/* ********************************************************** */
// tycon tyvar*
static boolean simpletype(PsiBuilder b, int l) {
if (!recursion_guard_(b, l, "simpletype")) return false;
if (!nextTokenIs(b, CONIDREGEXP)) return false;
boolean r;
Marker m = enter_section_(b);
r = tycon(b, l + 1);
r = r && simpletype_1(b, l + 1);
exit_section_(b, m, null, r);
return r;
}
// tyvar*
private static boolean simpletype_1(PsiBuilder b, int l) {
if (!recursion_guard_(b, l, "simpletype_1")) return false;
int c = current_position_(b);
while (true) {
if (!tyvar(b, l + 1)) break;
if (!empty_element_parsed_guard_(b, "simpletype_1", c)) break;
c = current_position_(b);
}
return true;
}
/* ********************************************************** */
// transformqual
// | qual
static boolean squal(PsiBuilder b, int l) {
if (!recursion_guard_(b, l, "squal")) return false;
boolean r;
Marker m = enter_section_(b);
r = transformqual(b, l + 1);
if (!r) r = qual(b, l + 1);
exit_section_(b, m, null, r);
return r;
}
/* ********************************************************** */
// partialstmt semi
static boolean stmt(PsiBuilder b, int l) {
if (!recursion_guard_(b, l, "stmt")) return false;
boolean r;
Marker m = enter_section_(b);
r = partialstmt(b, l + 1);
r = r && semi(b, l + 1);
exit_section_(b, m, null, r);
return r;
}
/* ********************************************************** */
// stmt* (letexp | partialstmt | exp)
public static boolean stmts(PsiBuilder b, int l) {
if (!recursion_guard_(b, l, "stmts")) return false;
boolean r;
Marker m = enter_section_(b, l, _COLLAPSE_, STMTS, "<stmts>");
r = stmts_0(b, l + 1);
r = r && stmts_1(b, l + 1);
exit_section_(b, l, m, r, false, null);
return r;
}
// stmt*
private static boolean stmts_0(PsiBuilder b, int l) {
if (!recursion_guard_(b, l, "stmts_0")) return false;
int c = current_position_(b);
while (true) {
if (!stmt(b, l + 1)) break;
if (!empty_element_parsed_guard_(b, "stmts_0", c)) break;
c = current_position_(b);
}
return true;
}
// letexp | partialstmt | exp
private static boolean stmts_1(PsiBuilder b, int l) {
if (!recursion_guard_(b, l, "stmts_1")) return false;
boolean r;
Marker m = enter_section_(b);
r = letexp(b, l + 1);
if (!r) r = partialstmt(b, l + 1);
if (!r) r = exp(b, l + 1);
exit_section_(b, m, null, r);
return r;
}
/* ********************************************************** */
// [ppragma] '!'
static boolean strict_mark(PsiBuilder b, int l) {
if (!recursion_guard_(b, l, "strict_mark")) return false;
if (!nextTokenIs(b, "", EXCLAMATION, OPENPRAGMA)) return false;
boolean r;
Marker m = enter_section_(b);
r = strict_mark_0(b, l + 1);
r = r && consumeToken(b, EXCLAMATION);
exit_section_(b, m, null, r);
return r;
}
// [ppragma]
private static boolean strict_mark_0(PsiBuilder b, int l) {
if (!recursion_guard_(b, l, "strict_mark_0")) return false;
ppragma(b, l + 1);
return true;
}
/* ********************************************************** */
// '!' | '#' | '$' | '%' | '&' | '*' | '+' | '.' | '/' | '<' | '>' | '?' | '@'
// | '\' | '^' | '-' | '~' | ':'
static boolean symbol1(PsiBuilder b, int l) {
if (!recursion_guard_(b, l, "symbol1")) return false;
boolean r;
Marker m = enter_section_(b);
r = consumeToken(b, EXCLAMATION);
if (!r) r = consumeToken(b, HASH);
if (!r) r = consumeToken(b, DOLLAR);
if (!r) r = consumeToken(b, PERCENT);
if (!r) r = consumeToken(b, AMPERSAND);
if (!r) r = consumeToken(b, ASTERISK);
if (!r) r = consumeToken(b, PLUS);
if (!r) r = consumeToken(b, PERIOD);
if (!r) r = consumeToken(b, SLASH);
if (!r) r = consumeToken(b, LESSTHAN);
if (!r) r = consumeToken(b, GREATERTHAN);
if (!r) r = consumeToken(b, QUESTION);
if (!r) r = consumeToken(b, AMPERSAT);
if (!r) r = consumeToken(b, BACKSLASH);
if (!r) r = consumeToken(b, CARET);
if (!r) r = consumeToken(b, MINUS);
if (!r) r = consumeToken(b, TILDE);
if (!r) r = consumeToken(b, COLON);
exit_section_(b, m, null, r);
return r;
}
/* ********************************************************** */
// '[|' e (exp [semi])+ e '|]'
// // TODO: Enable more precise TH parsing with t/p/d.
// // | '[' ("t" '|' ctype | "p" '|' infixexp | "d" '|' open topdecls close ) '|]'
// | qqopen i qvarid i '|' qqblob '|]'
static boolean thaexp(PsiBuilder b, int l) {
if (!recursion_guard_(b, l, "thaexp")) return false;
if (!nextTokenIs(b, "", LTHOPEN, QQOPEN)) return false;
boolean r;
Marker m = enter_section_(b);
r = thaexp_0(b, l + 1);
if (!r) r = thaexp_1(b, l + 1);
exit_section_(b, m, null, r);
return r;
}
// '[|' e (exp [semi])+ e '|]'
private static boolean thaexp_0(PsiBuilder b, int l) {
if (!recursion_guard_(b, l, "thaexp_0")) return false;
boolean r;
Marker m = enter_section_(b);
r = consumeToken(b, LTHOPEN);
r = r && e(b, l + 1);
r = r && thaexp_0_2(b, l + 1);
r = r && e(b, l + 1);
r = r && consumeToken(b, RTHCLOSE);
exit_section_(b, m, null, r);
return r;
}
// (exp [semi])+
private static boolean thaexp_0_2(PsiBuilder b, int l) {
if (!recursion_guard_(b, l, "thaexp_0_2")) return false;
boolean r;
Marker m = enter_section_(b);
r = thaexp_0_2_0(b, l + 1);
int c = current_position_(b);
while (r) {
if (!thaexp_0_2_0(b, l + 1)) break;
if (!empty_element_parsed_guard_(b, "thaexp_0_2", c)) break;
c = current_position_(b);
}
exit_section_(b, m, null, r);
return r;
}
// exp [semi]
private static boolean thaexp_0_2_0(PsiBuilder b, int l) {
if (!recursion_guard_(b, l, "thaexp_0_2_0")) return false;
boolean r;
Marker m = enter_section_(b);
r = exp(b, l + 1);
r = r && thaexp_0_2_0_1(b, l + 1);
exit_section_(b, m, null, r);
return r;
}
// [semi]
private static boolean thaexp_0_2_0_1(PsiBuilder b, int l) {
if (!recursion_guard_(b, l, "thaexp_0_2_0_1")) return false;
semi(b, l + 1);
return true;
}
// qqopen i qvarid i '|' qqblob '|]'
private static boolean thaexp_1(PsiBuilder b, int l) {
if (!recursion_guard_(b, l, "thaexp_1")) return false;
boolean r;
Marker m = enter_section_(b);
r = consumeToken(b, QQOPEN);
r = r && i(b, l + 1);
r = r && qvarid(b, l + 1);
r = r && i(b, l + 1);
r = r && consumeToken(b, PIPE);
r = r && qqblob(b, l + 1);
r = r && consumeToken(b, RTHCLOSE);
exit_section_(b, m, null, r);
return r;
}
/* ********************************************************** */
// topdecl1 ppragma*
static boolean topdecl(PsiBuilder b, int l) {
if (!recursion_guard_(b, l, "topdecl")) return false;
boolean r;
Marker m = enter_section_(b);
r = topdecl1(b, l + 1);
r = r && topdecl_1(b, l + 1);
exit_section_(b, m, null, r);
return r;
}
// ppragma*
private static boolean topdecl_1(PsiBuilder b, int l) {
if (!recursion_guard_(b, l, "topdecl_1")) return false;
int c = current_position_(b);
while (true) {
if (!ppragma(b, l + 1)) break;
if (!empty_element_parsed_guard_(b, "topdecl_1", c)) break;
c = current_position_(b);
}
return true;
}
/* ********************************************************** */
// typedecl
// | datadecl
// | newtypedecl
// | classdecl
// | instancedecl
// | defaultdecl
// | foreigndecl
// | derivingdecl
// | decl
// | impdecl // From #ifdefs
// | infixexp
static boolean topdecl1(PsiBuilder b, int l) {
if (!recursion_guard_(b, l, "topdecl1")) return false;
boolean r;
Marker m = enter_section_(b);
r = typedecl(b, l + 1);
if (!r) r = datadecl(b, l + 1);
if (!r) r = newtypedecl(b, l + 1);
if (!r) r = classdecl(b, l + 1);
if (!r) r = instancedecl(b, l + 1);
if (!r) r = defaultdecl(b, l + 1);
if (!r) r = foreigndecl(b, l + 1);
if (!r) r = derivingdecl(b, l + 1);
if (!r) r = decl(b, l + 1);
if (!r) r = impdecl(b, l + 1);
if (!r) r = infixexp(b, l + 1);
exit_section_(b, m, null, r);
return r;
}
/* ********************************************************** */
// topdecl [semi topdecls]
static boolean topdecls(PsiBuilder b, int l) {
if (!recursion_guard_(b, l, "topdecls")) return false;
boolean r, p;
Marker m = enter_section_(b, l, _NONE_);
r = topdecl(b, l + 1);
p = r; // pin = 1
r = r && topdecls_1(b, l + 1);
exit_section_(b, l, m, r, p, null);
return r || p;
}
// [semi topdecls]
private static boolean topdecls_1(PsiBuilder b, int l) {
if (!recursion_guard_(b, l, "topdecls_1")) return false;
topdecls_1_0(b, l + 1);
return true;
}
// semi topdecls
private static boolean topdecls_1_0(PsiBuilder b, int l) {
if (!recursion_guard_(b, l, "topdecls_1_0")) return false;
boolean r, p;
Marker m = enter_section_(b, l, _NONE_);
r = semi(b, l + 1);
p = r; // pin = 1
r = r && topdecls(b, l + 1);
exit_section_(b, l, m, r, p, null);
return r || p;
}
/* ********************************************************** */
// 'then' ('group' ['by' exp] 'using' exp | exp ['by' exp])
static boolean transformqual(PsiBuilder b, int l) {
if (!recursion_guard_(b, l, "transformqual")) return false;
if (!nextTokenIs(b, THEN)) return false;
boolean r;
Marker m = enter_section_(b);
r = consumeToken(b, THEN);
r = r && transformqual_1(b, l + 1);
exit_section_(b, m, null, r);
return r;
}
// 'group' ['by' exp] 'using' exp | exp ['by' exp]
private static boolean transformqual_1(PsiBuilder b, int l) {
if (!recursion_guard_(b, l, "transformqual_1")) return false;
boolean r;
Marker m = enter_section_(b);
r = transformqual_1_0(b, l + 1);
if (!r) r = transformqual_1_1(b, l + 1);
exit_section_(b, m, null, r);
return r;
}
// 'group' ['by' exp] 'using' exp
private static boolean transformqual_1_0(PsiBuilder b, int l) {
if (!recursion_guard_(b, l, "transformqual_1_0")) return false;
boolean r;
Marker m = enter_section_(b);
r = consumeToken(b, "group");
r = r && transformqual_1_0_1(b, l + 1);
r = r && consumeToken(b, "using");
r = r && exp(b, l + 1);
exit_section_(b, m, null, r);
return r;
}
// ['by' exp]
private static boolean transformqual_1_0_1(PsiBuilder b, int l) {
if (!recursion_guard_(b, l, "transformqual_1_0_1")) return false;
transformqual_1_0_1_0(b, l + 1);
return true;
}
// 'by' exp
private static boolean transformqual_1_0_1_0(PsiBuilder b, int l) {
if (!recursion_guard_(b, l, "transformqual_1_0_1_0")) return false;
boolean r;
Marker m = enter_section_(b);
r = consumeToken(b, "by");
r = r && exp(b, l + 1);
exit_section_(b, m, null, r);
return r;
}
// exp ['by' exp]
private static boolean transformqual_1_1(PsiBuilder b, int l) {
if (!recursion_guard_(b, l, "transformqual_1_1")) return false;
boolean r;
Marker m = enter_section_(b);
r = exp(b, l + 1);
r = r && transformqual_1_1_1(b, l + 1);
exit_section_(b, m, null, r);
return r;
}
// ['by' exp]
private static boolean transformqual_1_1_1(PsiBuilder b, int l) {
if (!recursion_guard_(b, l, "transformqual_1_1_1")) return false;
transformqual_1_1_1_0(b, l + 1);
return true;
}
// 'by' exp
private static boolean transformqual_1_1_1_0(PsiBuilder b, int l) {
if (!recursion_guard_(b, l, "transformqual_1_1_1_0")) return false;
boolean r;
Marker m = enter_section_(b);
r = consumeToken(b, "by");
r = r && exp(b, l + 1);
exit_section_(b, m, null, r);
return r;
}
/* ********************************************************** */
// '(' tyvar kindsig ')'
// | tyvar
public static boolean tv_bndr(PsiBuilder b, int l) {
if (!recursion_guard_(b, l, "tv_bndr")) return false;
boolean r;
Marker m = enter_section_(b, l, _NONE_, TV_BNDR, "<tv bndr>");
r = tv_bndr_0(b, l + 1);
if (!r) r = tyvar(b, l + 1);
exit_section_(b, l, m, r, false, null);
return r;
}
// '(' tyvar kindsig ')'
private static boolean tv_bndr_0(PsiBuilder b, int l) {
if (!recursion_guard_(b, l, "tv_bndr_0")) return false;
boolean r;
Marker m = enter_section_(b);
r = consumeToken(b, LPAREN);
r = r && tyvar(b, l + 1);
r = r && kindsig(b, l + 1);
r = r && consumeToken(b, RPAREN);
exit_section_(b, m, null, r);
return r;
}
/* ********************************************************** */
// conid
public static boolean tycls(PsiBuilder b, int l) {
if (!recursion_guard_(b, l, "tycls")) return false;
if (!nextTokenIs(b, CONIDREGEXP)) return false;
boolean r;
Marker m = enter_section_(b);
r = conid(b, l + 1);
exit_section_(b, m, TYCLS, r);
return r;
}
/* ********************************************************** */
// conid
public static boolean tycon(PsiBuilder b, int l) {
if (!recursion_guard_(b, l, "tycon")) return false;
if (!nextTokenIs(b, CONIDREGEXP)) return false;
boolean r;
Marker m = enter_section_(b);
r = conid(b, l + 1);
exit_section_(b, m, TYCON, r);
return r;
}
/* ********************************************************** */
// consym | varsym | '*' | '-'
public static boolean tyconsym(PsiBuilder b, int l) {
if (!recursion_guard_(b, l, "tyconsym")) return false;
boolean r;
Marker m = enter_section_(b, l, _NONE_, TYCONSYM, "<tyconsym>");
r = consym(b, l + 1);
if (!r) r = varsym(b, l + 1);
if (!r) r = consumeToken(b, ASTERISK);
if (!r) r = consumeToken(b, MINUS);
exit_section_(b, l, m, r, false, null);
return r;
}
/* ********************************************************** */
// "type" (typedeclclosedfamily | typedeclnorm)
public static boolean typedecl(PsiBuilder b, int l) {
if (!recursion_guard_(b, l, "typedecl")) return false;
if (!nextTokenIs(b, TYPE)) return false;
boolean r, p;
Marker m = enter_section_(b, l, _NONE_, TYPEDECL, null);
r = consumeToken(b, TYPE);
p = r; // pin = 1
r = r && typedecl_1(b, l + 1);
exit_section_(b, l, m, r, p, null);
return r || p;
}
// typedeclclosedfamily | typedeclnorm
private static boolean typedecl_1(PsiBuilder b, int l) {
if (!recursion_guard_(b, l, "typedecl_1")) return false;
boolean r;
Marker m = enter_section_(b);
r = typedeclclosedfamily(b, l + 1);
if (!r) r = typedeclnorm(b, l + 1);
exit_section_(b, m, null, r);
return r;
}
/* ********************************************************** */
// "family" kindedvars 'where' decls
static boolean typedeclclosedfamily(PsiBuilder b, int l) {
if (!recursion_guard_(b, l, "typedeclclosedfamily")) return false;
if (!nextTokenIs(b, FAMILYTOKEN)) return false;
boolean r, p;
Marker m = enter_section_(b, l, _NONE_);
r = consumeToken(b, FAMILYTOKEN);
r = r && kindedvars(b, l + 1);
r = r && consumeToken(b, WHERE);
p = r; // pin = 3
r = r && decls(b, l + 1);
exit_section_(b, l, m, r, p, null);
return r || p;
}
/* ********************************************************** */
// ["family" | "instance"] typee ['=' (typee|foralltype)]
static boolean typedeclnorm(PsiBuilder b, int l) {
if (!recursion_guard_(b, l, "typedeclnorm")) return false;
boolean r;
Marker m = enter_section_(b);
r = typedeclnorm_0(b, l + 1);
r = r && typee(b, l + 1);
r = r && typedeclnorm_2(b, l + 1);
exit_section_(b, m, null, r);
return r;
}
// ["family" | "instance"]
private static boolean typedeclnorm_0(PsiBuilder b, int l) {
if (!recursion_guard_(b, l, "typedeclnorm_0")) return false;
typedeclnorm_0_0(b, l + 1);
return true;
}
// "family" | "instance"
private static boolean typedeclnorm_0_0(PsiBuilder b, int l) {
if (!recursion_guard_(b, l, "typedeclnorm_0_0")) return false;
boolean r;
Marker m = enter_section_(b);
r = consumeToken(b, FAMILYTOKEN);
if (!r) r = consumeToken(b, INSTANCE);
exit_section_(b, m, null, r);
return r;
}
// ['=' (typee|foralltype)]
private static boolean typedeclnorm_2(PsiBuilder b, int l) {
if (!recursion_guard_(b, l, "typedeclnorm_2")) return false;
typedeclnorm_2_0(b, l + 1);
return true;
}
// '=' (typee|foralltype)
private static boolean typedeclnorm_2_0(PsiBuilder b, int l) {
if (!recursion_guard_(b, l, "typedeclnorm_2_0")) return false;
boolean r;
Marker m = enter_section_(b);
r = consumeToken(b, EQUALS);
r = r && typedeclnorm_2_0_1(b, l + 1);
exit_section_(b, m, null, r);
return r;
}
// typee|foralltype
private static boolean typedeclnorm_2_0_1(PsiBuilder b, int l) {
if (!recursion_guard_(b, l, "typedeclnorm_2_0_1")) return false;
boolean r;
Marker m = enter_section_(b);
r = typee(b, l + 1);
if (!r) r = foralltype(b, l + 1);
exit_section_(b, m, null, r);
return r;
}
/* ********************************************************** */
// btype [typeeaux]
public static boolean typee(PsiBuilder b, int l) {
if (!recursion_guard_(b, l, "typee")) return false;
boolean r, p;
Marker m = enter_section_(b, l, _NONE_, TYPEE, "<typee>");
r = btype(b, l + 1);
p = r; // pin = 1
r = r && typee_1(b, l + 1);
exit_section_(b, l, m, r, p, null);
return r || p;
}
// [typeeaux]
private static boolean typee_1(PsiBuilder b, int l) {
if (!recursion_guard_(b, l, "typee_1")) return false;
typeeaux(b, l + 1);
return true;
}
/* ********************************************************** */
// (singlequote (qconop | varop) | qtyconop) typee
// | typeeopt
static boolean typeeaux(PsiBuilder b, int l) {
if (!recursion_guard_(b, l, "typeeaux")) return false;
boolean r;
Marker m = enter_section_(b);
r = typeeaux_0(b, l + 1);
if (!r) r = typeeopt(b, l + 1);
exit_section_(b, m, null, r);
return r;
}
// (singlequote (qconop | varop) | qtyconop) typee
private static boolean typeeaux_0(PsiBuilder b, int l) {
if (!recursion_guard_(b, l, "typeeaux_0")) return false;
boolean r;
Marker m = enter_section_(b);
r = typeeaux_0_0(b, l + 1);
r = r && typee(b, l + 1);
exit_section_(b, m, null, r);
return r;
}
// singlequote (qconop | varop) | qtyconop
private static boolean typeeaux_0_0(PsiBuilder b, int l) {
if (!recursion_guard_(b, l, "typeeaux_0_0")) return false;
boolean r;
Marker m = enter_section_(b);
r = typeeaux_0_0_0(b, l + 1);
if (!r) r = qtyconop(b, l + 1);
exit_section_(b, m, null, r);
return r;
}
// singlequote (qconop | varop)
private static boolean typeeaux_0_0_0(PsiBuilder b, int l) {
if (!recursion_guard_(b, l, "typeeaux_0_0_0")) return false;
boolean r;
Marker m = enter_section_(b);
r = consumeToken(b, SINGLEQUOTE);
r = r && typeeaux_0_0_0_1(b, l + 1);
exit_section_(b, m, null, r);
return r;
}
// qconop | varop
private static boolean typeeaux_0_0_0_1(PsiBuilder b, int l) {
if (!recursion_guard_(b, l, "typeeaux_0_0_0_1")) return false;
boolean r;
Marker m = enter_section_(b);
r = qconop(b, l + 1);
if (!r) r = varop(b, l + 1);
exit_section_(b, m, null, r);
return r;
}
/* ********************************************************** */
// "->" typee
static boolean typeeopt(PsiBuilder b, int l) {
if (!recursion_guard_(b, l, "typeeopt")) return false;
if (!nextTokenIs(b, RIGHTARROW)) return false;
boolean r, p;
Marker m = enter_section_(b, l, _NONE_);
r = consumeToken(b, RIGHTARROW);
p = r; // pin = 1
r = r && typee(b, l + 1);
exit_section_(b, l, m, r, p, null);
return r || p;
}
/* ********************************************************** */
// varid
public static boolean tyvar(PsiBuilder b, int l) {
if (!recursion_guard_(b, l, "tyvar")) return false;
boolean r;
Marker m = enter_section_(b, l, _NONE_, TYVAR, "<tyvar>");
r = varid(b, l + 1);
exit_section_(b, l, m, r, false, null);
return r;
}
/* ********************************************************** */
// varid | '(' varsym ')'
static boolean var(PsiBuilder b, int l) {
if (!recursion_guard_(b, l, "var")) return false;
boolean r;
Marker m = enter_section_(b);
r = varid(b, l + 1);
if (!r) r = var_1(b, l + 1);
exit_section_(b, m, null, r);
return r;
}
// '(' varsym ')'
private static boolean var_1(PsiBuilder b, int l) {
if (!recursion_guard_(b, l, "var_1")) return false;
boolean r;
Marker m = enter_section_(b);
r = consumeToken(b, LPAREN);
r = r && varsym(b, l + 1);
r = r && consumeToken(b, RPAREN);
exit_section_(b, m, null, r);
return r;
}
/* ********************************************************** */
// varidRegexp | "as" | "rec" | "qualified"
public static boolean varid(PsiBuilder b, int l) {
if (!recursion_guard_(b, l, "varid")) return false;
boolean r;
Marker m = enter_section_(b, l, _NONE_, VARID, "<varid>");
r = consumeToken(b, VARIDREGEXP);
if (!r) r = consumeToken(b, AS);
if (!r) r = consumeToken(b, RECTOK);
if (!r) r = consumeToken(b, QUALIFIED);
exit_section_(b, l, m, r, false, null);
return r;
}
/* ********************************************************** */
// varsym | '`' varid '`'
public static boolean varop(PsiBuilder b, int l) {
if (!recursion_guard_(b, l, "varop")) return false;
boolean r;
Marker m = enter_section_(b, l, _NONE_, VAROP, "<varop>");
r = varsym(b, l + 1);
if (!r) r = varop_1(b, l + 1);
exit_section_(b, l, m, r, false, null);
return r;
}
// '`' varid '`'
private static boolean varop_1(PsiBuilder b, int l) {
if (!recursion_guard_(b, l, "varop_1")) return false;
boolean r;
Marker m = enter_section_(b);
r = consumeToken(b, BACKTICK);
r = r && varid(b, l + 1);
r = r && consumeToken(b, BACKTICK);
exit_section_(b, m, null, r);
return r;
}
/* ********************************************************** */
// <<sequence var>>
public static boolean vars(PsiBuilder b, int l) {
if (!recursion_guard_(b, l, "vars")) return false;
boolean r;
Marker m = enter_section_(b, l, _NONE_, VARS, "<vars>");
r = sequence(b, l + 1, var_parser_);
exit_section_(b, l, m, r, false, null);
return r;
}
/* ********************************************************** */
// VARSYMTOK | symbol1
public static boolean varsym(PsiBuilder b, int l) {
if (!recursion_guard_(b, l, "varsym")) return false;
boolean r;
Marker m = enter_section_(b, l, _NONE_, VARSYM, "<varsym>");
r = consumeToken(b, VARSYMTOK);
if (!r) r = symbol1(b, l + 1);
exit_section_(b, l, m, r, false, null);
return r;
}
/* ********************************************************** */
// "where" decls
static boolean wheredecls(PsiBuilder b, int l) {
if (!recursion_guard_(b, l, "wheredecls")) return false;
if (!nextTokenIs(b, WHERE)) return false;
boolean r, p;
Marker m = enter_section_(b, l, _NONE_);
r = consumeToken(b, WHERE);
p = r; // pin = 1
r = r && decls(b, l + 1);
exit_section_(b, l, m, r, p, null);
return r || p;
}
final static Parser FALSE_parser_ = new Parser() {
public boolean parse(PsiBuilder b, int l) {
return consumeToken(b, FALSE);
}
};
final static Parser TRUE_parser_ = new Parser() {
public boolean parse(PsiBuilder b, int l) {
return consumeToken(b, TRUE);
}
};
final static Parser cname_parser_ = new Parser() {
public boolean parse(PsiBuilder b, int l) {
return cname(b, l + 1);
}
};
final static Parser con_parser_ = new Parser() {
public boolean parse(PsiBuilder b, int l) {
return con(b, l + 1);
}
};
final static Parser ctype_parser_ = new Parser() {
public boolean parse(PsiBuilder b, int l) {
return ctype(b, l + 1);
}
};
final static Parser dclass_parser_ = new Parser() {
public boolean parse(PsiBuilder b, int l) {
return dclass(b, l + 1);
}
};
final static Parser exports_0_0_parser_ = new Parser() {
public boolean parse(PsiBuilder b, int l) {
return exports_0_0(b, l + 1);
}
};
final static Parser fundep_parser_ = new Parser() {
public boolean parse(PsiBuilder b, int l) {
return fundep(b, l + 1);
}
};
final static Parser impspec_0_2_0_0_parser_ = new Parser() {
public boolean parse(PsiBuilder b, int l) {
return impspec_0_2_0_0(b, l + 1);
}
};
final static Parser op_parser_ = new Parser() {
public boolean parse(PsiBuilder b, int l) {
return op(b, l + 1);
}
};
final static Parser qvar_parser_ = new Parser() {
public boolean parse(PsiBuilder b, int l) {
return qvar(b, l + 1);
}
};
final static Parser typee_parser_ = new Parser() {
public boolean parse(PsiBuilder b, int l) {
return typee(b, l + 1);
}
};
final static Parser var_parser_ = new Parser() {
public boolean parse(PsiBuilder b, int l) {
return var(b, l + 1);
}
};
}