Parser.java

package com.mackenziehigh.autumn.lang.compiler.args;

import com.mackenziehigh.snowflake.Grammar;
import com.mackenziehigh.snowflake.GrammarBuilder;
import com.mackenziehigh.snowflake.IParser;
import com.mackenziehigh.snowflake.ParserOutput;


/**
 * This class was auto-generated using the Snowflake parser-generator.
 *
 * <p>Generated On: Mon Mar 30 16:55:04 EDT 2015</p>
 */
public final class Parser implements IParser
{

    private static final Grammar grammar = grammar();


    /**
     * This method constructs the grammar object.
     */
    private static Grammar grammar()
    {
        final GrammarBuilder g = new GrammarBuilder();

        // Character Classes
        g.range("@class0", (char) 34, (char) 34);
        g.range("@class1", (char) 34, (char) 34);
        g.combine("@class2", "@class1");
        g.negate("@class3", "@class2");
        g.range("@class4", (char) 34, (char) 34);
        g.range("@class5", (char) 32, (char) 32);
        g.range("@class6", (char) 34, (char) 34);
        g.range("@class7", (char) 10, (char) 10);
        g.range("@class8", (char) 13, (char) 13);
        g.combine("@class9", "@class5", "@class6", "@class7", "@class8");
        g.negate("@class10", "@class9");
        g.range("@class11", (char) 0, (char) 65535);
        g.range("@class12", (char) 34, (char) 34);
        g.range("@class13", (char) 10, (char) 10);
        g.range("@class14", (char) 13, (char) 13);
        g.range("@class15", (char) 32, (char) 32);
        g.combine("@class16", "@class13", "@class14", "@class15");

        // Grammar Rules
        g.choose("@0", "accept", "error");
        g.choose("@19", "@15", "@16", "@17", "@18");
        g.choose("cases", "case_execute", "case_compile", "case_create", "case_run", "case_test", "case_doc", "case_version", "case_help", "case_license");
        g.chr("@3", "@class0");
        g.chr("@4", "@class3");
        g.chr("@6", "@class4");
        g.chr("@7", "@class10");
        g.chr("@9", "@class11");
        g.chr("Q", "@class12");
        g.chr("WS_CHR", "@class16");
        g.not("@2", "@1");
        g.repeat("@5", "@4", 0, 2147483647);
        g.repeat("@8", "@7", 1, 2147483647);
        g.repeat("WS", "WS_CHR", 0, 2147483647);
        g.repeat("args", "arg", 0, 2147483647);
        g.repeat("error", "@9", 0, 2147483647);
        g.repeat("paths", "path", 0, 2147483647);
        g.sequence("@1", "WS", "EXECUTE");
        g.sequence("AUTUMN", "Q", "@10", "Q");
        g.sequence("COMPILE", "Q", "@11", "Q");
        g.sequence("CREATE", "Q", "@12", "Q");
        g.sequence("DOCUMENT", "Q", "@13", "Q");
        g.sequence("EXECUTE", "Q", "@14", "Q");
        g.sequence("HELP", "Q", "@19", "Q");
        g.sequence("LICENSE", "Q", "@20", "Q");
        g.sequence("RUN", "Q", "@21", "Q");
        g.sequence("TEST", "Q", "@22", "Q");
        g.sequence("VERSION", "Q", "@23", "Q");
        g.sequence("accept", "WS", "cases", "WS");
        g.sequence("arg", "qstring", "WS");
        g.sequence("case_compile", "COMPILE", "WS");
        g.sequence("case_create", "CREATE", "WS", "name", "WS");
        g.sequence("case_doc", "DOCUMENT", "WS");
        g.sequence("case_execute", "paths", "WS", "EXECUTE", "WS", "args", "WS");
        g.sequence("case_help", "HELP", "WS");
        g.sequence("case_license", "LICENSE", "WS");
        g.sequence("case_run", "RUN", "WS", "args", "WS");
        g.sequence("case_test", "TEST", "WS");
        g.sequence("case_version", "VERSION", "WS");
        g.sequence("line", "@0", "END");
        g.sequence("name", "arg");
        g.sequence("path", "@2", "arg");
        g.sequence("pstring", "WS", "@8", "WS");
        g.sequence("qstring", "WS", "@3", "@5", "@6", "WS");
        g.str("@10", "autumn");
        g.str("@11", "compile");
        g.str("@12", "create");
        g.str("@13", "document");
        g.str("@14", "execute");
        g.str("@15", "help");
        g.str("@16", "-help");
        g.str("@17", "-h");
        g.str("@18", "--h");
        g.str("@20", "license");
        g.str("@21", "run");
        g.str("@22", "test");
        g.str("@23", "version");

        // Specify which rule is the root of the grammar.
        g.setRoot("line");

        // Specify the number of tracing records to store concurrently.
        g.setTraceCount(1024);

        // Perform the actual construction of the grammar object.
        return g.build();
    }


    /**
     * {@inheritDoc}
     */
    @Override
    public ParserOutput parse(final char[] input)
    {
        return grammar.newParser().parse(input);
    }


    /**
     * {@inheritDoc}
     */
    @Override
    public ParserOutput parse(final String input)
    {
        return parse(input.toCharArray());
    }
}