//\\ P<SS> = 
//\\    <UI> <SETMARKER2> <RESTOF_SS1>,
//\\    'c' 'y' 'c' 'l' 'e' <NAME> <APP> '=' <Opt_Plus> <OPERAND> <RESTOF_EXPR> ',' <Opt_Plus> <OPERAND> <RESTOF_EXPR> ',' <Opt_Plus> <OPERAND> <RESTOF_EXPR> <S>,
//\\    'r' 'e' 'p' 'e' 'a' 't' <S>,
//\\    <N> ':',
//\\    <Percent_IU> <SC> <RESTOF_COND> 't' 'h' 'e' 'n' <UI> <S>,
//\\    '!' <TEXT>,
//\\    <TYPE> <NAME> <RESTOF_NAMELIST> <S>,
//\\    'e' 'n' 'd' <S>,
//\\    <RT> <Opt_Percent_SPEC> <NAME> <FPP> <S>,
//\\    's' 'p' 'e' 'c' <NAME> <FPP> <S>,
//\\    'c' 'o' 'm' 'm' 'e' 'n' 't' <TEXT>,
//\\    <Opt_TYPE> 'a' 'r' 'r' 'a' 'y' <NAME> <RESTOF_NAMELIST> '(' <Opt_Plus> <OPERAND> <RESTOF_EXPR> ':' <Opt_Plus> <OPERAND> <RESTOF_EXPR> <RESTOF_FPP_LIST> ')' <RESTOF_ARRAYLIST> <S>,
//\\    '*' '*' '*' 'A' <S>,
//\\    'b' 'e' 'g' 'i' 'n' <S>,
//\\    'e' 'n' 'd' 'o' 'f' 'p' 'r' 'o' 'g' 'r' 'a' 'm',
//\\    'u' 'p' 'p' 'e' 'r' 'c' 'a' 's' 'e' 'd' 'e' 'l' 'i' 'm' 'i' 't' 'e' 'r' 's' <S>,
//\\    <NAME> '(' <Opt_Plus> <CONST> ')' ':',
//\\    's' 'w' 'i' 't' 'c' 'h' <NAME> <RESTOF_NAMELIST> '(' <Opt_Plus> <CONST> ':' <CONST> ')' <RESTOF_SWITCHLIST> <S>,
//\\    'c' 'o' 'm' 'p' 'i' 'l' 'e' 'q' 'u' 'e' 'r' 'i' 'e' 's' <S>,
//\\    'i' 'g' 'n' 'o' 'r' 'e' 'q' 'u' 'e' 'r' 'i' 'e' 's' <S>,
//\\    'm' 'c' 'o' 'd' 'e' <S>,
//\\    <N> 'P' ':',
//\\    '*' <UCI> <S>,
//\\    'f' 'a' 'u' 'l' 't' <N> <RESTOF_FN_LIST> '-' '>' <N> <RESTOF_FAULTLIST> <S>,
//\\    'n' 'o' 'r' 'm' 'a' 'l' 'd' 'e' 'l' 'i' 'm' 'i' 't' 'e' 'r' 's' <S>,
//\\    's' 't' 'r' 'i' 'n' 'g' 's' <S>,
//\\    'e' 'n' 'd' 'o' 'f' 'p' 'e' 'r' 'm' <S>,
//\\    'e' 'n' 'd' 'o' 'f' 'm' 'c' 'o' 'd' 'e' <S>,
//\\    'd' 'e' 'f' 'i' 'n' 'e' 'c' 'o' 'm' 'p' 'i' 'l' 'e' 'r' <S>,
//\\    <S>;

case P_SS:
  if (alt == 0)        {
    T[1] = build_ast(A[ap+0], depth+1); // <UI>
    T[2] = SETMARKER2(ap+1);
    T[3] = build_ast(A[ap+2], depth+1); // <RESTOF_SS1>
    T[0] = mktuple(phrase /*P_SS*/, alt /*1*/, /*phrases*/ 3, T /*T[1], T[2], T[3]*/);
  } else if (alt == 1) {
    T[1] = lit('c');
    T[2] = lit('y');
    T[3] = lit('c');
    T[4] = lit('l');
    T[5] = lit('e');
    T[6] = NAME(ap+0);
    T[7] = build_ast(A[ap+1], depth+1); // <APP>
    T[8] = lit('=');
    T[9] = build_ast(A[ap+2], depth+1); // <Opt_Plus>
    T[10] = build_ast(A[ap+3], depth+1); // <OPERAND>
    T[11] = build_ast(A[ap+4], depth+1); // <RESTOF_EXPR>
    T[12] = lit(',');
    T[13] = build_ast(A[ap+5], depth+1); // <Opt_Plus>
    T[14] = build_ast(A[ap+6], depth+1); // <OPERAND>
    T[15] = build_ast(A[ap+7], depth+1); // <RESTOF_EXPR>
    T[16] = lit(',');
    T[17] = build_ast(A[ap+8], depth+1); // <Opt_Plus>
    T[18] = build_ast(A[ap+9], depth+1); // <OPERAND>
    T[19] = build_ast(A[ap+10], depth+1); // <RESTOF_EXPR>
    T[20] = S(ap+11);
    T[0] = mktuple(phrase /*P_SS*/, alt /*2*/, /*phrases*/ 20, T /*T[1], T[2], T[3], T[4], T[5], T[6], T[7], T[8], T[9], T[10], T[11], T[12], T[13], T[14], T[15], T[16], T[17], T[18], T[19], T[20]*/);
  } else if (alt == 2) {
    T[1] = lit('r');
    T[2] = lit('e');
    T[3] = lit('p');
    T[4] = lit('e');
    T[5] = lit('a');
    T[6] = lit('t');
    T[7] = S(ap+0);
    T[0] = mktuple(phrase /*P_SS*/, alt /*3*/, /*phrases*/ 7, T /*T[1], T[2], T[3], T[4], T[5], T[6], T[7]*/);
  } else if (alt == 3) {
    T[1] = N(ap+0);
    T[2] = lit(':');
    T[0] = mktuple(phrase /*P_SS*/, alt /*4*/, /*phrases*/ 2, T /*T[1], T[2]*/);
  } else if (alt == 4) {
    T[1] = build_ast(A[ap+0], depth+1); // <Percent_IU>
    T[2] = build_ast(A[ap+1], depth+1); // <SC>
    T[3] = build_ast(A[ap+2], depth+1); // <RESTOF_COND>
    T[4] = lit('t');
    T[5] = lit('h');
    T[6] = lit('e');
    T[7] = lit('n');
    T[8] = build_ast(A[ap+3], depth+1); // <UI>
    T[9] = S(ap+4);
    T[0] = mktuple(phrase /*P_SS*/, alt /*5*/, /*phrases*/ 9, T /*T[1], T[2], T[3], T[4], T[5], T[6], T[7], T[8], T[9]*/);
  } else if (alt == 5) {
    T[1] = lit('!');
    T[2] = TEXT(ap+0);
    T[0] = mktuple(phrase /*P_SS*/, alt /*6*/, /*phrases*/ 2, T /*T[1], T[2]*/);
  } else if (alt == 6) {
    T[1] = build_ast(A[ap+0], depth+1); // <TYPE>
    T[2] = NAME(ap+1);
    T[3] = build_ast(A[ap+2], depth+1); // <RESTOF_NAMELIST>
    T[4] = S(ap+3);
    T[0] = mktuple(phrase /*P_SS*/, alt /*7*/, /*phrases*/ 4, T /*T[1], T[2], T[3], T[4]*/);
  } else if (alt == 7) {
    T[1] = lit('e');
    T[2] = lit('n');
    T[3] = lit('d');
    T[4] = S(ap+0);
    T[0] = mktuple(phrase /*P_SS*/, alt /*8*/, /*phrases*/ 4, T /*T[1], T[2], T[3], T[4]*/);
  } else if (alt == 8) {
    T[1] = build_ast(A[ap+0], depth+1); // <RT>
    T[2] = build_ast(A[ap+1], depth+1); // <Opt_Percent_SPEC>
    T[3] = NAME(ap+2);
    T[4] = build_ast(A[ap+3], depth+1); // <FPP>
    T[5] = S(ap+4);
    T[0] = mktuple(phrase /*P_SS*/, alt /*9*/, /*phrases*/ 5, T /*T[1], T[2], T[3], T[4], T[5]*/);
  } else if (alt == 9) {
    T[1] = lit('s');
    T[2] = lit('p');
    T[3] = lit('e');
    T[4] = lit('c');
    T[5] = NAME(ap+0);
    T[6] = build_ast(A[ap+1], depth+1); // <FPP>
    T[7] = S(ap+2);
    T[0] = mktuple(phrase /*P_SS*/, alt /*10*/, /*phrases*/ 7, T /*T[1], T[2], T[3], T[4], T[5], T[6], T[7]*/);
  } else if (alt == 10) {
    T[1] = lit('c');
    T[2] = lit('o');
    T[3] = lit('m');
    T[4] = lit('m');
    T[5] = lit('e');
    T[6] = lit('n');
    T[7] = lit('t');
    T[8] = TEXT(ap+0);
    T[0] = mktuple(phrase /*P_SS*/, alt /*11*/, /*phrases*/ 8, T /*T[1], T[2], T[3], T[4], T[5], T[6], T[7], T[8]*/);
  } else if (alt == 11) {
    T[1] = build_ast(A[ap+0], depth+1); // <Opt_TYPE>
    T[2] = lit('a');
    T[3] = lit('r');
    T[4] = lit('r');
    T[5] = lit('a');
    T[6] = lit('y');
    T[7] = NAME(ap+1);
    T[8] = build_ast(A[ap+2], depth+1); // <RESTOF_NAMELIST>
    T[9] = lit('(');
    T[10] = build_ast(A[ap+3], depth+1); // <Opt_Plus>
    T[11] = build_ast(A[ap+4], depth+1); // <OPERAND>
    T[12] = build_ast(A[ap+5], depth+1); // <RESTOF_EXPR>
    T[13] = lit(':');
    T[14] = build_ast(A[ap+6], depth+1); // <Opt_Plus>
    T[15] = build_ast(A[ap+7], depth+1); // <OPERAND>
    T[16] = build_ast(A[ap+8], depth+1); // <RESTOF_EXPR>
    T[17] = build_ast(A[ap+9], depth+1); // <RESTOF_FPP_LIST>
    T[18] = lit(')');
    T[19] = build_ast(A[ap+10], depth+1); // <RESTOF_ARRAYLIST>
    T[20] = S(ap+11);
    T[0] = mktuple(phrase /*P_SS*/, alt /*12*/, /*phrases*/ 20, T /*T[1], T[2], T[3], T[4], T[5], T[6], T[7], T[8], T[9], T[10], T[11], T[12], T[13], T[14], T[15], T[16], T[17], T[18], T[19], T[20]*/);
  } else if (alt == 12) {
    T[1] = lit('*');
    T[2] = lit('*');
    T[3] = lit('*');
    T[4] = lit('A');
    T[5] = S(ap+0);
    T[0] = mktuple(phrase /*P_SS*/, alt /*13*/, /*phrases*/ 5, T /*T[1], T[2], T[3], T[4], T[5]*/);
  } else if (alt == 13) {
    T[1] = lit('b');
    T[2] = lit('e');
    T[3] = lit('g');
    T[4] = lit('i');
    T[5] = lit('n');
    T[6] = S(ap+0);
    T[0] = mktuple(phrase /*P_SS*/, alt /*14*/, /*phrases*/ 6, T /*T[1], T[2], T[3], T[4], T[5], T[6]*/);
  } else if (alt == 14) {
    T[1] = lit('e');
    T[2] = lit('n');
    T[3] = lit('d');
    T[4] = lit('o');
    T[5] = lit('f');
    T[6] = lit('p');
    T[7] = lit('r');
    T[8] = lit('o');
    T[9] = lit('g');
    T[10] = lit('r');
    T[11] = lit('a');
    T[12] = lit('m');
    T[0] = mktuple(phrase /*P_SS*/, alt /*15*/, /*phrases*/ 12, T /*T[1], T[2], T[3], T[4], T[5], T[6], T[7], T[8], T[9], T[10], T[11], T[12]*/);
  } else if (alt == 15) {
    T[1] = lit('u');
    T[2] = lit('p');
    T[3] = lit('p');
    T[4] = lit('e');
    T[5] = lit('r');
    T[6] = lit('c');
    T[7] = lit('a');
    T[8] = lit('s');
    T[9] = lit('e');
    T[10] = lit('d');
    T[11] = lit('e');
    T[12] = lit('l');
    T[13] = lit('i');
    T[14] = lit('m');
    T[15] = lit('i');
    T[16] = lit('t');
    T[17] = lit('e');
    T[18] = lit('r');
    T[19] = lit('s');
    T[20] = S(ap+0);
    T[0] = mktuple(phrase /*P_SS*/, alt /*16*/, /*phrases*/ 20, T /*T[1], T[2], T[3], T[4], T[5], T[6], T[7], T[8], T[9], T[10], T[11], T[12], T[13], T[14], T[15], T[16], T[17], T[18], T[19], T[20]*/);
  } else if (alt == 16) {
    T[1] = NAME(ap+0);
    T[2] = lit('(');
    T[3] = build_ast(A[ap+1], depth+1); // <Opt_Plus>
    T[4] = CONST(ap+2);
    T[5] = lit(')');
    T[6] = lit(':');
    T[0] = mktuple(phrase /*P_SS*/, alt /*17*/, /*phrases*/ 6, T /*T[1], T[2], T[3], T[4], T[5], T[6]*/);
  } else if (alt == 17) {
    T[1] = lit('s');
    T[2] = lit('w');
    T[3] = lit('i');
    T[4] = lit('t');
    T[5] = lit('c');
    T[6] = lit('h');
    T[7] = NAME(ap+0);
    T[8] = build_ast(A[ap+1], depth+1); // <RESTOF_NAMELIST>
    T[9] = lit('(');
    T[10] = build_ast(A[ap+2], depth+1); // <Opt_Plus>
    T[11] = CONST(ap+3);
    T[12] = lit(':');
    T[13] = CONST(ap+4);
    T[14] = lit(')');
    T[15] = build_ast(A[ap+5], depth+1); // <RESTOF_SWITCHLIST>
    T[16] = S(ap+6);
    T[0] = mktuple(phrase /*P_SS*/, alt /*18*/, /*phrases*/ 16, T /*T[1], T[2], T[3], T[4], T[5], T[6], T[7], T[8], T[9], T[10], T[11], T[12], T[13], T[14], T[15], T[16]*/);
  } else if (alt == 18) {
    T[1] = lit('c');
    T[2] = lit('o');
    T[3] = lit('m');
    T[4] = lit('p');
    T[5] = lit('i');
    T[6] = lit('l');
    T[7] = lit('e');
    T[8] = lit('q');
    T[9] = lit('u');
    T[10] = lit('e');
    T[11] = lit('r');
    T[12] = lit('i');
    T[13] = lit('e');
    T[14] = lit('s');
    T[15] = S(ap+0);
    T[0] = mktuple(phrase /*P_SS*/, alt /*19*/, /*phrases*/ 15, T /*T[1], T[2], T[3], T[4], T[5], T[6], T[7], T[8], T[9], T[10], T[11], T[12], T[13], T[14], T[15]*/);
  } else if (alt == 19) {
    T[1] = lit('i');
    T[2] = lit('g');
    T[3] = lit('n');
    T[4] = lit('o');
    T[5] = lit('r');
    T[6] = lit('e');
    T[7] = lit('q');
    T[8] = lit('u');
    T[9] = lit('e');
    T[10] = lit('r');
    T[11] = lit('i');
    T[12] = lit('e');
    T[13] = lit('s');
    T[14] = S(ap+0);
    T[0] = mktuple(phrase /*P_SS*/, alt /*20*/, /*phrases*/ 14, T /*T[1], T[2], T[3], T[4], T[5], T[6], T[7], T[8], T[9], T[10], T[11], T[12], T[13], T[14]*/);
  } else if (alt == 20) {
    T[1] = lit('m');
    T[2] = lit('c');
    T[3] = lit('o');
    T[4] = lit('d');
    T[5] = lit('e');
    T[6] = S(ap+0);
    T[0] = mktuple(phrase /*P_SS*/, alt /*21*/, /*phrases*/ 6, T /*T[1], T[2], T[3], T[4], T[5], T[6]*/);
  } else if (alt == 21) {
    T[1] = N(ap+0);
    T[2] = lit('P');
    T[3] = lit(':');
    T[0] = mktuple(phrase /*P_SS*/, alt /*22*/, /*phrases*/ 3, T /*T[1], T[2], T[3]*/);
  } else if (alt == 22) {
    T[1] = lit('*');
    T[2] = build_ast(A[ap+0], depth+1); // <UCI>
    T[3] = S(ap+1);
    T[0] = mktuple(phrase /*P_SS*/, alt /*23*/, /*phrases*/ 3, T /*T[1], T[2], T[3]*/);
  } else if (alt == 23) {
    T[1] = lit('f');
    T[2] = lit('a');
    T[3] = lit('u');
    T[4] = lit('l');
    T[5] = lit('t');
    T[6] = N(ap+0);
    T[7] = build_ast(A[ap+1], depth+1); // <RESTOF_FN_LIST>
    T[8] = lit('-');
    T[9] = lit('>');
    T[10] = N(ap+2);
    T[11] = build_ast(A[ap+3], depth+1); // <RESTOF_FAULTLIST>
    T[12] = S(ap+4);
    T[0] = mktuple(phrase /*P_SS*/, alt /*24*/, /*phrases*/ 12, T /*T[1], T[2], T[3], T[4], T[5], T[6], T[7], T[8], T[9], T[10], T[11], T[12]*/);
  } else if (alt == 24) {
    T[1] = lit('n');
    T[2] = lit('o');
    T[3] = lit('r');
    T[4] = lit('m');
    T[5] = lit('a');
    T[6] = lit('l');
    T[7] = lit('d');
    T[8] = lit('e');
    T[9] = lit('l');
    T[10] = lit('i');
    T[11] = lit('m');
    T[12] = lit('i');
    T[13] = lit('t');
    T[14] = lit('e');
    T[15] = lit('r');
    T[16] = lit('s');
    T[17] = S(ap+0);
    T[0] = mktuple(phrase /*P_SS*/, alt /*25*/, /*phrases*/ 17, T /*T[1], T[2], T[3], T[4], T[5], T[6], T[7], T[8], T[9], T[10], T[11], T[12], T[13], T[14], T[15], T[16], T[17]*/);
  } else if (alt == 25) {
    T[1] = lit('s');
    T[2] = lit('t');
    T[3] = lit('r');
    T[4] = lit('i');
    T[5] = lit('n');
    T[6] = lit('g');
    T[7] = lit('s');
    T[8] = S(ap+0);
    T[0] = mktuple(phrase /*P_SS*/, alt /*26*/, /*phrases*/ 8, T /*T[1], T[2], T[3], T[4], T[5], T[6], T[7], T[8]*/);
  } else if (alt == 26) {
    T[1] = lit('e');
    T[2] = lit('n');
    T[3] = lit('d');
    T[4] = lit('o');
    T[5] = lit('f');
    T[6] = lit('p');
    T[7] = lit('e');
    T[8] = lit('r');
    T[9] = lit('m');
    T[10] = S(ap+0);
    T[0] = mktuple(phrase /*P_SS*/, alt /*27*/, /*phrases*/ 10, T /*T[1], T[2], T[3], T[4], T[5], T[6], T[7], T[8], T[9], T[10]*/);
  } else if (alt == 27) {
    T[1] = lit('e');
    T[2] = lit('n');
    T[3] = lit('d');
    T[4] = lit('o');
    T[5] = lit('f');
    T[6] = lit('m');
    T[7] = lit('c');
    T[8] = lit('o');
    T[9] = lit('d');
    T[10] = lit('e');
    T[11] = S(ap+0);
    T[0] = mktuple(phrase /*P_SS*/, alt /*28*/, /*phrases*/ 11, T /*T[1], T[2], T[3], T[4], T[5], T[6], T[7], T[8], T[9], T[10], T[11]*/);
  } else if (alt == 28) {
    T[1] = lit('d');
    T[2] = lit('e');
    T[3] = lit('f');
    T[4] = lit('i');
    T[5] = lit('n');
    T[6] = lit('e');
    T[7] = lit('c');
    T[8] = lit('o');
    T[9] = lit('m');
    T[10] = lit('p');
    T[11] = lit('i');
    T[12] = lit('l');
    T[13] = lit('e');
    T[14] = lit('r');
    T[15] = S(ap+0);
    T[0] = mktuple(phrase /*P_SS*/, alt /*29*/, /*phrases*/ 15, T /*T[1], T[2], T[3], T[4], T[5], T[6], T[7], T[8], T[9], T[10], T[11], T[12], T[13], T[14], T[15]*/);
  } else               {
    T[1] = S(ap+0);
    T[0] = mktuple(phrase /*P_SS*/, alt /*30*/, /*phrases*/ 1, T /*T[1]*/);
  }
  return T[0];



 
