All Downloads are FREE. Search and download functionalities are using the official Maven repository.

com.lyncode.jtwig.parser.parboiled.JtwigBaseParser Maven / Gradle / Ivy

/**
 * Licensed under the Apache License, Version 2.0 (the "License");
 * you may not use this file except in compliance with the License.
 * You may obtain a copy of the License at
 *
 *     http://www.apache.org/licenses/LICENSE-2.0
 *
 * Unless required by applicable law or agreed to in writing, software
 * distributed under the License is distributed on an "AS IS" BASIS,
 * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
 * See the License for the specific language governing permissions and
 * limitations under the License.
 */

package com.lyncode.jtwig.parser.parboiled;

import com.lyncode.jtwig.exception.ParseBypassException;
import com.lyncode.jtwig.exception.ParseException;
import com.lyncode.jtwig.parser.model.JtwigPosition;
import com.lyncode.jtwig.resource.JtwigResource;
import org.parboiled.BaseParser;
import org.parboiled.Rule;

public class JtwigBaseParser extends BaseParser {
    final JtwigResource resource;

    public JtwigBaseParser(JtwigResource resource) {
        this.resource = resource;
    }

    public boolean action (Object action) {
        return true;
    }

    public JtwigPosition currentPosition () {
        return new JtwigPosition(
                resource,
                position().line,
                position().column
        );
    }

    public JtwigResource getResource() {
        return resource;
    }



    boolean throwException(ParseException exception) throws ParseBypassException {
        throw new ParseBypassException(exception);
    }

     T peek(int position, Class typeClass) {
        return typeClass.cast(peek(position));
    }

     T peek(Class typeClass) {
        return peek(0, typeClass);
    }

     T pop(int position, Class typeClass) {
        return typeClass.cast(pop(position));
    }

     T pop(Class typeClass) {
        return pop(0, typeClass);
    }

    public Rule mandatory(Rule rule, ParseException exception) {
        return FirstOf(
                rule,
                throwException(exception)
        );
    }
}




© 2015 - 2024 Weber Informatics LLC | Privacy Policy