private void value() { if (token == Lexer.VARIABLE || token == Lexer.NUMBER) { root = NodeFactory.createTerminal(token, lexer.getValue()); if (token == Lexer.VARIABLE && allowedIdentifiers != null) { if (!allowedIdentifiers.contains(root.getSymbol())) throw new MalformedExpressionException( String.format("Unknown identifier '%s'", root.getSymbol())); } token = lexer.nextToken(); } else { throw new MalformedExpressionException( String.format("Value instead of <%s> expected.", token)); } }