//\\ P<Opt_Plus> = 
//\\    '+',
//\\    '-',
//\\   ;

case P_Opt_Plus:
  if (alt == 0)        {
    T[1] = lit('+');
    T[0] = mktuple(phrase /*P_Opt_Plus*/, alt /*1*/, /*phrases*/ 1, T /*T[1]*/);
  } else if (alt == 1) {
    T[1] = lit('-');
    T[0] = mktuple(phrase /*P_Opt_Plus*/, alt /*2*/, /*phrases*/ 1, T /*T[1]*/);
  } else               {
    T[0] = mktuple(phrase /*P_Opt_Plus*/, alt /*3*/, /*phrases*/ 0, T /**/);
  }
  return T[0];



 
//\\ P<OPERAND> = 
//\\    <NAME> <APP>,
//\\    <CONST>,
//\\    '(' <Opt_Plus> <OPERAND> <RESTOF_EXPR> ')',
//\\    '!' <Opt_Plus> <OPERAND> <RESTOF_EXPR> '!';

case P_OPERAND:
  if (alt == 0)        {
    T[1] = NAME(ap+0);
    T[2] = build_ast(A[ap+1], depth+1); // <APP>
    T[0] = mktuple(phrase /*P_OPERAND*/, alt /*1*/, /*phrases*/ 2, T /*T[1], T[2]*/);
  } else if (alt == 1) {
    T[1] = CONST(ap+0);
    T[0] = mktuple(phrase /*P_OPERAND*/, alt /*2*/, /*phrases*/ 1, T /*T[1]*/);
  } else if (alt == 2) {
    T[1] = lit('(');
    T[2] = build_ast(A[ap+0], depth+1); // <Opt_Plus>
    T[3] = build_ast(A[ap+1], depth+1); // <OPERAND>
    T[4] = build_ast(A[ap+2], depth+1); // <RESTOF_EXPR>
    T[5] = lit(')');
    T[0] = mktuple(phrase /*P_OPERAND*/, alt /*3*/, /*phrases*/ 5, T /*T[1], T[2], T[3], T[4], T[5]*/);
  } else               {
    T[1] = lit('!');
    T[2] = build_ast(A[ap+0], depth+1); // <Opt_Plus>
    T[3] = build_ast(A[ap+1], depth+1); // <OPERAND>
    T[4] = build_ast(A[ap+2], depth+1); // <RESTOF_EXPR>
    T[5] = lit('!');
    T[0] = mktuple(phrase /*P_OPERAND*/, alt /*4*/, /*phrases*/ 5, T /*T[1], T[2], T[3], T[4], T[5]*/);
  }
  return T[0];



 
//\\ P<RESTOF_EXPR> = 
//\\    <OP> <OPERAND> <RESTOF_EXPR>,
//\\   ;

case P_RESTOF_EXPR:
  if (alt == 0)        {
    T[1] = build_ast(A[ap+0], depth+1); // <OP>
    T[2] = build_ast(A[ap+1], depth+1); // <OPERAND>
    T[3] = build_ast(A[ap+2], depth+1); // <RESTOF_EXPR>
    T[0] = mktuple(phrase /*P_RESTOF_EXPR*/, alt /*1*/, /*phrases*/ 3, T /*T[1], T[2], T[3]*/);
  } else               {
    T[0] = mktuple(phrase /*P_RESTOF_EXPR*/, alt /*2*/, /*phrases*/ 0, T /**/);
  }
  return T[0];



 
//\\ P<APP> = 
//\\    '(' <Opt_Plus> <OPERAND> <RESTOF_EXPR> <RESTOF_EXPR_LIST> ')',
//\\   ;

case P_APP:
  if (alt == 0)        {
    T[1] = lit('(');
    T[2] = build_ast(A[ap+0], depth+1); // <Opt_Plus>
    T[3] = build_ast(A[ap+1], depth+1); // <OPERAND>
    T[4] = build_ast(A[ap+2], depth+1); // <RESTOF_EXPR>
    T[5] = build_ast(A[ap+3], depth+1); // <RESTOF_EXPR_LIST>
    T[6] = lit(')');
    T[0] = mktuple(phrase /*P_APP*/, alt /*1*/, /*phrases*/ 6, T /*T[1], T[2], T[3], T[4], T[5], T[6]*/);
  } else               {
    T[0] = mktuple(phrase /*P_APP*/, alt /*2*/, /*phrases*/ 0, T /**/);
  }
  return T[0];



 
//\\ P<RESTOF_EXPR_LIST> = 
//\\    ',' <Opt_Plus> <OPERAND> <RESTOF_EXPR> <RESTOF_EXPR_LIST>,
//\\   ;

case P_RESTOF_EXPR_LIST:
  if (alt == 0)        {
    T[1] = lit(',');
    T[2] = build_ast(A[ap+0], depth+1); // <Opt_Plus>
    T[3] = build_ast(A[ap+1], depth+1); // <OPERAND>
    T[4] = build_ast(A[ap+2], depth+1); // <RESTOF_EXPR>
    T[5] = build_ast(A[ap+3], depth+1); // <RESTOF_EXPR_LIST>
    T[0] = mktuple(phrase /*P_RESTOF_EXPR_LIST*/, alt /*1*/, /*phrases*/ 5, T /*T[1], T[2], T[3], T[4], T[5]*/);
  } else               {
    T[0] = mktuple(phrase /*P_RESTOF_EXPR_LIST*/, alt /*2*/, /*phrases*/ 0, T /**/);
  }
  return T[0];



 
//\\ P<OP> = 
//\\    '+',
//\\    '-',
//\\    '*',
//\\    '/',
//\\    '^',
//\\   ;

case P_OP:
  if (alt == 0)        {
    T[1] = lit('+');
    T[0] = mktuple(phrase /*P_OP*/, alt /*1*/, /*phrases*/ 1, T /*T[1]*/);
  } else if (alt == 1) {
    T[1] = lit('-');
    T[0] = mktuple(phrase /*P_OP*/, alt /*2*/, /*phrases*/ 1, T /*T[1]*/);
  } else if (alt == 2) {
    T[1] = lit('*');
    T[0] = mktuple(phrase /*P_OP*/, alt /*3*/, /*phrases*/ 1, T /*T[1]*/);
  } else if (alt == 3) {
    T[1] = lit('/');
    T[0] = mktuple(phrase /*P_OP*/, alt /*4*/, /*phrases*/ 1, T /*T[1]*/);
  } else if (alt == 4) {
    T[1] = lit('^');
    T[0] = mktuple(phrase /*P_OP*/, alt /*5*/, /*phrases*/ 1, T /*T[1]*/);
  } else               {
    T[0] = mktuple(phrase /*P_OP*/, alt /*6*/, /*phrases*/ 0, T /**/);
  }
  return T[0];



 
//\\ P<Opt_QUERY> = 
//\\    '?',
//\\   ;

case P_Opt_QUERY:
  if (alt == 0)        {
    T[1] = lit('?');
    T[0] = mktuple(phrase /*P_Opt_QUERY*/, alt /*1*/, /*phrases*/ 1, T /*T[1]*/);
  } else               {
    T[0] = mktuple(phrase /*P_Opt_QUERY*/, alt /*2*/, /*phrases*/ 0, T /**/);
  }
  return T[0];



 
//\\ P<Opt_Comma> = 
//\\    ',',
//\\   ;

case P_Opt_Comma:
  if (alt == 0)        {
    T[1] = lit(',');
    T[0] = mktuple(phrase /*P_Opt_Comma*/, alt /*1*/, /*phrases*/ 1, T /*T[1]*/);
  } else               {
    T[0] = mktuple(phrase /*P_Opt_Comma*/, alt /*2*/, /*phrases*/ 0, T /**/);
  }
  return T[0];



 
//\\ P<Percent_IU> = 
//\\    'i' 'f',
//\\    'u' 'n' 'l' 'e' 's' 's';

case P_Percent_IU:
  if (alt == 0)        {
    T[1] = lit('i');
    T[2] = lit('f');
    T[0] = mktuple(phrase /*P_Percent_IU*/, alt /*1*/, /*phrases*/ 2, T /*T[1], T[2]*/);
  } else               {
    T[1] = lit('u');
    T[2] = lit('n');
    T[3] = lit('l');
    T[4] = lit('e');
    T[5] = lit('s');
    T[6] = lit('s');
    T[0] = mktuple(phrase /*P_Percent_IU*/, alt /*2*/, /*phrases*/ 6, T /*T[1], T[2], T[3], T[4], T[5], T[6]*/);
  }
  return T[0];



 
//\\ P<Opt_Percent_REAL> = 
//\\    'r' 'e' 'a' 'l',
//\\   ;

case P_Opt_Percent_REAL:
  if (alt == 0)        {
    T[1] = lit('r');
    T[2] = lit('e');
    T[3] = lit('a');
    T[4] = lit('l');
    T[0] = mktuple(phrase /*P_Opt_Percent_REAL*/, alt /*1*/, /*phrases*/ 4, T /*T[1], T[2], T[3], T[4]*/);
  } else               {
    T[0] = mktuple(phrase /*P_Opt_Percent_REAL*/, alt /*2*/, /*phrases*/ 0, T /**/);
  }
  return T[0];



 
