TokenFactorNode tokenFactorNode = tokenTermNode.getTokenFactorNodes().get(0);
checkNode(tokenFactorNode, 245, 6, tokenTermNode);
assertEquals(TokenFactorNode.Kind.SYMBOL, tokenFactorNode.getKind());
//TokenFactor 0 Symbol
SymbolNode symbolNode = tokenFactorNode.getSymbolNode();
checkNode(symbolNode, 245, 6, tokenFactorNode);
assertEquals(SymbolNode.Kind.IDENT, symbolNode.getKind());
assertNull(symbolNode.getString());
assertEquals(0, symbolNode.getCharacter());
//TokenFactor 0 Symbol Ident
IdentNode identNode = symbolNode.getIdentNode();
checkNode(identNode, 245, 6, symbolNode);
assertTrue(identNode.getIdent().equals("letter"));
assertEquals(IdentNode.Kind.CHARACTER_SET, identNode.getKind());
//TokenFactor 1
tokenFactorNode = tokenTermNode.getTokenFactorNodes().get(1);
checkNode(tokenFactorNode, 252, 16, tokenTermNode);
assertEquals(TokenFactorNode.Kind.ARBITRARY_OFTEN, tokenFactorNode.getKind());
//TokenFactor 1 TokenExpr
tokenExprNode = tokenFactorNode.getTokenExprNode();
checkNode(tokenExprNode, 253, 14, tokenFactorNode);
assertEquals(2, tokenExprNode.getTokenTermNodes().size());
//TokenFactor 1 TokenExpr TokenTerm 0
tokenTermNode = tokenExprNode.getTokenTermNodes().get(0);
checkNode(tokenTermNode, 253, 6, tokenExprNode);
//TokenFactor 1 TokenExpr TokenTerm 0 TokenFactor 0
tokenFactorNode = tokenTermNode.getTokenFactorNodes().get(0);
checkNode(tokenFactorNode, 253, 6, tokenTermNode);
assertEquals(TokenFactorNode.Kind.SYMBOL, tokenFactorNode.getKind());
//TokenFactor 1 TokenExpr TokenTerm 0 TokenFactor 0 Symbol
symbolNode = tokenFactorNode.getSymbolNode();
checkNode(symbolNode, 253, 6, tokenFactorNode);
assertEquals(SymbolNode.Kind.IDENT, symbolNode.getKind());
assertNull(symbolNode.getString());
assertEquals(0, symbolNode.getCharacter());
//TokenFactor 1 TokenExpr TokenTerm 0 TokenFactor 0 Symbol Ident
identNode = symbolNode.getIdentNode();
checkNode(identNode, 253, 6, symbolNode);
assertTrue(identNode.getIdent().equals("letter"));
assertEquals(IdentNode.Kind.CHARACTER_SET, identNode.getKind());
//TokenFactor 1 TokenExpr TokenTerm 1
tokenTermNode = tokenExprNode.getTokenTermNodes().get(1);
checkNode(tokenTermNode, 262, 5, tokenExprNode);
//TokenFactor 1 TokenExpr TokenTerm 1 TokenFactor 0
tokenFactorNode = tokenTermNode.getTokenFactorNodes().get(0);
checkNode(tokenFactorNode, 262, 5, tokenTermNode);
assertEquals(TokenFactorNode.Kind.SYMBOL, tokenFactorNode.getKind());
//TokenFactor 1 TokenExpr TokenTerm 0 TokenFactor 0 Symbol
symbolNode = tokenFactorNode.getSymbolNode();
checkNode(symbolNode, 262, 5, tokenFactorNode);
assertEquals(SymbolNode.Kind.IDENT, symbolNode.getKind());
assertNull(symbolNode.getString());
assertEquals(0, symbolNode.getCharacter());
//TokenFactor 1 TokenExpr TokenTerm 0 TokenFactor 0 Symbol Ident
identNode = symbolNode.getIdentNode();
checkNode(identNode, 262, 5, symbolNode);
assertTrue(identNode.getIdent().equals("digit"));
assertEquals(IdentNode.Kind.CHARACTER_SET, identNode.getKind());
}