Package cc.redberry.core.parser

Source Code of cc.redberry.core.parser.ParserPower

/*
* Redberry: symbolic tensor computations.
*
* Copyright (c) 2010-2012:
*   Stanislav Poslavsky   <stvlpos@mail.ru>
*   Bolotin Dmitriy       <bolotin.dmitriy@gmail.com>
*
* This file is part of Redberry.
*
* Redberry is free software: you can redistribute it and/or modify
* it under the terms of the GNU General Public License as published by
* the Free Software Foundation, either version 3 of the License, or
* (at your option) any later version.
*
* Redberry is distributed in the hope that it will be useful,
* but WITHOUT ANY WARRANTY; without even the implied warranty of
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
* GNU General Public License for more details.
*
* You should have received a copy of the GNU General Public License
* along with Redberry. If not, see <http://www.gnu.org/licenses/>.
*/
package cc.redberry.core.parser;

import cc.redberry.core.tensor.Pow;
import cc.redberry.core.tensor.Tensor;
import cc.redberry.core.tensor.TensorNumber;

/**
*
* @author Dmitry Bolotin
* @author Stanislav Poslavsky
*/
public class ParserPower implements TensorParser {
    public static final ParserPower INSTANCE = new ParserPower();

    private ParserPower() {
    }
    private static final int parserID = 9986;

    @Override
    public int getPriority() {
        return parserID;
    }

    @Override
    //TODO rewrite code
    public Tensor parse(String expression, Parser parser) {
        if (expression.length() <= 5)
            return null;
        //FIXME situation Sin[x]+Cos[y] not good for this condition!
        if (!"Pow[".equals(expression.substring(0, 4)) || expression.charAt(expression.length() - 1) != ']')
            return null;
        String[] parts = expression.substring(4, expression.length() - 1).split(",");
        if (parts.length == 1)
            return null;
        Tensor arg = parser.parse(parts[0]);

        Tensor power = parser.parse(parts[1]);
        if (!(power instanceof TensorNumber))
            return null;
        return new Pow(arg, (TensorNumber) power);
    }
}
TOP

Related Classes of cc.redberry.core.parser.ParserPower

TOP
Copyright © 2018 www.massapi.com. All rights reserved.
All source code are property of their respective owners. Java is a trademark of Sun Microsystems, Inc and owned by ORACLE Inc. Contact coftware#gmail.com.