//\\ P<TYPE> = 
//\\    'i' 'n' 't' 'e' 'g' 'e' 'r',
//\\    'r' 'e' 'a' 'l';

case P_TYPE:
  if (alt == 0)        {
    T[1] = lit('i');
    T[2] = lit('n');
    T[3] = lit('t');
    T[4] = lit('e');
    T[5] = lit('g');
    T[6] = lit('e');
    T[7] = lit('r');
    T[0] = mktuple(phrase /*P_TYPE*/, alt /*1*/, /*phrases*/ 7, T /*T[1], T[2], T[3], T[4], T[5], T[6], T[7]*/);
  } else               {
    T[1] = lit('r');
    T[2] = lit('e');
    T[3] = lit('a');
    T[4] = lit('l');
    T[0] = mktuple(phrase /*P_TYPE*/, alt /*2*/, /*phrases*/ 4, T /*T[1], T[2], T[3], T[4]*/);
  }
  return T[0];



 
//\\ P<Opt_TYPE> = 
//\\    'i' 'n' 't' 'e' 'g' 'e' 'r',
//\\    'r' 'e' 'a' 'l',
//\\   ;

case P_Opt_TYPE:
  if (alt == 0)        {
    T[1] = lit('i');
    T[2] = lit('n');
    T[3] = lit('t');
    T[4] = lit('e');
    T[5] = lit('g');
    T[6] = lit('e');
    T[7] = lit('r');
    T[0] = mktuple(phrase /*P_Opt_TYPE*/, alt /*1*/, /*phrases*/ 7, T /*T[1], T[2], T[3], T[4], T[5], T[6], T[7]*/);
  } else if (alt == 1) {
    T[1] = lit('r');
    T[2] = lit('e');
    T[3] = lit('a');
    T[4] = lit('l');
    T[0] = mktuple(phrase /*P_Opt_TYPE*/, alt /*2*/, /*phrases*/ 4, T /*T[1], T[2], T[3], T[4]*/);
  } else               {
    T[0] = mktuple(phrase /*P_Opt_TYPE*/, alt /*3*/, /*phrases*/ 0, T /**/);
  }
  return T[0];



 
//\\ P<RT> = 
//\\    'r' 'o' 'u' 't' 'i' 'n' 'e',
//\\    'r' 'e' 'a' 'l' 'f' 'n',
//\\    'i' 'n' 't' 'e' 'g' 'e' 'r' 'f' 'n',
//\\    'r' 'e' 'a' 'l' 'm' 'a' 'p',
//\\    'i' 'n' 't' 'e' 'g' 'e' 'r' 'm' 'a' 'p';

case P_RT:
  if (alt == 0)        {
    T[1] = lit('r');
    T[2] = lit('o');
    T[3] = lit('u');
    T[4] = lit('t');
    T[5] = lit('i');
    T[6] = lit('n');
    T[7] = lit('e');
    T[0] = mktuple(phrase /*P_RT*/, alt /*1*/, /*phrases*/ 7, T /*T[1], T[2], T[3], T[4], T[5], T[6], T[7]*/);
  } else if (alt == 1) {
    T[1] = lit('r');
    T[2] = lit('e');
    T[3] = lit('a');
    T[4] = lit('l');
    T[5] = lit('f');
    T[6] = lit('n');
    T[0] = mktuple(phrase /*P_RT*/, alt /*2*/, /*phrases*/ 6, T /*T[1], T[2], T[3], T[4], T[5], T[6]*/);
  } else if (alt == 2) {
    T[1] = lit('i');
    T[2] = lit('n');
    T[3] = lit('t');
    T[4] = lit('e');
    T[5] = lit('g');
    T[6] = lit('e');
    T[7] = lit('r');
    T[8] = lit('f');
    T[9] = lit('n');
    T[0] = mktuple(phrase /*P_RT*/, alt /*3*/, /*phrases*/ 9, T /*T[1], T[2], T[3], T[4], T[5], T[6], T[7], T[8], T[9]*/);
  } else if (alt == 3) {
    T[1] = lit('r');
    T[2] = lit('e');
    T[3] = lit('a');
    T[4] = lit('l');
    T[5] = lit('m');
    T[6] = lit('a');
    T[7] = lit('p');
    T[0] = mktuple(phrase /*P_RT*/, alt /*4*/, /*phrases*/ 7, T /*T[1], T[2], T[3], T[4], T[5], T[6], T[7]*/);
  } else               {
    T[1] = lit('i');
    T[2] = lit('n');
    T[3] = lit('t');
    T[4] = lit('e');
    T[5] = lit('g');
    T[6] = lit('e');
    T[7] = lit('r');
    T[8] = lit('m');
    T[9] = lit('a');
    T[10] = lit('p');
    T[0] = mktuple(phrase /*P_RT*/, alt /*5*/, /*phrases*/ 10, T /*T[1], T[2], T[3], T[4], T[5], T[6], T[7], T[8], T[9], T[10]*/);
  }
  return T[0];



 
//\\ P<FP_DELIMITER> = 
//\\    <RT>,
//\\    'i' 'n' 't' 'e' 'g' 'e' 'r' 'a' 'r' 'r' 'a' 'y' 'n' 'a' 'm' 'e',
//\\    'i' 'n' 't' 'e' 'g' 'e' 'r' 'n' 'a' 'm' 'e',
//\\    'i' 'n' 't' 'e' 'g' 'e' 'r',
//\\    <Opt_Percent_REAL> 'a' 'r' 'r' 'a' 'y' 'n' 'a' 'm' 'e',
//\\    'r' 'e' 'a' 'l' 'n' 'a' 'm' 'e',
//\\    'r' 'e' 'a' 'l',
//\\    'a' 'd' 'd' 'r';

case P_FP_DELIMITER:
  if (alt == 0)        {
    T[1] = build_ast(A[ap+0], depth+1); // <RT>
    T[0] = mktuple(phrase /*P_FP_DELIMITER*/, alt /*1*/, /*phrases*/ 1, T /*T[1]*/);
  } else if (alt == 1) {
    T[1] = lit('i');
    T[2] = lit('n');
    T[3] = lit('t');
    T[4] = lit('e');
    T[5] = lit('g');
    T[6] = lit('e');
    T[7] = lit('r');
    T[8] = lit('a');
    T[9] = lit('r');
    T[10] = lit('r');
    T[11] = lit('a');
    T[12] = lit('y');
    T[13] = lit('n');
    T[14] = lit('a');
    T[15] = lit('m');
    T[16] = lit('e');
    T[0] = mktuple(phrase /*P_FP_DELIMITER*/, alt /*2*/, /*phrases*/ 16, T /*T[1], T[2], T[3], T[4], T[5], T[6], T[7], T[8], T[9], T[10], T[11], T[12], T[13], T[14], T[15], T[16]*/);
  } else if (alt == 2) {
    T[1] = lit('i');
    T[2] = lit('n');
    T[3] = lit('t');
    T[4] = lit('e');
    T[5] = lit('g');
    T[6] = lit('e');
    T[7] = lit('r');
    T[8] = lit('n');
    T[9] = lit('a');
    T[10] = lit('m');
    T[11] = lit('e');
    T[0] = mktuple(phrase /*P_FP_DELIMITER*/, alt /*3*/, /*phrases*/ 11, T /*T[1], T[2], T[3], T[4], T[5], T[6], T[7], T[8], T[9], T[10], T[11]*/);
  } else if (alt == 3) {
    T[1] = lit('i');
    T[2] = lit('n');
    T[3] = lit('t');
    T[4] = lit('e');
    T[5] = lit('g');
    T[6] = lit('e');
    T[7] = lit('r');
    T[0] = mktuple(phrase /*P_FP_DELIMITER*/, alt /*4*/, /*phrases*/ 7, T /*T[1], T[2], T[3], T[4], T[5], T[6], T[7]*/);
  } else if (alt == 4) {
    T[1] = build_ast(A[ap+0], depth+1); // <Opt_Percent_REAL>
    T[2] = lit('a');
    T[3] = lit('r');
    T[4] = lit('r');
    T[5] = lit('a');
    T[6] = lit('y');
    T[7] = lit('n');
    T[8] = lit('a');
    T[9] = lit('m');
    T[10] = lit('e');
    T[0] = mktuple(phrase /*P_FP_DELIMITER*/, alt /*5*/, /*phrases*/ 10, T /*T[1], T[2], T[3], T[4], T[5], T[6], T[7], T[8], T[9], T[10]*/);
  } else if (alt == 5) {
    T[1] = lit('r');
    T[2] = lit('e');
    T[3] = lit('a');
    T[4] = lit('l');
    T[5] = lit('n');
    T[6] = lit('a');
    T[7] = lit('m');
    T[8] = lit('e');
    T[0] = mktuple(phrase /*P_FP_DELIMITER*/, alt /*6*/, /*phrases*/ 8, T /*T[1], T[2], T[3], T[4], T[5], T[6], T[7], T[8]*/);
  } else if (alt == 6) {
    T[1] = lit('r');
    T[2] = lit('e');
    T[3] = lit('a');
    T[4] = lit('l');
    T[0] = mktuple(phrase /*P_FP_DELIMITER*/, alt /*7*/, /*phrases*/ 4, T /*T[1], T[2], T[3], T[4]*/);
  } else               {
    T[1] = lit('a');
    T[2] = lit('d');
    T[3] = lit('d');
    T[4] = lit('r');
    T[0] = mktuple(phrase /*P_FP_DELIMITER*/, alt /*8*/, /*phrases*/ 4, T /*T[1], T[2], T[3], T[4]*/);
  }
  return T[0];



 
//\\ P<FPP> = 
//\\    '(' <FP_DELIMITER> <NAME> <RESTOF_NAMELIST> <RESTOF_FP_LIST> ')',
//\\   ;

case P_FPP:
  if (alt == 0)        {
    T[1] = lit('(');
    T[2] = build_ast(A[ap+0], depth+1); // <FP_DELIMITER>
    T[3] = NAME(ap+1);
    T[4] = build_ast(A[ap+2], depth+1); // <RESTOF_NAMELIST>
    T[5] = build_ast(A[ap+3], depth+1); // <RESTOF_FP_LIST>
    T[6] = lit(')');
    T[0] = mktuple(phrase /*P_FPP*/, alt /*1*/, /*phrases*/ 6, T /*T[1], T[2], T[3], T[4], T[5], T[6]*/);
  } else               {
    T[0] = mktuple(phrase /*P_FPP*/, alt /*2*/, /*phrases*/ 0, T /**/);
  }
  return T[0];



 
//\\ P<RESTOF_FP_LIST> = 
//\\    <Opt_Comma> <FP_DELIMITER> <NAME> <RESTOF_NAMELIST> <RESTOF_FP_LIST>,
//\\   ;

case P_RESTOF_FP_LIST:
  if (alt == 0)        {
    T[1] = build_ast(A[ap+0], depth+1); // <Opt_Comma>
    T[2] = build_ast(A[ap+1], depth+1); // <FP_DELIMITER>
    T[3] = NAME(ap+2);
    T[4] = build_ast(A[ap+3], depth+1); // <RESTOF_NAMELIST>
    T[5] = build_ast(A[ap+4], depth+1); // <RESTOF_FP_LIST>
    T[0] = mktuple(phrase /*P_RESTOF_FP_LIST*/, alt /*1*/, /*phrases*/ 5, T /*T[1], T[2], T[3], T[4], T[5]*/);
  } else               {
    T[0] = mktuple(phrase /*P_RESTOF_FP_LIST*/, alt /*2*/, /*phrases*/ 0, T /**/);
  }
  return T[0];



 
//\\ P<RESTOF_NAMELIST> = 
//\\    ',' <NAME> <RESTOF_NAMELIST>,
//\\   ;

case P_RESTOF_NAMELIST:
  if (alt == 0)        {
    T[1] = lit(',');
    T[2] = NAME(ap+0);
    T[3] = build_ast(A[ap+1], depth+1); // <RESTOF_NAMELIST>
    T[0] = mktuple(phrase /*P_RESTOF_NAMELIST*/, alt /*1*/, /*phrases*/ 3, T /*T[1], T[2], T[3]*/);
  } else               {
    T[0] = mktuple(phrase /*P_RESTOF_NAMELIST*/, alt /*2*/, /*phrases*/ 0, T /**/);
  }
  return T[0];



 
//\\ P<SC> = 
//\\    <Opt_Plus> <OPERAND> <RESTOF_EXPR> <COMP> <Opt_Plus> <OPERAND> <RESTOF_EXPR> <RESTOF_SC>,
//\\    '(' <SC> <RESTOF_COND> ')';

case P_SC:
  if (alt == 0)        {
    T[1] = build_ast(A[ap+0], depth+1); // <Opt_Plus>
    T[2] = build_ast(A[ap+1], depth+1); // <OPERAND>
    T[3] = build_ast(A[ap+2], depth+1); // <RESTOF_EXPR>
    T[4] = build_ast(A[ap+3], depth+1); // <COMP>
    T[5] = build_ast(A[ap+4], depth+1); // <Opt_Plus>
    T[6] = build_ast(A[ap+5], depth+1); // <OPERAND>
    T[7] = build_ast(A[ap+6], depth+1); // <RESTOF_EXPR>
    T[8] = build_ast(A[ap+7], depth+1); // <RESTOF_SC>
    T[0] = mktuple(phrase /*P_SC*/, alt /*1*/, /*phrases*/ 8, T /*T[1], T[2], T[3], T[4], T[5], T[6], T[7], T[8]*/);
  } else               {
    T[1] = lit('(');
    T[2] = build_ast(A[ap+0], depth+1); // <SC>
    T[3] = build_ast(A[ap+1], depth+1); // <RESTOF_COND>
    T[4] = lit(')');
    T[0] = mktuple(phrase /*P_SC*/, alt /*2*/, /*phrases*/ 4, T /*T[1], T[2], T[3], T[4]*/);
  }
  return T[0];



 
//\\ P<RESTOF_SC> = 
//\\    <COMP> <Opt_Plus> <OPERAND> <RESTOF_EXPR>,
//\\   ;

case P_RESTOF_SC:
  if (alt == 0)        {
    T[1] = build_ast(A[ap+0], depth+1); // <COMP>
    T[2] = build_ast(A[ap+1], depth+1); // <Opt_Plus>
    T[3] = build_ast(A[ap+2], depth+1); // <OPERAND>
    T[4] = build_ast(A[ap+3], depth+1); // <RESTOF_EXPR>
    T[0] = mktuple(phrase /*P_RESTOF_SC*/, alt /*1*/, /*phrases*/ 4, T /*T[1], T[2], T[3], T[4]*/);
  } else               {
    T[0] = mktuple(phrase /*P_RESTOF_SC*/, alt /*2*/, /*phrases*/ 0, T /**/);
  }
  return T[0];



 
//\\ P<RESTOF_COND> = 
//\\    'a' 'n' 'd' <SC> <RESTOF_AND_C>,
//\\    'o' 'r' <SC> <RESTOF_OR_C>,
//\\   ;

