@Override public ASTNode createFunction(final INodeParserFactory factory, final ASTNode argument) { return factory.createFunction(factory.createSymbol("Times"), factory.createInteger(-1), argument); } }
/** * Method Declaration. * * @return * @see */ private ASTNode getNumber(final boolean negative) throws SyntaxError { ASTNode temp = null; final Object[] result = getNumberString(); String number = (String) result[0]; final int numFormat = ((Integer) result[1]).intValue(); try { if (negative) { number = '-' + number; } if (numFormat < 0) { temp = fFactory.createDouble(number); } else { temp = fFactory.createInteger(number, numFormat); } } catch (final RuntimeException e) { throwSyntaxError("Number format error: " + number, number.length()); } getNextToken(); return temp; }
@Override public ASTNode createFunction(final INodeParserFactory factory, final ASTNode lhs, final ASTNode rhs) { return factory.createFunction(factory.createSymbol("Plus"), lhs, factory.createFunction(factory.createSymbol("Times"), factory.createInteger(-1), rhs)); } }
@Override public ASTNode createFunction(final INodeParserFactory factory, final ASTNode lhs, final ASTNode rhs) { if (fOperatorString.equals("@")) { FunctionNode fn = factory.createAST(lhs); fn.add(rhs); return fn; } FunctionNode fn = factory.createFunction(factory.createSymbol("Apply"), lhs, rhs); if (fOperatorString.equals("@@")) { return fn; } // case "@@@" fn.add(factory.createFunction(factory.createSymbol("List"), factory.createInteger(1))); return fn; } }
@Override public ASTNode createFunction(final INodeParserFactory factory, final ASTNode lhs, final ASTNode rhs) { if (rhs instanceof IntegerNode) { if (lhs instanceof IntegerNode) { return new FractionNode((IntegerNode) lhs, (IntegerNode) rhs); } return factory.createFunction(factory.createSymbol("Times"), new FractionNode(IntegerNode.C1, (IntegerNode) rhs), lhs); } if (lhs.equals(IntegerNode.C1)) { return factory.createFunction(factory.createSymbol("Power"), rhs, factory.createInteger(-1)); } return factory.createFunction(factory.createSymbol("Times"), lhs, factory.createFunction(factory.createSymbol("Power"), rhs, factory.createInteger(-1))); } }
private ASTNode parsePrimary(final int min_precedence) { if (fToken == TT_OPERATOR) { if (";;".equals(fOperatorString)) { FunctionNode function = fFactory.createFunction(fFactory.createSymbol(IConstantOperators.Span)); function.add(fFactory.createInteger(1)); getNextToken(); if (fToken == TT_COMMA || fToken == TT_ARGUMENTS_CLOSE || fToken == TT_PRECEDENCE_CLOSE) { function.add(fFactory.createSymbol(IConstantOperators.All)); return function; } function.add(parsePrimary(0)); if (fToken == TT_OPERATOR && ";;".equals(fOperatorString)) { function.add(fFactory.createSymbol(IConstantOperators.All)); getNextToken(); } return function; } if (".".equals(fOperatorString)) { fCurrentChar = '.'; return getNumber(false); } final PrefixOperator prefixOperator = determinePrefixOperator(); if (prefixOperator != null) { return parsePrefixOperator(prefixOperator); } throwSyntaxError("Operator: " + fOperatorString + " is no prefix operator."); } return getPart(min_precedence); }
if (fToken == TT_DIGIT) { countPercent = getInteger(); out.add(fFactory.createInteger(countPercent)); return out; out.add(fFactory.createInteger(-countPercent)); return parseArguments(out); } else if (fToken == TT_SLOT) { final FunctionNode slot = fFactory.createFunction(fFactory.createSymbol(IConstantOperators.Slot)); if (fToken == TT_DIGIT) { slot.add(fFactory.createInteger(getInteger())); } else { slot.add(fFactory.createInteger(1)); slotSequencce.add(getNumber(false)); } else { slotSequencce.add(fFactory.createInteger(1));