@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)); } }
public ASTNode createFunction(final INodeParserFactory factory, final ASTNode argument) { return factory.createFunction(factory.createSymbol(getFunctionName()), argument); } }
public ASTNode createFunction(final INodeParserFactory factory, final ASTNode argument) { return factory.createFunction(factory.createSymbol(getFunctionName()), argument); } }
@Override public ASTNode createFunction(final INodeParserFactory factory, final ASTNode argument) { return factory.createFunction(factory.createSymbol("Times"), factory.createInteger(-1), argument); } }
@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))); } }
public ASTNode createFunction(final INodeParserFactory factory, final ASTNode lhs, final ASTNode rhs) { if (fOperatorString.equals("//")) { // lhs // rhs ==> rhs[lhs] FunctionNode function =factory.createAST(rhs); function.add(lhs); return function; } return factory.createFunction(factory.createSymbol(getFunctionName()), lhs, rhs); } }
@Override public ASTNode createFunction(final INodeParserFactory factory, final ASTNode lhs, final ASTNode rhs) { if (rhs instanceof FunctionNode) { FunctionNode r = (FunctionNode) rhs; if (r.size() == 3) { if (r.get(0).equals(factory.createSymbol("Set"))) { return factory.createFunction(factory.createSymbol("TagSet"), lhs, r.get(1), r.get(2)); } else if (r.get(0).equals(factory.createSymbol("SetDelayed"))) { return factory.createFunction(factory.createSymbol("TagSetDelayed"), lhs, r.get(1), r.get(2)); } } } return factory.createFunction(factory.createSymbol("TagSet"), lhs, rhs); } }
private ASTNode parseDerivative(ASTNode expr) { int derivativeCounter = 1; getNextToken(); while (fToken == TT_DERIVATIVE) { derivativeCounter++; getNextToken(); } FunctionNode head = fFactory.createFunction(DERIVATIVE, new IntegerNode(derivativeCounter)); FunctionNode deriv = fFactory.createAST(head); deriv.add(expr); expr = parseArguments(deriv); return expr; }
/** * Get a list {...} * */ private ASTNode getList() throws SyntaxError { final FunctionNode function = fFactory.createFunction(fFactory.createSymbol(IConstantOperators.List)); fRecursionDepth++; getNextToken(); if (fToken == TT_LIST_CLOSE) { fRecursionDepth--; getNextToken(); return function; } getArguments(function); fRecursionDepth--; if (fToken == TT_LIST_CLOSE) { getNextToken(); return function; } throwSyntaxError("'}' expected."); return null; }
do { if (function == null) { function = fFactory.createFunction(fFactory.createSymbol(IConstantOperators.Part), temp); } else { function = fFactory.createFunction(fFactory.createSymbol(IConstantOperators.Part), function);
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 (Config.DOMINANT_IMPLICIT_TIMES || oper.getPrecedence() >= min_precedence) { rhs = parseLookaheadOperator(oper.getPrecedence()); lhs = fFactory.createFunction(fFactory.createSymbol(oper.getFunctionName()), lhs, rhs); continue;
} else if (fToken == TT_PERCENT) { final FunctionNode out = fFactory.createFunction(fFactory.createSymbol(IConstantOperators.Out)); final FunctionNode slot = fFactory.createFunction(fFactory.createSymbol(IConstantOperators.Slot)); if (fToken == TT_DIGIT) { slot.add(fFactory.createInteger(getInteger())); .createFunction(fFactory.createSymbol(IConstantOperators.SlotSequence)); if (fToken == TT_DIGIT) { slotSequencce.add(getNumber(false));