case P_RESTOF_COND:
  if (alt == 0)        {
    T[1] = lit('a');
    T[2] = lit('n');
    T[3] = lit('d');
    T[4] = build_ast(A[ap+0], depth+1); // <SC>
    T[5] = build_ast(A[ap+1], depth+1); // <RESTOF_AND_C>
    T[0] = mktuple(phrase /*P_RESTOF_COND*/, alt /*1*/, /*phrases*/ 5, T /*T[1], T[2], T[3], T[4], T[5]*/);
  } else if (alt == 1) {
    T[1] = lit('o');
    T[2] = lit('r');
    T[3] = build_ast(A[ap+0], depth+1); // <SC>
    T[4] = build_ast(A[ap+1], depth+1); // <RESTOF_OR_C>
    T[0] = mktuple(phrase /*P_RESTOF_COND*/, alt /*2*/, /*phrases*/ 4, T /*T[1], T[2], T[3], T[4]*/);
  } else               {
    T[0] = mktuple(phrase /*P_RESTOF_COND*/, alt /*3*/, /*phrases*/ 0, T /**/);
  }
  return T[0];



 
//\\ P<RESTOF_AND_C> = 
//\\    'a' 'n' 'd' <SC> <RESTOF_AND_C>,
//\\   ;

case P_RESTOF_AND_C:
  if (alt == 0)        {
    T[1] = lit('a');
    T[2] = lit('n');
    T[3] = lit('d');
    T[4] = build_ast(A[ap+0], depth+1); // <SC>
    T[5] = build_ast(A[ap+1], depth+1); // <RESTOF_AND_C>
    T[0] = mktuple(phrase /*P_RESTOF_AND_C*/, alt /*1*/, /*phrases*/ 5, T /*T[1], T[2], T[3], T[4], T[5]*/);
  } else               {
    T[0] = mktuple(phrase /*P_RESTOF_AND_C*/, alt /*2*/, /*phrases*/ 0, T /**/);
  }
  return T[0];



 
//\\ P<RESTOF_OR_C> = 
//\\    'o' 'r' <SC> <RESTOF_OR_C>,
//\\   ;

case P_RESTOF_OR_C:
  if (alt == 0)        {
    T[1] = lit('o');
    T[2] = lit('r');
    T[3] = build_ast(A[ap+0], depth+1); // <SC>
    T[4] = build_ast(A[ap+1], depth+1); // <RESTOF_OR_C>
    T[0] = mktuple(phrase /*P_RESTOF_OR_C*/, alt /*1*/, /*phrases*/ 4, T /*T[1], T[2], T[3], T[4]*/);
  } else               {
    T[0] = mktuple(phrase /*P_RESTOF_OR_C*/, alt /*2*/, /*phrases*/ 0, T /**/);
  }
  return T[0];



 
//\\ P<RESTOF_UI> = 
//\\    '=' <Opt_Plus> <OPERAND> <RESTOF_EXPR> <Opt_QUERY>,
//\\   ;

case P_RESTOF_UI:
  if (alt == 0)        {
    T[1] = lit('=');
    T[2] = build_ast(A[ap+0], depth+1); // <Opt_Plus>
    T[3] = build_ast(A[ap+1], depth+1); // <OPERAND>
    T[4] = build_ast(A[ap+2], depth+1); // <RESTOF_EXPR>
    T[5] = build_ast(A[ap+3], depth+1); // <Opt_QUERY>
    T[0] = mktuple(phrase /*P_RESTOF_UI*/, alt /*1*/, /*phrases*/ 5, T /*T[1], T[2], T[3], T[4], T[5]*/);
  } else               {
    T[0] = mktuple(phrase /*P_RESTOF_UI*/, alt /*2*/, /*phrases*/ 0, T /**/);
  }
  return T[0];



 
//\\ P<Opt_Percent_SPEC> = 
//\\    's' 'p' 'e' 'c',
//\\   ;

case P_Opt_Percent_SPEC:
  if (alt == 0)        {
    T[1] = lit('s');
    T[2] = lit('p');
    T[3] = lit('e');
    T[4] = lit('c');
    T[0] = mktuple(phrase /*P_Opt_Percent_SPEC*/, alt /*1*/, /*phrases*/ 4, T /*T[1], T[2], T[3], T[4]*/);
  } else               {
    T[0] = mktuple(phrase /*P_Opt_Percent_SPEC*/, alt /*2*/, /*phrases*/ 0, T /**/);
  }
  return T[0];



 
//\\ P<RESTOF_FPP_LIST> = 
//\\    ',' <Opt_Plus> <OPERAND> <RESTOF_EXPR> ':' <Opt_Plus> <OPERAND> <RESTOF_EXPR> <RESTOF_FPP_LIST>,
//\\   ;

case P_RESTOF_FPP_LIST:
  if (alt == 0)        {
    T[1] = lit(',');
    T[2] = build_ast(A[ap+0], depth+1); // <Opt_Plus>
    T[3] = build_ast(A[ap+1], depth+1); // <OPERAND>
    T[4] = build_ast(A[ap+2], depth+1); // <RESTOF_EXPR>
    T[5] = lit(':');
    T[6] = build_ast(A[ap+3], depth+1); // <Opt_Plus>
    T[7] = build_ast(A[ap+4], depth+1); // <OPERAND>
    T[8] = build_ast(A[ap+5], depth+1); // <RESTOF_EXPR>
    T[9] = build_ast(A[ap+6], depth+1); // <RESTOF_FPP_LIST>
    T[0] = mktuple(phrase /*P_RESTOF_FPP_LIST*/, alt /*1*/, /*phrases*/ 9, T /*T[1], T[2], T[3], T[4], T[5], T[6], T[7], T[8], T[9]*/);
  } else               {
    T[0] = mktuple(phrase /*P_RESTOF_FPP_LIST*/, alt /*2*/, /*phrases*/ 0, T /**/);
  }
  return T[0];



 
//\\ P<RESTOF_ARRAYLIST> = 
//\\    ',' <NAME> <RESTOF_NAMELIST> '(' <Opt_Plus> <OPERAND> <RESTOF_EXPR> ':' <Opt_Plus> <OPERAND> <RESTOF_EXPR> <RESTOF_FPP_LIST> ')' <RESTOF_ARRAYLIST>,
//\\   ;

case P_RESTOF_ARRAYLIST:
  if (alt == 0)        {
    T[1] = lit(',');
    T[2] = NAME(ap+0);
    T[3] = build_ast(A[ap+1], depth+1); // <RESTOF_NAMELIST>
    T[4] = lit('(');
    T[5] = build_ast(A[ap+2], depth+1); // <Opt_Plus>
    T[6] = build_ast(A[ap+3], depth+1); // <OPERAND>
    T[7] = build_ast(A[ap+4], depth+1); // <RESTOF_EXPR>
    T[8] = lit(':');
    T[9] = build_ast(A[ap+5], depth+1); // <Opt_Plus>
    T[10] = build_ast(A[ap+6], depth+1); // <OPERAND>
    T[11] = build_ast(A[ap+7], depth+1); // <RESTOF_EXPR>
    T[12] = build_ast(A[ap+8], depth+1); // <RESTOF_FPP_LIST>
    T[13] = lit(')');
    T[14] = build_ast(A[ap+9], depth+1); // <RESTOF_ARRAYLIST>
    T[0] = mktuple(phrase /*P_RESTOF_ARRAYLIST*/, alt /*1*/, /*phrases*/ 14, T /*T[1], T[2], T[3], T[4], T[5], T[6], T[7], T[8], T[9], T[10], T[11], T[12], T[13], T[14]*/);
  } else               {
    T[0] = mktuple(phrase /*P_RESTOF_ARRAYLIST*/, alt /*2*/, /*phrases*/ 0, T /**/);
  }
  return T[0];



 
//\\ P<RESTOF_SWITCHLIST> = 
//\\    ',' <NAME> <RESTOF_NAMELIST> '(' <Opt_Plus> <CONST> ':' <Opt_Plus> <CONST> ')' <RESTOF_SWITCHLIST>,
//\\   ;

case P_RESTOF_SWITCHLIST:
  if (alt == 0)        {
    T[1] = lit(',');
    T[2] = NAME(ap+0);
    T[3] = build_ast(A[ap+1], depth+1); // <RESTOF_NAMELIST>
    T[4] = lit('(');
    T[5] = build_ast(A[ap+2], depth+1); // <Opt_Plus>
    T[6] = CONST(ap+3);
    T[7] = lit(':');
    T[8] = build_ast(A[ap+4], depth+1); // <Opt_Plus>
    T[9] = CONST(ap+5);
    T[10] = lit(')');
    T[11] = build_ast(A[ap+6], depth+1); // <RESTOF_SWITCHLIST>
    T[0] = mktuple(phrase /*P_RESTOF_SWITCHLIST*/, alt /*1*/, /*phrases*/ 11, T /*T[1], T[2], T[3], T[4], T[5], T[6], T[7], T[8], T[9], T[10], T[11]*/);
  } else               {
    T[0] = mktuple(phrase /*P_RESTOF_SWITCHLIST*/, alt /*2*/, /*phrases*/ 0, T /**/);
  }
  return T[0];



 
//\\ P<COMP> = 
//\\    '=',
//\\    '>' '=',
//\\    '>',
//\\    '#',
//\\    '<' '=',
//\\    '<';

case P_COMP:
  if (alt == 0)        {
    T[1] = lit('=');
    T[0] = mktuple(phrase /*P_COMP*/, alt /*1*/, /*phrases*/ 1, T /*T[1]*/);
  } else if (alt == 1) {
    T[1] = lit('>');
    T[2] = lit('=');
    T[0] = mktuple(phrase /*P_COMP*/, alt /*2*/, /*phrases*/ 2, T /*T[1], T[2]*/);
  } else if (alt == 2) {
    T[1] = lit('>');
    T[0] = mktuple(phrase /*P_COMP*/, alt /*3*/, /*phrases*/ 1, T /*T[1]*/);
  } else if (alt == 3) {
    T[1] = lit('#');
    T[0] = mktuple(phrase /*P_COMP*/, alt /*4*/, /*phrases*/ 1, T /*T[1]*/);
  } else if (alt == 4) {
    T[1] = lit('<');
    T[2] = lit('=');
    T[0] = mktuple(phrase /*P_COMP*/, alt /*5*/, /*phrases*/ 2, T /*T[1], T[2]*/);
  } else               {
    T[1] = lit('<');
    T[0] = mktuple(phrase /*P_COMP*/, alt /*6*/, /*phrases*/ 1, T /*T[1]*/);
  }
  return T[0];



 
//\\ P<RESTOF_SS1> = 
//\\    <S>,
//\\    <Percent_IU> <SC> <RESTOF_COND> <S>;

case P_RESTOF_SS1:
  if (alt == 0)        {
    T[1] = S(ap+0);
    T[0] = mktuple(phrase /*P_RESTOF_SS1*/, alt /*1*/, /*phrases*/ 1, T /*T[1]*/);
  } else               {
    T[1] = build_ast(A[ap+0], depth+1); // <Percent_IU>
    T[2] = build_ast(A[ap+1], depth+1); // <SC>
    T[3] = build_ast(A[ap+2], depth+1); // <RESTOF_COND>
    T[4] = S(ap+3);
    T[0] = mktuple(phrase /*P_RESTOF_SS1*/, alt /*2*/, /*phrases*/ 4, T /*T[1], T[2], T[3], T[4]*/);
  }
  return T[0];



 
//\\ P<RESTOF_FN_LIST> = 
//\\    ',' <N> <RESTOF_FN_LIST>,
//\\   ;

case P_RESTOF_FN_LIST:
  if (alt == 0)        {
    T[1] = lit(',');
    T[2] = N(ap+0);
    T[3] = build_ast(A[ap+1], depth+1); // <RESTOF_FN_LIST>
    T[0] = mktuple(phrase /*P_RESTOF_FN_LIST*/, alt /*1*/, /*phrases*/ 3, T /*T[1], T[2], T[3]*/);
  } else               {
    T[0] = mktuple(phrase /*P_RESTOF_FN_LIST*/, alt /*2*/, /*phrases*/ 0, T /**/);
  }
  return T[0];



 
//\\ P<RESTOF_FAULTLIST> = 
//\\    ',' <N> <RESTOF_FN_LIST> '-' '>' <N> <RESTOF_FAULTLIST>,
//\\   ;

case P_RESTOF_FAULTLIST:
  if (alt == 0)        {
    T[1] = lit(',');
    T[2] = N(ap+0);
    T[3] = build_ast(A[ap+1], depth+1); // <RESTOF_FN_LIST>
    T[4] = lit('-');
    T[5] = lit('>');
    T[6] = N(ap+2);
    T[7] = build_ast(A[ap+3], depth+1); // <RESTOF_FAULTLIST>
    T[0] = mktuple(phrase /*P_RESTOF_FAULTLIST*/, alt /*1*/, /*phrases*/ 7, T /*T[1], T[2], T[3], T[4], T[5], T[6], T[7]*/);
  } else               {
    T[0] = mktuple(phrase /*P_RESTOF_FAULTLIST*/, alt /*2*/, /*phrases*/ 0, T /**/);
  }
  return T[0];



 
