code: private Node parseSubExp(TokenType term) {
          Node node = parseBranch(term);
  
          if (token.type == term) {
              return node;
          } else if (token.type == TokenType.ALT) {
              ListNode top = ListNode.newAlt(node, null);
              ListNode t = top;
              while (token.type == TokenType.ALT) {
                  fetchToken();
                  node = parseBranch(term);
  
                  t.setTail(ListNode.newAlt(node, null));
                  t = t.tail;
              }
  
              if (token.type != term) parseSubExpError(term);
              return top;
          } else {
              parseSubExpError(term);
              return null; //not reached
          }
      }
docs: /* term_tok: TK_EOT or TK_SUBEXP_CLOSE