temp = fFactory.createPattern(symbol, null); getNextToken(); } else { if (isSymbolIdentifier()) { final ASTNode check = getSymbol(); temp = fFactory.createPattern(symbol, check); } else { temp = fFactory.createPattern(symbol, null); temp = fFactory.createPattern(symbol, null, true); getNextToken(); } else { if (isSymbolIdentifier()) { final ASTNode check = getSymbol(); temp = fFactory.createPattern(symbol, check, true); } else { temp = fFactory.createPattern(symbol, null, true); ASTNode defaultValue = parseExpression(); final FunctionNode function = fFactory.createAST(fFactory.createSymbol("Optional")); function.add(fFactory.createPattern(symbol, null, false)); function.add(defaultValue); temp = function; if (isWhitespace()) { getNextToken(); temp = fFactory.createPattern(null, null);