//\\ P<UCI> = 
//\\    '*' '@' <NAME> <APP>,
//\\    '*' <Opt_Equals> <NAME> <APP>,
//\\    'J' <N> <Opt_P> <J_INSTR>,
//\\    'S' 'E' 'T' 'B' <OCTAL>,
//\\    'S' 'E' 'T' <N> 'P' ':',
//\\    'J' 'S' <N> <Opt_P>,
//\\    'E' 'X' 'I' 'T' <N>,
//\\    <Opt_Equals> 'M' <N> 'M' <N> <MS_INSTR>,
//\\    'S' 'H' <SH_INSTR>,
//\\    '=' <QS_INSTR>,
//\\    'Q' <N> 'T' 'O' 'Q' <N>,
//\\    'C' <N> 'T' 'O' 'Q' <N>,
//\\    'I' <N> 'T' 'O' 'Q' <N>,
//\\    'M' <N> 'T' 'O' 'Q' <N>,
//\\    'I' 'M' <N> 'T' 'O' 'Q' <N>,
//\\    'C' 'M' <N> 'T' 'O' 'Q' <N>,
//\\    'C' 'I' <N> 'T' 'O' 'Q' <N>,
//\\    'I' <N> '=' <Opt_Plus> <N>,
//\\    'Q' <N>,
//\\    'C' <N>,
//\\    'I' <N>,
//\\    'M' <N>,
//\\    'N' 'C' <N>,
//\\    'D' 'C' <N>,
//\\    'L' 'I' 'N' 'K',
//\\    'M' <Plus> 'I' <N>,
//\\    'X' '+' <Opt_Plus> <N>,
//\\    'X' '+' 'C' <N>,
//\\    'R' 'O' 'U' 'N' 'D' 'H' 'F',
//\\    'R' 'O' 'U' 'N' 'D' 'F',
//\\    'R' 'O' 'U' 'N' 'D' 'H',
//\\    'R' 'O' 'U' 'N' 'D',
//\\    'F' 'L' 'O' 'A' 'T' 'D',
//\\    'F' 'L' 'O' 'A' 'T',
//\\    'E' 'R' 'A' 'S' 'E',
//\\    'R' 'E' 'V' 'D',
//\\    'R' 'E' 'V',
//\\    'Z' 'E' 'R' 'O',
//\\    'D' 'U' 'P' 'D',
//\\    'D' 'U' 'P',
//\\    'N' 'E' 'G' 'D' 'F',
//\\    'N' 'E' 'G' 'F',
//\\    'N' 'E' 'G' 'D',
//\\    'N' 'E' 'G',
//\\    'A' 'B' 'S' 'F',
//\\    'A' 'B' 'S',
//\\    'M' 'A' 'X' 'F',
//\\    'M' 'A' 'X',
//\\    'S' 'I' 'G' 'N' 'F',
//\\    'S' 'I' 'G' 'N',
//\\    'C' 'A' 'B',
//\\    'F' 'R' 'B',
//\\    'S' 'T' 'A' 'N' 'D',
//\\    '/' 'D' 'F',
//\\    '/' 'D',
//\\    '/' 'F',
//\\    '/' 'R',
//\\    '/' 'I',
//\\    '/',
//\\    '+' 'D' 'F',
//\\    '+' 'D',
//\\    '+' 'F',
//\\    '+',
//\\    '-' 'D' 'F',
//\\    '-' 'D',
//\\    '-' 'F',
//\\    '-',
//\\    'X' 'D' 'F',
//\\    'X' 'D',
//\\    'X' 'F',
//\\    'X' '+' 'F',
//\\    'X' '+',
//\\    '=' 'T' 'R',
//\\    'B' 'I' 'T' 'S',
//\\    'D' 'U' 'M' 'M' 'Y',
//\\    'P' 'E' 'R' 'M',
//\\    'T' 'O' 'P',
//\\    'O' 'R',
//\\    'V' 'R',
//\\    'N' 'E' 'V',
//\\    'N' 'O' 'T',
//\\    'F' 'I' 'X',
//\\    'S' 'T' 'R',
//\\    'C' 'O' 'N' 'T',
//\\    'A' 'N' 'D',
//\\    'E' 'X' 'I' 'T',
//\\    'O' 'U' 'T',
//\\    'X',
//\\    'P' <IOM> <ATOF> 'Q' <N>,
//\\    'T' 'L' 'O' 'G' <N>,
//\\    'I' 'N' 'T' 'Q' <N>,
//\\    'P' 'A' 'R' 'Q' <N>,
//\\    'B' 'U' 'S' 'Y' 'Q' <N>,
//\\    'M' 'A' 'N' 'U' 'A' 'L' 'Q' <N>,
//\\    'C' 'T' 'Q' <N>,
//\\    'C' 'L' 'O' 'Q' <N>,
//\\    'S' 'E' 'T' <Opt_Plus> <N>,
//\\    'A' 'D' 'V' 'C' 'A' <N>,
//\\    <OCTAL> '/' <OCTAL> '/' <OCTAL>,
//\\    <Opt_Equals> 'F' <N> <E_INSTR>,
//\\    'J' 'S' 'E' <N>,
//\\    'J' 'E' <N>,
//\\   ;

case P_UCI:
  if (alt == 0)        {
    T[1] = lit('*');
    T[2] = lit('@');
    T[3] = NAME(ap+0);
    T[4] = build_ast(A[ap+1], depth+1); // <APP>
    T[0] = mktuple(phrase /*P_UCI*/, alt /*1*/, /*phrases*/ 4, T /*T[1], T[2], T[3], T[4]*/);
  } else if (alt == 1) {
    T[1] = lit('*');
    T[2] = build_ast(A[ap+0], depth+1); // <Opt_Equals>
    T[3] = NAME(ap+1);
    T[4] = build_ast(A[ap+2], depth+1); // <APP>
    T[0] = mktuple(phrase /*P_UCI*/, alt /*2*/, /*phrases*/ 4, T /*T[1], T[2], T[3], T[4]*/);
  } else if (alt == 2) {
    T[1] = lit('J');
    T[2] = N(ap+0);
    T[3] = build_ast(A[ap+1], depth+1); // <Opt_P>
    T[4] = build_ast(A[ap+2], depth+1); // <J_INSTR>
    T[0] = mktuple(phrase /*P_UCI*/, alt /*3*/, /*phrases*/ 4, T /*T[1], T[2], T[3], T[4]*/);
  } else if (alt == 3) {
    T[1] = lit('S');
    T[2] = lit('E');
    T[3] = lit('T');
    T[4] = lit('B');
    T[5] = OCTAL(ap+0);
    T[0] = mktuple(phrase /*P_UCI*/, alt /*4*/, /*phrases*/ 5, T /*T[1], T[2], T[3], T[4], T[5]*/);
  } else if (alt == 4) {
    T[1] = lit('S');
    T[2] = lit('E');
    T[3] = lit('T');
    T[4] = N(ap+0);
    T[5] = lit('P');
    T[6] = lit(':');
    T[0] = mktuple(phrase /*P_UCI*/, alt /*5*/, /*phrases*/ 6, T /*T[1], T[2], T[3], T[4], T[5], T[6]*/);
  } else if (alt == 5) {
    T[1] = lit('J');
    T[2] = lit('S');
    T[3] = N(ap+0);
    T[4] = build_ast(A[ap+1], depth+1); // <Opt_P>
    T[0] = mktuple(phrase /*P_UCI*/, alt /*6*/, /*phrases*/ 4, T /*T[1], T[2], T[3], T[4]*/);
  } else if (alt == 6) {
    T[1] = lit('E');
    T[2] = lit('X');
    T[3] = lit('I');
    T[4] = lit('T');
    T[5] = N(ap+0);
    T[0] = mktuple(phrase /*P_UCI*/, alt /*7*/, /*phrases*/ 5, T /*T[1], T[2], T[3], T[4], T[5]*/);
  } else if (alt == 7) {
    T[1] = build_ast(A[ap+0], depth+1); // <Opt_Equals>
    T[2] = lit('M');
    T[3] = N(ap+1);
    T[4] = lit('M');
    T[5] = N(ap+2);
    T[6] = build_ast(A[ap+3], depth+1); // <MS_INSTR>
    T[0] = mktuple(phrase /*P_UCI*/, alt /*8*/, /*phrases*/ 6, T /*T[1], T[2], T[3], T[4], T[5], T[6]*/);
  } else if (alt == 8) {
    T[1] = lit('S');
    T[2] = lit('H');
    T[3] = build_ast(A[ap+0], depth+1); // <SH_INSTR>
    T[0] = mktuple(phrase /*P_UCI*/, alt /*9*/, /*phrases*/ 3, T /*T[1], T[2], T[3]*/);
  } else if (alt == 9) {
    T[1] = lit('=');
    T[2] = build_ast(A[ap+0], depth+1); // <QS_INSTR>
    T[0] = mktuple(phrase /*P_UCI*/, alt /*10*/, /*phrases*/ 2, T /*T[1], T[2]*/);
  } else if (alt == 10) {
    T[1] = lit('Q');
    T[2] = N(ap+0);
    T[3] = lit('T');
    T[4] = lit('O');
    T[5] = lit('Q');
    T[6] = N(ap+1);
    T[0] = mktuple(phrase /*P_UCI*/, alt /*11*/, /*phrases*/ 6, T /*T[1], T[2], T[3], T[4], T[5], T[6]*/);
  } else if (alt == 11) {
    T[1] = lit('C');
    T[2] = N(ap+0);
    T[3] = lit('T');
    T[4] = lit('O');
    T[5] = lit('Q');
    T[6] = N(ap+1);
    T[0] = mktuple(phrase /*P_UCI*/, alt /*12*/, /*phrases*/ 6, T /*T[1], T[2], T[3], T[4], T[5], T[6]*/);
  } else if (alt == 12) {
    T[1] = lit('I');
    T[2] = N(ap+0);
    T[3] = lit('T');
    T[4] = lit('O');
    T[5] = lit('Q');
    T[6] = N(ap+1);
    T[0] = mktuple(phrase /*P_UCI*/, alt /*13*/, /*phrases*/ 6, T /*T[1], T[2], T[3], T[4], T[5], T[6]*/);
  } else if (alt == 13) {
    T[1] = lit('M');
    T[2] = N(ap+0);
    T[3] = lit('T');
    T[4] = lit('O');
    T[5] = lit('Q');
    T[6] = N(ap+1);
    T[0] = mktuple(phrase /*P_UCI*/, alt /*14*/, /*phrases*/ 6, T /*T[1], T[2], T[3], T[4], T[5], T[6]*/);
  } else if (alt == 14) {
    T[1] = lit('I');
    T[2] = lit('M');
    T[3] = N(ap+0);
    T[4] = lit('T');
    T[5] = lit('O');
    T[6] = lit('Q');
    T[7] = N(ap+1);
    T[0] = mktuple(phrase /*P_UCI*/, alt /*15*/, /*phrases*/ 7, T /*T[1], T[2], T[3], T[4], T[5], T[6], T[7]*/);
  } else if (alt == 15) {
    T[1] = lit('C');
    T[2] = lit('M');
    T[3] = N(ap+0);
    T[4] = lit('T');
    T[5] = lit('O');
    T[6] = lit('Q');
    T[7] = N(ap+1);
    T[0] = mktuple(phrase /*P_UCI*/, alt /*16*/, /*phrases*/ 7, T /*T[1], T[2], T[3], T[4], T[5], T[6], T[7]*/);
  } else if (alt == 16) {
    T[1] = lit('C');
    T[2] = lit('I');
    T[3] = N(ap+0);
    T[4] = lit('T');
    T[5] = lit('O');
    T[6] = lit('Q');
    T[7] = N(ap+1);
    T[0] = mktuple(phrase /*P_UCI*/, alt /*17*/, /*phrases*/ 7, T /*T[1], T[2], T[3], T[4], T[5], T[6], T[7]*/);
  } else if (alt == 17) {
    T[1] = lit('I');
    T[2] = N(ap+0);
    T[3] = lit('=');
    T[4] = build_ast(A[ap+1], depth+1); // <Opt_Plus>
    T[5] = N(ap+2);
    T[0] = mktuple(phrase /*P_UCI*/, alt /*18*/, /*phrases*/ 5, T /*T[1], T[2], T[3], T[4], T[5]*/);
  } else if (alt == 18) {
    T[1] = lit('Q');
    T[2] = N(ap+0);
    T[0] = mktuple(phrase /*P_UCI*/, alt /*19*/, /*phrases*/ 2, T /*T[1], T[2]*/);
  } else if (alt == 19) {
    T[1] = lit('C');
    T[2] = N(ap+0);
    T[0] = mktuple(phrase /*P_UCI*/, alt /*20*/, /*phrases*/ 2, T /*T[1], T[2]*/);
  } else if (alt == 20) {
    T[1] = lit('I');
    T[2] = N(ap+0);
    T[0] = mktuple(phrase /*P_UCI*/, alt /*21*/, /*phrases*/ 2, T /*T[1], T[2]*/);
  } else if (alt == 21) {
    T[1] = lit('M');
    T[2] = N(ap+0);
    T[0] = mktuple(phrase /*P_UCI*/, alt /*22*/, /*phrases*/ 2, T /*T[1], T[2]*/);
  } else if (alt == 22) {
    T[1] = lit('N');
    T[2] = lit('C');
    T[3] = N(ap+0);
    T[0] = mktuple(phrase /*P_UCI*/, alt /*23*/, /*phrases*/ 3, T /*T[1], T[2], T[3]*/);
  } else if (alt == 23) {
    T[1] = lit('D');
    T[2] = lit('C');
    T[3] = N(ap+0);
    T[0] = mktuple(phrase /*P_UCI*/, alt /*24*/, /*phrases*/ 3, T /*T[1], T[2], T[3]*/);
  } else if (alt == 24) {
    T[1] = lit('L');
    T[2] = lit('I');
    T[3] = lit('N');
    T[4] = lit('K');
    T[0] = mktuple(phrase /*P_UCI*/, alt /*25*/, /*phrases*/ 4, T /*T[1], T[2], T[3], T[4]*/);
  } else if (alt == 25) {
    T[1] = lit('M');
    T[2] = build_ast(A[ap+0], depth+1); // <Plus>
    T[3] = lit('I');
    T[4] = N(ap+1);
    T[0] = mktuple(phrase /*P_UCI*/, alt /*26*/, /*phrases*/ 4, T /*T[1], T[2], T[3], T[4]*/);
  } else if (alt == 26) {
    T[1] = lit('X');
    T[2] = lit('+');
    T[3] = build_ast(A[ap+0], depth+1); // <Opt_Plus>
    T[4] = N(ap+1);
    T[0] = mktuple(phrase /*P_UCI*/, alt /*27*/, /*phrases*/ 4, T /*T[1], T[2], T[3], T[4]*/);
  } else if (alt == 27) {
    T[1] = lit('X');
    T[2] = lit('+');
    T[3] = lit('C');
    T[4] = N(ap+0);
    T[0] = mktuple(phrase /*P_UCI*/, alt /*28*/, /*phrases*/ 4, T /*T[1], T[2], T[3], T[4]*/);
  } else if (alt == 28) {
    T[1] = lit('R');
    T[2] = lit('O');
    T[3] = lit('U');
    T[4] = lit('N');
    T[5] = lit('D');
    T[6] = lit('H');
    T[7] = lit('F');
    T[0] = mktuple(phrase /*P_UCI*/, alt /*29*/, /*phrases*/ 7, T /*T[1], T[2], T[3], T[4], T[5], T[6], T[7]*/);
  } else if (alt == 29) {
    T[1] = lit('R');
    T[2] = lit('O');
    T[3] = lit('U');
    T[4] = lit('N');
    T[5] = lit('D');
    T[6] = lit('F');
    T[0] = mktuple(phrase /*P_UCI*/, alt /*30*/, /*phrases*/ 6, T /*T[1], T[2], T[3], T[4], T[5], T[6]*/);
  } else if (alt == 30) {
    T[1] = lit('R');
    T[2] = lit('O');
    T[3] = lit('U');
    T[4] = lit('N');
    T[5] = lit('D');
    T[6] = lit('H');
    T[0] = mktuple(phrase /*P_UCI*/, alt /*31*/, /*phrases*/ 6, T /*T[1], T[2], T[3], T[4], T[5], T[6]*/);
  } else if (alt == 31) {
    T[1] = lit('R');
    T[2] = lit('O');
    T[3] = lit('U');
    T[4] = lit('N');
    T[5] = lit('D');
    T[0] = mktuple(phrase /*P_UCI*/, alt /*32*/, /*phrases*/ 5, T /*T[1], T[2], T[3], T[4], T[5]*/);
  } else if (alt == 32) {
    T[1] = lit('F');
    T[2] = lit('L');
    T[3] = lit('O');
    T[4] = lit('A');
    T[5] = lit('T');
    T[6] = lit('D');
    T[0] = mktuple(phrase /*P_UCI*/, alt /*33*/, /*phrases*/ 6, T /*T[1], T[2], T[3], T[4], T[5], T[6]*/);
  } else if (alt == 33) {
    T[1] = lit('F');
    T[2] = lit('L');
    T[3] = lit('O');
    T[4] = lit('A');
    T[5] = lit('T');
    T[0] = mktuple(phrase /*P_UCI*/, alt /*34*/, /*phrases*/ 5, T /*T[1], T[2], T[3], T[4], T[5]*/);
  } else if (alt == 34) {
    T[1] = lit('E');
    T[2] = lit('R');
    T[3] = lit('A');
    T[4] = lit('S');
    T[5] = lit('E');
    T[0] = mktuple(phrase /*P_UCI*/, alt /*35*/, /*phrases*/ 5, T /*T[1], T[2], T[3], T[4], T[5]*/);
  } else if (alt == 35) {
    T[1] = lit('R');
    T[2] = lit('E');
    T[3] = lit('V');
    T[4] = lit('D');
    T[0] = mktuple(phrase /*P_UCI*/, alt /*36*/, /*phrases*/ 4, T /*T[1], T[2], T[3], T[4]*/);
  } else if (alt == 36) {
    T[1] = lit('R');
    T[2] = lit('E');
    T[3] = lit('V');
    T[0] = mktuple(phrase /*P_UCI*/, alt /*37*/, /*phrases*/ 3, T /*T[1], T[2], T[3]*/);
  } else if (alt == 37) {
    T[1] = lit('Z');
    T[2] = lit('E');
    T[3] = lit('R');
    T[4] = lit('O');
    T[0] = mktuple(phrase /*P_UCI*/, alt /*38*/, /*phrases*/ 4, T /*T[1], T[2], T[3], T[4]*/);
  } else if (alt == 38) {
    T[1] = lit('D');
    T[2] = lit('U');
    T[3] = lit('P');
    T[4] = lit('D');
    T[0] = mktuple(phrase /*P_UCI*/, alt /*39*/, /*phrases*/ 4, T /*T[1], T[2], T[3], T[4]*/);
  } else if (alt == 39) {
    T[1] = lit('D');
    T[2] = lit('U');
    T[3] = lit('P');
    T[0] = mktuple(phrase /*P_UCI*/, alt /*40*/, /*phrases*/ 3, T /*T[1], T[2], T[3]*/);
  } else if (alt == 40) {
    T[1] = lit('N');
    T[2] = lit('E');
    T[3] = lit('G');
    T[4] = lit('D');
    T[5] = lit('F');
    T[0] = mktuple(phrase /*P_UCI*/, alt /*41*/, /*phrases*/ 5, T /*T[1], T[2], T[3], T[4], T[5]*/);
  } else if (alt == 41) {
    T[1] = lit('N');
    T[2] = lit('E');
    T[3] = lit('G');
    T[4] = lit('F');
    T[0] = mktuple(phrase /*P_UCI*/, alt /*42*/, /*phrases*/ 4, T /*T[1], T[2], T[3], T[4]*/);
  } else if (alt == 42) {
    T[1] = lit('N');
    T[2] = lit('E');
    T[3] = lit('G');
    T[4] = lit('D');
    T[0] = mktuple(phrase /*P_UCI*/, alt /*43*/, /*phrases*/ 4, T /*T[1], T[2], T[3], T[4]*/);
  } else if (alt == 43) {
    T[1] = lit('N');
    T[2] = lit('E');
    T[3] = lit('G');
    T[0] = mktuple(phrase /*P_UCI*/, alt /*44*/, /*phrases*/ 3, T /*T[1], T[2], T[3]*/);
  } else if (alt == 44) {
    T[1] = lit('A');
    T[2] = lit('B');
    T[3] = lit('S');
    T[4] = lit('F');
    T[0] = mktuple(phrase /*P_UCI*/, alt /*45*/, /*phrases*/ 4, T /*T[1], T[2], T[3], T[4]*/);
  } else if (alt == 45) {
    T[1] = lit('A');
    T[2] = lit('B');
    T[3] = lit('S');
    T[0] = mktuple(phrase /*P_UCI*/, alt /*46*/, /*phrases*/ 3, T /*T[1], T[2], T[3]*/);
  } else if (alt == 46) {
    T[1] = lit('M');
    T[2] = lit('A');
    T[3] = lit('X');
    T[4] = lit('F');
    T[0] = mktuple(phrase /*P_UCI*/, alt /*47*/, /*phrases*/ 4, T /*T[1], T[2], T[3], T[4]*/);
  } else if (alt == 47) {
    T[1] = lit('M');
    T[2] = lit('A');
    T[3] = lit('X');
    T[0] = mktuple(phrase /*P_UCI*/, alt /*48*/, /*phrases*/ 3, T /*T[1], T[2], T[3]*/);
  } else if (alt == 48) {
    T[1] = lit('S');
    T[2] = lit('I');
    T[3] = lit('G');
    T[4] = lit('N');
    T[5] = lit('F');
    T[0] = mktuple(phrase /*P_UCI*/, alt /*49*/, /*phrases*/ 5, T /*T[1], T[2], T[3], T[4], T[5]*/);
  } else if (alt == 49) {
    T[1] = lit('S');
    T[2] = lit('I');
    T[3] = lit('G');
    T[4] = lit('N');
    T[0] = mktuple(phrase /*P_UCI*/, alt /*50*/, /*phrases*/ 4, T /*T[1], T[2], T[3], T[4]*/);
  } else if (alt == 50) {
    T[1] = lit('C');
    T[2] = lit('A');
    T[3] = lit('B');
    T[0] = mktuple(phrase /*P_UCI*/, alt /*51*/, /*phrases*/ 3, T /*T[1], T[2], T[3]*/);
  } else if (alt == 51) {
    T[1] = lit('F');
    T[2] = lit('R');
    T[3] = lit('B');
    T[0] = mktuple(phrase /*P_UCI*/, alt /*52*/, /*phrases*/ 3, T /*T[1], T[2], T[3]*/);
  } else if (alt == 52) {
    T[1] = lit('S');
    T[2] = lit('T');
    T[3] = lit('A');
    T[4] = lit('N');
    T[5] = lit('D');
    T[0] = mktuple(phrase /*P_UCI*/, alt /*53*/, /*phrases*/ 5, T /*T[1], T[2], T[3], T[4], T[5]*/);
  } else if (alt == 53) {
    T[1] = lit('/');
    T[2] = lit('D');
    T[3] = lit('F');
    T[0] = mktuple(phrase /*P_UCI*/, alt /*54*/, /*phrases*/ 3, T /*T[1], T[2], T[3]*/);
  } else if (alt == 54) {
    T[1] = lit('/');
    T[2] = lit('D');
    T[0] = mktuple(phrase /*P_UCI*/, alt /*55*/, /*phrases*/ 2, T /*T[1], T[2]*/);
  } else if (alt == 55) {
    T[1] = lit('/');
    T[2] = lit('F');
    T[0] = mktuple(phrase /*P_UCI*/, alt /*56*/, /*phrases*/ 2, T /*T[1], T[2]*/);
  } else if (alt == 56) {
    T[1] = lit('/');
    T[2] = lit('R');
    T[0] = mktuple(phrase /*P_UCI*/, alt /*57*/, /*phrases*/ 2, T /*T[1], T[2]*/);
  } else if (alt == 57) {
    T[1] = lit('/');
    T[2] = lit('I');
    T[0] = mktuple(phrase /*P_UCI*/, alt /*58*/, /*phrases*/ 2, T /*T[1], T[2]*/);
  } else if (alt == 58) {
    T[1] = lit('/');
    T[0] = mktuple(phrase /*P_UCI*/, alt /*59*/, /*phrases*/ 1, T /*T[1]*/);
  } else if (alt == 59) {
    T[1] = lit('+');
    T[2] = lit('D');
    T[3] = lit('F');
    T[0] = mktuple(phrase /*P_UCI*/, alt /*60*/, /*phrases*/ 3, T /*T[1], T[2], T[3]*/);
  } else if (alt == 60) {
    T[1] = lit('+');
    T[2] = lit('D');
    T[0] = mktuple(phrase /*P_UCI*/, alt /*61*/, /*phrases*/ 2, T /*T[1], T[2]*/);
  } else if (alt == 61) {
    T[1] = lit('+');
    T[2] = lit('F');
    T[0] = mktuple(phrase /*P_UCI*/, alt /*62*/, /*phrases*/ 2, T /*T[1], T[2]*/);
  } else if (alt == 62) {
    T[1] = lit('+');
    T[0] = mktuple(phrase /*P_UCI*/, alt /*63*/, /*phrases*/ 1, T /*T[1]*/);
  } else if (alt == 63) {
    T[1] = lit('-');
    T[2] = lit('D');
    T[3] = lit('F');
    T[0] = mktuple(phrase /*P_UCI*/, alt /*64*/, /*phrases*/ 3, T /*T[1], T[2], T[3]*/);
  } else if (alt == 64) {
    T[1] = lit('-');
    T[2] = lit('D');
    T[0] = mktuple(phrase /*P_UCI*/, alt /*65*/, /*phrases*/ 2, T /*T[1], T[2]*/);
  } else if (alt == 65) {
    T[1] = lit('-');
    T[2] = lit('F');
    T[0] = mktuple(phrase /*P_UCI*/, alt /*66*/, /*phrases*/ 2, T /*T[1], T[2]*/);
  } else if (alt == 66) {
    T[1] = lit('-');
    T[0] = mktuple(phrase /*P_UCI*/, alt /*67*/, /*phrases*/ 1, T /*T[1]*/);
  } else if (alt == 67) {
    T[1] = lit('X');
    T[2] = lit('D');
    T[3] = lit('F');
    T[0] = mktuple(phrase /*P_UCI*/, alt /*68*/, /*phrases*/ 3, T /*T[1], T[2], T[3]*/);
  } else if (alt == 68) {
    T[1] = lit('X');
    T[2] = lit('D');
    T[0] = mktuple(phrase /*P_UCI*/, alt /*69*/, /*phrases*/ 2, T /*T[1], T[2]*/);
  } else if (alt == 69) {
    T[1] = lit('X');
    T[2] = lit('F');
    T[0] = mktuple(phrase /*P_UCI*/, alt /*70*/, /*phrases*/ 2, T /*T[1], T[2]*/);
  } else if (alt == 70) {
    T[1] = lit('X');
    T[2] = lit('+');
    T[3] = lit('F');
    T[0] = mktuple(phrase /*P_UCI*/, alt /*71*/, /*phrases*/ 3, T /*T[1], T[2], T[3]*/);
  } else if (alt == 71) {
    T[1] = lit('X');
    T[2] = lit('+');
    T[0] = mktuple(phrase /*P_UCI*/, alt /*72*/, /*phrases*/ 2, T /*T[1], T[2]*/);
  } else if (alt == 72) {
    T[1] = lit('=');
    T[2] = lit('T');
    T[3] = lit('R');
    T[0] = mktuple(phrase /*P_UCI*/, alt /*73*/, /*phrases*/ 3, T /*T[1], T[2], T[3]*/);
  } else if (alt == 73) {
    T[1] = lit('B');
    T[2] = lit('I');
    T[3] = lit('T');
    T[4] = lit('S');
    T[0] = mktuple(phrase /*P_UCI*/, alt /*74*/, /*phrases*/ 4, T /*T[1], T[2], T[3], T[4]*/);
  } else if (alt == 74) {
    T[1] = lit('D');
    T[2] = lit('U');
    T[3] = lit('M');
    T[4] = lit('M');
    T[5] = lit('Y');
    T[0] = mktuple(phrase /*P_UCI*/, alt /*75*/, /*phrases*/ 5, T /*T[1], T[2], T[3], T[4], T[5]*/);
  } else if (alt == 75) {
    T[1] = lit('P');
    T[2] = lit('E');
    T[3] = lit('R');
    T[4] = lit('M');
    T[0] = mktuple(phrase /*P_UCI*/, alt /*76*/, /*phrases*/ 4, T /*T[1], T[2], T[3], T[4]*/);
  } else if (alt == 76) {
    T[1] = lit('T');
    T[2] = lit('O');
    T[3] = lit('P');
    T[0] = mktuple(phrase /*P_UCI*/, alt /*77*/, /*phrases*/ 3, T /*T[1], T[2], T[3]*/);
  } else if (alt == 77) {
    T[1] = lit('O');
    T[2] = lit('R');
    T[0] = mktuple(phrase /*P_UCI*/, alt /*78*/, /*phrases*/ 2, T /*T[1], T[2]*/);
  } else if (alt == 78) {
    T[1] = lit('V');
    T[2] = lit('R');
    T[0] = mktuple(phrase /*P_UCI*/, alt /*79*/, /*phrases*/ 2, T /*T[1], T[2]*/);
  } else if (alt == 79) {
    T[1] = lit('N');
    T[2] = lit('E');
    T[3] = lit('V');
    T[0] = mktuple(phrase /*P_UCI*/, alt /*80*/, /*phrases*/ 3, T /*T[1], T[2], T[3]*/);
  } else if (alt == 80) {
    T[1] = lit('N');
    T[2] = lit('O');
    T[3] = lit('T');
    T[0] = mktuple(phrase /*P_UCI*/, alt /*81*/, /*phrases*/ 3, T /*T[1], T[2], T[3]*/);
  } else if (alt == 81) {
    T[1] = lit('F');
    T[2] = lit('I');
    T[3] = lit('X');
    T[0] = mktuple(phrase /*P_UCI*/, alt /*82*/, /*phrases*/ 3, T /*T[1], T[2], T[3]*/);
  } else if (alt == 82) {
    T[1] = lit('S');
    T[2] = lit('T');
    T[3] = lit('R');
    T[0] = mktuple(phrase /*P_UCI*/, alt /*83*/, /*phrases*/ 3, T /*T[1], T[2], T[3]*/);
  } else if (alt == 83) {
    T[1] = lit('C');
    T[2] = lit('O');
    T[3] = lit('N');
    T[4] = lit('T');
    T[0] = mktuple(phrase /*P_UCI*/, alt /*84*/, /*phrases*/ 4, T /*T[1], T[2], T[3], T[4]*/);
  } else if (alt == 84) {
    T[1] = lit('A');
    T[2] = lit('N');
    T[3] = lit('D');
    T[0] = mktuple(phrase /*P_UCI*/, alt /*85*/, /*phrases*/ 3, T /*T[1], T[2], T[3]*/);
  } else if (alt == 85) {
    T[1] = lit('E');
    T[2] = lit('X');
    T[3] = lit('I');
    T[4] = lit('T');
    T[0] = mktuple(phrase /*P_UCI*/, alt /*86*/, /*phrases*/ 4, T /*T[1], T[2], T[3], T[4]*/);
  } else if (alt == 86) {
    T[1] = lit('O');
    T[2] = lit('U');
    T[3] = lit('T');
    T[0] = mktuple(phrase /*P_UCI*/, alt /*87*/, /*phrases*/ 3, T /*T[1], T[2], T[3]*/);
  } else if (alt == 87) {
    T[1] = lit('X');
    T[0] = mktuple(phrase /*P_UCI*/, alt /*88*/, /*phrases*/ 1, T /*T[1]*/);
  } else if (alt == 88) {
    T[1] = lit('P');
    T[2] = build_ast(A[ap+0], depth+1); // <IOM>
    T[3] = build_ast(A[ap+1], depth+1); // <ATOF>
    T[4] = lit('Q');
    T[5] = N(ap+2);
    T[0] = mktuple(phrase /*P_UCI*/, alt /*89*/, /*phrases*/ 5, T /*T[1], T[2], T[3], T[4], T[5]*/);
  } else if (alt == 89) {
    T[1] = lit('T');
    T[2] = lit('L');
    T[3] = lit('O');
    T[4] = lit('G');
    T[5] = N(ap+0);
    T[0] = mktuple(phrase /*P_UCI*/, alt /*90*/, /*phrases*/ 5, T /*T[1], T[2], T[3], T[4], T[5]*/);
  } else if (alt == 90) {
    T[1] = lit('I');
    T[2] = lit('N');
    T[3] = lit('T');
    T[4] = lit('Q');
    T[5] = N(ap+0);
    T[0] = mktuple(phrase /*P_UCI*/, alt /*91*/, /*phrases*/ 5, T /*T[1], T[2], T[3], T[4], T[5]*/);
  } else if (alt == 91) {
    T[1] = lit('P');
    T[2] = lit('A');
    T[3] = lit('R');
    T[4] = lit('Q');
    T[5] = N(ap+0);
    T[0] = mktuple(phrase /*P_UCI*/, alt /*92*/, /*phrases*/ 5, T /*T[1], T[2], T[3], T[4], T[5]*/);
  } else if (alt == 92) {
    T[1] = lit('B');
    T[2] = lit('U');
    T[3] = lit('S');
    T[4] = lit('Y');
    T[5] = lit('Q');
    T[6] = N(ap+0);
    T[0] = mktuple(phrase /*P_UCI*/, alt /*93*/, /*phrases*/ 6, T /*T[1], T[2], T[3], T[4], T[5], T[6]*/);
  } else if (alt == 93) {
    T[1] = lit('M');
    T[2] = lit('A');
    T[3] = lit('N');
    T[4] = lit('U');
    T[5] = lit('A');
    T[6] = lit('L');
    T[7] = lit('Q');
    T[8] = N(ap+0);
    T[0] = mktuple(phrase /*P_UCI*/, alt /*94*/, /*phrases*/ 8, T /*T[1], T[2], T[3], T[4], T[5], T[6], T[7], T[8]*/);
  } else if (alt == 94) {
    T[1] = lit('C');
    T[2] = lit('T');
    T[3] = lit('Q');
    T[4] = N(ap+0);
    T[0] = mktuple(phrase /*P_UCI*/, alt /*95*/, /*phrases*/ 4, T /*T[1], T[2], T[3], T[4]*/);
  } else if (alt == 95) {
    T[1] = lit('C');
    T[2] = lit('L');
    T[3] = lit('O');
    T[4] = lit('Q');
    T[5] = N(ap+0);
    T[0] = mktuple(phrase /*P_UCI*/, alt /*96*/, /*phrases*/ 5, T /*T[1], T[2], T[3], T[4], T[5]*/);
  } else if (alt == 96) {
    T[1] = lit('S');
    T[2] = lit('E');
    T[3] = lit('T');
    T[4] = build_ast(A[ap+0], depth+1); // <Opt_Plus>
    T[5] = N(ap+1);
    T[0] = mktuple(phrase /*P_UCI*/, alt /*97*/, /*phrases*/ 5, T /*T[1], T[2], T[3], T[4], T[5]*/);
  } else if (alt == 97) {
    T[1] = lit('A');
    T[2] = lit('D');
    T[3] = lit('V');
    T[4] = lit('C');
    T[5] = lit('A');
    T[6] = N(ap+0);
    T[0] = mktuple(phrase /*P_UCI*/, alt /*98*/, /*phrases*/ 6, T /*T[1], T[2], T[3], T[4], T[5], T[6]*/);
  } else if (alt == 98) {
    T[1] = OCTAL(ap+0);
    T[2] = lit('/');
    T[3] = OCTAL(ap+1);
    T[4] = lit('/');
    T[5] = OCTAL(ap+2);
    T[0] = mktuple(phrase /*P_UCI*/, alt /*99*/, /*phrases*/ 5, T /*T[1], T[2], T[3], T[4], T[5]*/);
  } else if (alt == 99) {
    T[1] = build_ast(A[ap+0], depth+1); // <Opt_Equals>
    T[2] = lit('F');
    T[3] = N(ap+1);
    T[4] = build_ast(A[ap+2], depth+1); // <E_INSTR>
    T[0] = mktuple(phrase /*P_UCI*/, alt /*100*/, /*phrases*/ 4, T /*T[1], T[2], T[3], T[4]*/);
  } else if (alt == 100) {
    T[1] = lit('J');
    T[2] = lit('S');
    T[3] = lit('E');
    T[4] = N(ap+0);
    T[0] = mktuple(phrase /*P_UCI*/, alt /*101*/, /*phrases*/ 4, T /*T[1], T[2], T[3], T[4]*/);
  } else if (alt == 101) {
    T[1] = lit('J');
    T[2] = lit('E');
    T[3] = N(ap+0);
    T[0] = mktuple(phrase /*P_UCI*/, alt /*102*/, /*phrases*/ 3, T /*T[1], T[2], T[3]*/);
  } else               {
    T[0] = mktuple(phrase /*P_UCI*/, alt /*103*/, /*phrases*/ 0, T /**/);
  }
  return T[0];



 
//\\ P<J_INSTR> = 
//\\    'C' <N> 'N' 'Z' 'S',
//\\    'C' <N> 'N' 'Z',
//\\    'C' <N> 'Z',
//\\    '=' 'Z',
//\\    '=',
//\\    '#' 'Z',
//\\    '#',
//\\    '>' 'Z',
//\\    '>' '=' 'Z',
//\\    '<' 'Z',
//\\    '<' '=' 'Z',
//\\    'V',
//\\    'N' 'V',
//\\    'E' 'N',
//\\    'N' 'E' 'N',
//\\    'F' 'J',
//\\    'N' 'F' 'J',
//\\    'T' 'R',
//\\    'N' 'T' 'R',
//\\   ;

case P_J_INSTR:
  if (alt == 0)        {
    T[1] = lit('C');
    T[2] = N(ap+0);
    T[3] = lit('N');
    T[4] = lit('Z');
    T[5] = lit('S');
    T[0] = mktuple(phrase /*P_J_INSTR*/, alt /*1*/, /*phrases*/ 5, T /*T[1], T[2], T[3], T[4], T[5]*/);
  } else if (alt == 1) {
    T[1] = lit('C');
    T[2] = N(ap+0);
    T[3] = lit('N');
    T[4] = lit('Z');
    T[0] = mktuple(phrase /*P_J_INSTR*/, alt /*2*/, /*phrases*/ 4, T /*T[1], T[2], T[3], T[4]*/);
  } else if (alt == 2) {
    T[1] = lit('C');
    T[2] = N(ap+0);
    T[3] = lit('Z');
    T[0] = mktuple(phrase /*P_J_INSTR*/, alt /*3*/, /*phrases*/ 3, T /*T[1], T[2], T[3]*/);
  } else if (alt == 3) {
    T[1] = lit('=');
    T[2] = lit('Z');
    T[0] = mktuple(phrase /*P_J_INSTR*/, alt /*4*/, /*phrases*/ 2, T /*T[1], T[2]*/);
  } else if (alt == 4) {
    T[1] = lit('=');
    T[0] = mktuple(phrase /*P_J_INSTR*/, alt /*5*/, /*phrases*/ 1, T /*T[1]*/);
  } else if (alt == 5) {
    T[1] = lit('#');
    T[2] = lit('Z');
    T[0] = mktuple(phrase /*P_J_INSTR*/, alt /*6*/, /*phrases*/ 2, T /*T[1], T[2]*/);
  } else if (alt == 6) {
    T[1] = lit('#');
    T[0] = mktuple(phrase /*P_J_INSTR*/, alt /*7*/, /*phrases*/ 1, T /*T[1]*/);
  } else if (alt == 7) {
    T[1] = lit('>');
    T[2] = lit('Z');
    T[0] = mktuple(phrase /*P_J_INSTR*/, alt /*8*/, /*phrases*/ 2, T /*T[1], T[2]*/);
  } else if (alt == 8) {
    T[1] = lit('>');
    T[2] = lit('=');
    T[3] = lit('Z');
    T[0] = mktuple(phrase /*P_J_INSTR*/, alt /*9*/, /*phrases*/ 3, T /*T[1], T[2], T[3]*/);
  } else if (alt == 9) {
    T[1] = lit('<');
    T[2] = lit('Z');
    T[0] = mktuple(phrase /*P_J_INSTR*/, alt /*10*/, /*phrases*/ 2, T /*T[1], T[2]*/);
  } else if (alt == 10) {
    T[1] = lit('<');
    T[2] = lit('=');
    T[3] = lit('Z');
    T[0] = mktuple(phrase /*P_J_INSTR*/, alt /*11*/, /*phrases*/ 3, T /*T[1], T[2], T[3]*/);
  } else if (alt == 11) {
    T[1] = lit('V');
    T[0] = mktuple(phrase /*P_J_INSTR*/, alt /*12*/, /*phrases*/ 1, T /*T[1]*/);
  } else if (alt == 12) {
    T[1] = lit('N');
    T[2] = lit('V');
    T[0] = mktuple(phrase /*P_J_INSTR*/, alt /*13*/, /*phrases*/ 2, T /*T[1], T[2]*/);
  } else if (alt == 13) {
    T[1] = lit('E');
    T[2] = lit('N');
    T[0] = mktuple(phrase /*P_J_INSTR*/, alt /*14*/, /*phrases*/ 2, T /*T[1], T[2]*/);
  } else if (alt == 14) {
    T[1] = lit('N');
    T[2] = lit('E');
    T[3] = lit('N');
    T[0] = mktuple(phrase /*P_J_INSTR*/, alt /*15*/, /*phrases*/ 3, T /*T[1], T[2], T[3]*/);
  } else if (alt == 15) {
    T[1] = lit('F');
    T[2] = lit('J');
    T[0] = mktuple(phrase /*P_J_INSTR*/, alt /*16*/, /*phrases*/ 2, T /*T[1], T[2]*/);
  } else if (alt == 16) {
    T[1] = lit('N');
    T[2] = lit('F');
    T[3] = lit('J');
    T[0] = mktuple(phrase /*P_J_INSTR*/, alt /*17*/, /*phrases*/ 3, T /*T[1], T[2], T[3]*/);
  } else if (alt == 17) {
    T[1] = lit('T');
    T[2] = lit('R');
    T[0] = mktuple(phrase /*P_J_INSTR*/, alt /*18*/, /*phrases*/ 2, T /*T[1], T[2]*/);
  } else if (alt == 18) {
    T[1] = lit('N');
    T[2] = lit('T');
    T[3] = lit('R');
    T[0] = mktuple(phrase /*P_J_INSTR*/, alt /*19*/, /*phrases*/ 3, T /*T[1], T[2], T[3]*/);
  } else               {
    T[0] = mktuple(phrase /*P_J_INSTR*/, alt /*20*/, /*phrases*/ 0, T /**/);
  }
  return T[0];



 
//\\ P<MS_INSTR> = 
//\\    'Q' 'H' 'N',
//\\    'Q' 'H',
//\\    'Q' 'N',
//\\    'Q',
//\\    'H' 'N',
//\\    'H',
//\\    'N',
//\\   ;

case P_MS_INSTR:
  if (alt == 0)        {
    T[1] = lit('Q');
    T[2] = lit('H');
    T[3] = lit('N');
    T[0] = mktuple(phrase /*P_MS_INSTR*/, alt /*1*/, /*phrases*/ 3, T /*T[1], T[2], T[3]*/);
  } else if (alt == 1) {
    T[1] = lit('Q');
    T[2] = lit('H');
    T[0] = mktuple(phrase /*P_MS_INSTR*/, alt /*2*/, /*phrases*/ 2, T /*T[1], T[2]*/);
  } else if (alt == 2) {
    T[1] = lit('Q');
    T[2] = lit('N');
    T[0] = mktuple(phrase /*P_MS_INSTR*/, alt /*3*/, /*phrases*/ 2, T /*T[1], T[2]*/);
  } else if (alt == 3) {
    T[1] = lit('Q');
    T[0] = mktuple(phrase /*P_MS_INSTR*/, alt /*4*/, /*phrases*/ 1, T /*T[1]*/);
  } else if (alt == 4) {
    T[1] = lit('H');
    T[2] = lit('N');
    T[0] = mktuple(phrase /*P_MS_INSTR*/, alt /*5*/, /*phrases*/ 2, T /*T[1], T[2]*/);
  } else if (alt == 5) {
    T[1] = lit('H');
    T[0] = mktuple(phrase /*P_MS_INSTR*/, alt /*6*/, /*phrases*/ 1, T /*T[1]*/);
  } else if (alt == 6) {
    T[1] = lit('N');
    T[0] = mktuple(phrase /*P_MS_INSTR*/, alt /*7*/, /*phrases*/ 1, T /*T[1]*/);
  } else               {
    T[0] = mktuple(phrase /*P_MS_INSTR*/, alt /*8*/, /*phrases*/ 0, T /**/);
  }
  return T[0];



 
//\\ P<SH_INSTR> = 
//\\    'A' <Opt_Plus> <N>,
//\\    'A' 'D' <Opt_Plus> <N>,
//\\    'L' <Opt_Plus> <N>,
//\\    'L' 'D' <Opt_Plus> <N>,
//\\    'C' <Opt_Plus> <N>,
//\\    'A' 'C' <N>,
//\\    'A' 'D' 'C' <N>,
//\\    'L' 'C' <N>,
//\\    'L' 'D' 'C' <N>,
//\\    'C' 'C' <N>;

case P_SH_INSTR:
  if (alt == 0)        {
    T[1] = lit('A');
    T[2] = build_ast(A[ap+0], depth+1); // <Opt_Plus>
    T[3] = N(ap+1);
    T[0] = mktuple(phrase /*P_SH_INSTR*/, alt /*1*/, /*phrases*/ 3, T /*T[1], T[2], T[3]*/);
  } else if (alt == 1) {
    T[1] = lit('A');
    T[2] = lit('D');
    T[3] = build_ast(A[ap+0], depth+1); // <Opt_Plus>
    T[4] = N(ap+1);
    T[0] = mktuple(phrase /*P_SH_INSTR*/, alt /*2*/, /*phrases*/ 4, T /*T[1], T[2], T[3], T[4]*/);
  } else if (alt == 2) {
    T[1] = lit('L');
    T[2] = build_ast(A[ap+0], depth+1); // <Opt_Plus>
    T[3] = N(ap+1);
    T[0] = mktuple(phrase /*P_SH_INSTR*/, alt /*3*/, /*phrases*/ 3, T /*T[1], T[2], T[3]*/);
  } else if (alt == 3) {
    T[1] = lit('L');
    T[2] = lit('D');
    T[3] = build_ast(A[ap+0], depth+1); // <Opt_Plus>
    T[4] = N(ap+1);
    T[0] = mktuple(phrase /*P_SH_INSTR*/, alt /*4*/, /*phrases*/ 4, T /*T[1], T[2], T[3], T[4]*/);
  } else if (alt == 4) {
    T[1] = lit('C');
    T[2] = build_ast(A[ap+0], depth+1); // <Opt_Plus>
    T[3] = N(ap+1);
    T[0] = mktuple(phrase /*P_SH_INSTR*/, alt /*5*/, /*phrases*/ 3, T /*T[1], T[2], T[3]*/);
  } else if (alt == 5) {
    T[1] = lit('A');
    T[2] = lit('C');
    T[3] = N(ap+0);
    T[0] = mktuple(phrase /*P_SH_INSTR*/, alt /*6*/, /*phrases*/ 3, T /*T[1], T[2], T[3]*/);
  } else if (alt == 6) {
    T[1] = lit('A');
    T[2] = lit('D');
    T[3] = lit('C');
    T[4] = N(ap+0);
    T[0] = mktuple(phrase /*P_SH_INSTR*/, alt /*7*/, /*phrases*/ 4, T /*T[1], T[2], T[3], T[4]*/);
  } else if (alt == 7) {
    T[1] = lit('L');
    T[2] = lit('C');
    T[3] = N(ap+0);
    T[0] = mktuple(phrase /*P_SH_INSTR*/, alt /*8*/, /*phrases*/ 3, T /*T[1], T[2], T[3]*/);
  } else if (alt == 8) {
    T[1] = lit('L');
    T[2] = lit('D');
    T[3] = lit('C');
    T[4] = N(ap+0);
    T[0] = mktuple(phrase /*P_SH_INSTR*/, alt /*9*/, /*phrases*/ 4, T /*T[1], T[2], T[3], T[4]*/);
  } else               {
    T[1] = lit('C');
    T[2] = lit('C');
    T[3] = N(ap+0);
    T[0] = mktuple(phrase /*P_SH_INSTR*/, alt /*10*/, /*phrases*/ 3, T /*T[1], T[2], T[3]*/);
  }
  return T[0];



 
//\\ P<QS_INSTR> = 
//\\    'L' 'I' 'N' 'K',
//\\    'Q' <N>,
//\\    'C' <N>,
//\\    'I' <N>,
//\\    'M' <N>,
//\\    'R' 'C' <N>,
//\\    'R' 'I' <N>,
//\\    'R' 'M' <N>,
//\\    '+' 'Q' <N>,
//\\    '+' 'C' <N>,
//\\    '+' 'I' <N>,
//\\    '+' 'M' <N>;

case P_QS_INSTR:
  if (alt == 0)        {
    T[1] = lit('L');
    T[2] = lit('I');
    T[3] = lit('N');
    T[4] = lit('K');
    T[0] = mktuple(phrase /*P_QS_INSTR*/, alt /*1*/, /*phrases*/ 4, T /*T[1], T[2], T[3], T[4]*/);
  } else if (alt == 1) {
    T[1] = lit('Q');
    T[2] = N(ap+0);
    T[0] = mktuple(phrase /*P_QS_INSTR*/, alt /*2*/, /*phrases*/ 2, T /*T[1], T[2]*/);
  } else if (alt == 2) {
    T[1] = lit('C');
    T[2] = N(ap+0);
    T[0] = mktuple(phrase /*P_QS_INSTR*/, alt /*3*/, /*phrases*/ 2, T /*T[1], T[2]*/);
  } else if (alt == 3) {
    T[1] = lit('I');
    T[2] = N(ap+0);
    T[0] = mktuple(phrase /*P_QS_INSTR*/, alt /*4*/, /*phrases*/ 2, T /*T[1], T[2]*/);
  } else if (alt == 4) {
    T[1] = lit('M');
    T[2] = N(ap+0);
    T[0] = mktuple(phrase /*P_QS_INSTR*/, alt /*5*/, /*phrases*/ 2, T /*T[1], T[2]*/);
  } else if (alt == 5) {
    T[1] = lit('R');
    T[2] = lit('C');
    T[3] = N(ap+0);
    T[0] = mktuple(phrase /*P_QS_INSTR*/, alt /*6*/, /*phrases*/ 3, T /*T[1], T[2], T[3]*/);
  } else if (alt == 6) {
    T[1] = lit('R');
    T[2] = lit('I');
    T[3] = N(ap+0);
    T[0] = mktuple(phrase /*P_QS_INSTR*/, alt /*7*/, /*phrases*/ 3, T /*T[1], T[2], T[3]*/);
  } else if (alt == 7) {
    T[1] = lit('R');
    T[2] = lit('M');
    T[3] = N(ap+0);
    T[0] = mktuple(phrase /*P_QS_INSTR*/, alt /*8*/, /*phrases*/ 3, T /*T[1], T[2], T[3]*/);
  } else if (alt == 8) {
    T[1] = lit('+');
    T[2] = lit('Q');
    T[3] = N(ap+0);
    T[0] = mktuple(phrase /*P_QS_INSTR*/, alt /*9*/, /*phrases*/ 3, T /*T[1], T[2], T[3]*/);
  } else if (alt == 9) {
    T[1] = lit('+');
    T[2] = lit('C');
    T[3] = N(ap+0);
    T[0] = mktuple(phrase /*P_QS_INSTR*/, alt /*10*/, /*phrases*/ 3, T /*T[1], T[2], T[3]*/);
  } else if (alt == 10) {
    T[1] = lit('+');
    T[2] = lit('I');
    T[3] = N(ap+0);
    T[0] = mktuple(phrase /*P_QS_INSTR*/, alt /*11*/, /*phrases*/ 3, T /*T[1], T[2], T[3]*/);
  } else               {
    T[1] = lit('+');
    T[2] = lit('M');
    T[3] = N(ap+0);
    T[0] = mktuple(phrase /*P_QS_INSTR*/, alt /*12*/, /*phrases*/ 3, T /*T[1], T[2], T[3]*/);
  }
  return T[0];



 
//\\ P<Plus> = 
//\\    '+',
//\\    '-';

case P_Plus:
  if (alt == 0)        {
    T[1] = lit('+');
    T[0] = mktuple(phrase /*P_Plus*/, alt /*1*/, /*phrases*/ 1, T /*T[1]*/);
  } else               {
    T[1] = lit('-');
    T[0] = mktuple(phrase /*P_Plus*/, alt /*2*/, /*phrases*/ 1, T /*T[1]*/);
  }
  return T[0];



 
//\\ P<Opt_Equals> = 
//\\    '=',
//\\   ;

case P_Opt_Equals:
  if (alt == 0)        {
    T[1] = lit('=');
    T[0] = mktuple(phrase /*P_Opt_Equals*/, alt /*1*/, /*phrases*/ 1, T /*T[1]*/);
  } else               {
    T[0] = mktuple(phrase /*P_Opt_Equals*/, alt /*2*/, /*phrases*/ 0, T /**/);
  }
  return T[0];



 
//\\ P<Opt_P> = 
//\\    'P',
//\\   ;

case P_Opt_P:
  if (alt == 0)        {
    T[1] = lit('P');
    T[0] = mktuple(phrase /*P_Opt_P*/, alt /*1*/, /*phrases*/ 1, T /*T[1]*/);
  } else               {
    T[0] = mktuple(phrase /*P_Opt_P*/, alt /*2*/, /*phrases*/ 0, T /**/);
  }
  return T[0];



 
//\\ P<IOM> = 
//\\    'I',
//\\    'O',
//\\    'M';

case P_IOM:
  if (alt == 0)        {
    T[1] = lit('I');
    T[0] = mktuple(phrase /*P_IOM*/, alt /*1*/, /*phrases*/ 1, T /*T[1]*/);
  } else if (alt == 1) {
    T[1] = lit('O');
    T[0] = mktuple(phrase /*P_IOM*/, alt /*2*/, /*phrases*/ 1, T /*T[1]*/);
  } else               {
    T[1] = lit('M');
    T[0] = mktuple(phrase /*P_IOM*/, alt /*3*/, /*phrases*/ 1, T /*T[1]*/);
  }
  return T[0];



 
//\\ P<ATOF> = 
//\\    'A',
//\\    'B',
//\\    'C',
//\\    'D',
//\\    'E',
//\\    'F';

case P_ATOF:
  if (alt == 0)        {
    T[1] = lit('A');
    T[0] = mktuple(phrase /*P_ATOF*/, alt /*1*/, /*phrases*/ 1, T /*T[1]*/);
  } else if (alt == 1) {
    T[1] = lit('B');
    T[0] = mktuple(phrase /*P_ATOF*/, alt /*2*/, /*phrases*/ 1, T /*T[1]*/);
  } else if (alt == 2) {
    T[1] = lit('C');
    T[0] = mktuple(phrase /*P_ATOF*/, alt /*3*/, /*phrases*/ 1, T /*T[1]*/);
  } else if (alt == 3) {
    T[1] = lit('D');
    T[0] = mktuple(phrase /*P_ATOF*/, alt /*4*/, /*phrases*/ 1, T /*T[1]*/);
  } else if (alt == 4) {
    T[1] = lit('E');
    T[0] = mktuple(phrase /*P_ATOF*/, alt /*5*/, /*phrases*/ 1, T /*T[1]*/);
  } else               {
    T[1] = lit('F');
    T[0] = mktuple(phrase /*P_ATOF*/, alt /*6*/, /*phrases*/ 1, T /*T[1]*/);
  }
  return T[0];



 
//\\ P<E_INSTR> = 
//\\    'M' <N> 'Q',
//\\    'M' <N>,
//\\   ;

case P_E_INSTR:
  if (alt == 0)        {
    T[1] = lit('M');
    T[2] = N(ap+0);
    T[3] = lit('Q');
    T[0] = mktuple(phrase /*P_E_INSTR*/, alt /*1*/, /*phrases*/ 3, T /*T[1], T[2], T[3]*/);
  } else if (alt == 1) {
    T[1] = lit('M');
    T[2] = N(ap+0);
    T[0] = mktuple(phrase /*P_E_INSTR*/, alt /*2*/, /*phrases*/ 2, T /*T[1], T[2]*/);
  } else               {
    T[0] = mktuple(phrase /*P_E_INSTR*/, alt /*3*/, /*phrases*/ 0, T /**/);
  }
  return T[0];



 
//\\ P<UI> = 
//\\    <NAME> <APP> <SETMARKER1> <RESTOF_UI>,
//\\    '-' '>' <N>,
//\\    'c' 'a' 'p' 't' 'i' 'o' 'n' <CAPTIONTEXT>,
//\\    'r' 'e' 't' 'u' 'r' 'n',
//\\    'r' 'e' 's' 'u' 'l' 't' '=' <Opt_Plus> <OPERAND> <RESTOF_EXPR>,
//\\    's' 't' 'o' 'p',
//\\    '-' '>' <NAME> '(' <Opt_Plus> <OPERAND> <RESTOF_EXPR> ')',
//\\    'm' 'o' 'n' 'i' 't' 'o' 'r' <N>;

case P_UI:
  if (alt == 0)        {
    T[1] = NAME(ap+0);
    T[2] = build_ast(A[ap+1], depth+1); // <APP>
    T[3] = SETMARKER1(ap+2);
    T[4] = build_ast(A[ap+3], depth+1); // <RESTOF_UI>
    T[0] = mktuple(phrase /*P_UI*/, alt /*1*/, /*phrases*/ 4, T /*T[1], T[2], T[3], T[4]*/);
  } else if (alt == 1) {
    T[1] = lit('-');
    T[2] = lit('>');
    T[3] = N(ap+0);
    T[0] = mktuple(phrase /*P_UI*/, alt /*2*/, /*phrases*/ 3, T /*T[1], T[2], T[3]*/);
  } else if (alt == 2) {
    T[1] = lit('c');
    T[2] = lit('a');
    T[3] = lit('p');
    T[4] = lit('t');
    T[5] = lit('i');
    T[6] = lit('o');
    T[7] = lit('n');
    T[8] = CAPTIONTEXT(ap+0);
    T[0] = mktuple(phrase /*P_UI*/, alt /*3*/, /*phrases*/ 8, T /*T[1], T[2], T[3], T[4], T[5], T[6], T[7], T[8]*/);
  } else if (alt == 3) {
    T[1] = lit('r');
    T[2] = lit('e');
    T[3] = lit('t');
    T[4] = lit('u');
    T[5] = lit('r');
    T[6] = lit('n');
    T[0] = mktuple(phrase /*P_UI*/, alt /*4*/, /*phrases*/ 6, T /*T[1], T[2], T[3], T[4], T[5], T[6]*/);
  } else if (alt == 4) {
    T[1] = lit('r');
    T[2] = lit('e');
    T[3] = lit('s');
    T[4] = lit('u');
    T[5] = lit('l');
    T[6] = lit('t');
    T[7] = lit('=');
    T[8] = build_ast(A[ap+0], depth+1); // <Opt_Plus>
    T[9] = build_ast(A[ap+1], depth+1); // <OPERAND>
    T[10] = build_ast(A[ap+2], depth+1); // <RESTOF_EXPR>
    T[0] = mktuple(phrase /*P_UI*/, alt /*5*/, /*phrases*/ 10, T /*T[1], T[2], T[3], T[4], T[5], T[6], T[7], T[8], T[9], T[10]*/);
  } else if (alt == 5) {
    T[1] = lit('s');
    T[2] = lit('t');
    T[3] = lit('o');
    T[4] = lit('p');
    T[0] = mktuple(phrase /*P_UI*/, alt /*6*/, /*phrases*/ 4, T /*T[1], T[2], T[3], T[4]*/);
  } else if (alt == 6) {
    T[1] = lit('-');
    T[2] = lit('>');
    T[3] = NAME(ap+0);
    T[4] = lit('(');
    T[5] = build_ast(A[ap+1], depth+1); // <Opt_Plus>
    T[6] = build_ast(A[ap+2], depth+1); // <OPERAND>
    T[7] = build_ast(A[ap+3], depth+1); // <RESTOF_EXPR>
    T[8] = lit(')');
    T[0] = mktuple(phrase /*P_UI*/, alt /*7*/, /*phrases*/ 8, T /*T[1], T[2], T[3], T[4], T[5], T[6], T[7], T[8]*/);
  } else               {
    T[1] = lit('m');
    T[2] = lit('o');
    T[3] = lit('n');
    T[4] = lit('i');
    T[5] = lit('t');
    T[6] = lit('o');
    T[7] = lit('r');
    T[8] = N(ap+0);
    T[0] = mktuple(phrase /*P_UI*/, alt /*8*/, /*phrases*/ 8, T /*T[1], T[2], T[3], T[4], T[5], T[6], T[7], T[8]*/);
  }
  return T[0];