Package net.percederberg.grammatica.parser

Examples of net.percederberg.grammatica.parser.ProductionPattern


     * @throws ParseException if the node analysis discovered errors
     */
    protected Node exitIdentifier(Token node) throws ParseException {
        String             name = node.getImage();
        TokenPattern       token = grammar.getTokenPatternByName(name);
        ProductionPattern  prod = grammar.getProductionPatternByName(name);

        if (token != null) {
            node.addValue(token);
        } else if (prod != null) {
            node.addValue(prod);
View Full Code Here


     * @throws ParseException if the node analysis discovered errors
     */
    protected Node exitProductionDeclaration(Production node)
        throws ParseException {

        ProductionPattern             pattern;
        ProductionPatternAlternative  alt;
        Node                          child;

        pattern = (ProductionPattern) getValue(getChildAt(node, 0), 0);
        child = getChildAt(node, 2);
        for (int i = 0; i < child.getValueCount(); i++) {
            alt = (ProductionPatternAlternative) getValue(child, i);
            try {
                pattern.addAlternative(alt);
            } catch (ParserCreationException e) {
                throw new ParseException(
                    ParseException.ANALYSIS_ERROR,
                    e.getMessage(),
                    node.getStartLine(),
View Full Code Here

     * @throws ParseException if the node analysis discovered errors
     */
    private ProductionPatternElement getProductionElement(Node node)
        throws ParseException {

        ProductionPattern             prod;
        ProductionPatternAlternative  alt;
        String                        str;

        alt = (ProductionPatternAlternative) getValue(node, 0);
        if (node.getValueCount() == 1 && isSimple(alt)) {
            return alt.getElement(0);
        } else {
            str = currentProduction.getName() + "(" +
                  (nextSynteticId - 3000) + ")";
            prod = new ProductionPattern(nextSynteticId, str);
            prod.setSynthetic(true);
            for (int i = 0; i < node.getValueCount(); i++) {
                alt = (ProductionPatternAlternative) getValue(node, i);
                try {
                    prod.addAlternative(alt);
                } catch (ParserCreationException e) {
                    throw new ParseException(
                        ParseException.ANALYSIS_ERROR,
                        e.getMessage(),
                        node.getStartLine(),
View Full Code Here

     * @throws ParseException if the node analysis discovered errors
     */
    protected Node exitProductionDeclaration(Production node)
        throws ParseException {

        ProductionPattern  production;
        String             name;

        name = getIdentifier((Token) getChildAt(node, 0));
        production = new ProductionPattern(nextProductionId++, name);
        grammar.addProduction(production,
                              node.getStartLine(),
                              node.getEndLine());
        return node;
    }
View Full Code Here

     *
     * @throws ParserCreationException if the parser couldn't be
     *             initialized correctly
     */
    private void createPatterns() throws ParserCreationException {
        ProductionPattern             pattern;
        ProductionPatternAlternative  alt;

        pattern = new ProductionPattern(GrammarConstants.GRAMMAR,
                                        "Grammar");
        alt = new ProductionPatternAlternative();
        alt.addProduction(GrammarConstants.HEADER_PART, 0, 1);
        alt.addProduction(GrammarConstants.TOKEN_PART, 1, 1);
        alt.addProduction(GrammarConstants.PRODUCTION_PART, 0, 1);
        pattern.addAlternative(alt);
        addPattern(pattern);

        pattern = new ProductionPattern(GrammarConstants.HEADER_PART,
                                        "HeaderPart");
        alt = new ProductionPatternAlternative();
        alt.addToken(GrammarConstants.HEADER, 1, 1);
        alt.addProduction(GrammarConstants.HEADER_DECLARATION, 0, -1);
        pattern.addAlternative(alt);
        addPattern(pattern);

        pattern = new ProductionPattern(GrammarConstants.HEADER_DECLARATION,
                                        "HeaderDeclaration");
        alt = new ProductionPatternAlternative();
        alt.addToken(GrammarConstants.IDENTIFIER, 1, 1);
        alt.addToken(GrammarConstants.EQUALS, 1, 1);
        alt.addToken(GrammarConstants.QUOTED_STRING, 1, 1);
        pattern.addAlternative(alt);
        addPattern(pattern);

        pattern = new ProductionPattern(GrammarConstants.TOKEN_PART,
                                        "TokenPart");
        alt = new ProductionPatternAlternative();
        alt.addToken(GrammarConstants.TOKENS, 1, 1);
        alt.addProduction(GrammarConstants.TOKEN_DECLARATION, 0, -1);
        pattern.addAlternative(alt);
        addPattern(pattern);

        pattern = new ProductionPattern(GrammarConstants.TOKEN_DECLARATION,
                                        "TokenDeclaration");
        alt = new ProductionPatternAlternative();
        alt.addToken(GrammarConstants.IDENTIFIER, 1, 1);
        alt.addToken(GrammarConstants.EQUALS, 1, 1);
        alt.addProduction(GrammarConstants.TOKEN_VALUE, 1, 1);
        alt.addProduction(GrammarConstants.TOKEN_HANDLING, 0, 1);
        pattern.addAlternative(alt);
        addPattern(pattern);

        pattern = new ProductionPattern(GrammarConstants.TOKEN_VALUE,
                                        "TokenValue");
        alt = new ProductionPatternAlternative();
        alt.addToken(GrammarConstants.QUOTED_STRING, 1, 1);
        pattern.addAlternative(alt);
        alt = new ProductionPatternAlternative();
        alt.addToken(GrammarConstants.REGEXP, 1, 1);
        pattern.addAlternative(alt);
        addPattern(pattern);

        pattern = new ProductionPattern(GrammarConstants.TOKEN_HANDLING,
                                        "TokenHandling");
        alt = new ProductionPatternAlternative();
        alt.addToken(GrammarConstants.IGNORE, 1, 1);
        pattern.addAlternative(alt);
        alt = new ProductionPatternAlternative();
        alt.addToken(GrammarConstants.ERROR, 1, 1);
        pattern.addAlternative(alt);
        addPattern(pattern);

        pattern = new ProductionPattern(GrammarConstants.PRODUCTION_PART,
                                        "ProductionPart");
        alt = new ProductionPatternAlternative();
        alt.addToken(GrammarConstants.PRODUCTIONS, 1, 1);
        alt.addProduction(GrammarConstants.PRODUCTION_DECLARATION, 0, -1);
        pattern.addAlternative(alt);
        addPattern(pattern);

        pattern = new ProductionPattern(GrammarConstants.PRODUCTION_DECLARATION,
                                        "ProductionDeclaration");
        alt = new ProductionPatternAlternative();
        alt.addToken(GrammarConstants.IDENTIFIER, 1, 1);
        alt.addToken(GrammarConstants.EQUALS, 1, 1);
        alt.addProduction(GrammarConstants.PRODUCTION, 1, 1);
        alt.addToken(GrammarConstants.SEMICOLON, 1, 1);
        pattern.addAlternative(alt);
        addPattern(pattern);

        pattern = new ProductionPattern(GrammarConstants.PRODUCTION,
                                        "Production");
        alt = new ProductionPatternAlternative();
        alt.addProduction(GrammarConstants.PRODUCTION_ATOM, 1, -1);
        alt.addProduction(SUBPRODUCTION_1, 0, 1);
        pattern.addAlternative(alt);
        addPattern(pattern);

        pattern = new ProductionPattern(GrammarConstants.PRODUCTION_ATOM,
                                        "ProductionAtom");
        alt = new ProductionPatternAlternative();
        alt.addToken(GrammarConstants.IDENTIFIER, 1, 1);
        alt.addProduction(SUBPRODUCTION_2, 0, 1);
        pattern.addAlternative(alt);
        alt = new ProductionPatternAlternative();
        alt.addToken(GrammarConstants.QUOTED_STRING, 1, 1);
        alt.addProduction(SUBPRODUCTION_3, 0, 1);
        pattern.addAlternative(alt);
        alt = new ProductionPatternAlternative();
        alt.addToken(GrammarConstants.LEFT_PAREN, 1, 1);
        alt.addProduction(GrammarConstants.PRODUCTION, 1, 1);
        alt.addToken(GrammarConstants.RIGHT_PAREN, 1, 1);
        alt.addProduction(SUBPRODUCTION_4, 0, 1);
        pattern.addAlternative(alt);
        alt = new ProductionPatternAlternative();
        alt.addToken(GrammarConstants.LEFT_BRACE, 1, 1);
        alt.addProduction(GrammarConstants.PRODUCTION, 1, 1);
        alt.addToken(GrammarConstants.RIGHT_BRACE, 1, 1);
        pattern.addAlternative(alt);
        alt = new ProductionPatternAlternative();
        alt.addToken(GrammarConstants.LEFT_BRACKET, 1, 1);
        alt.addProduction(GrammarConstants.PRODUCTION, 1, 1);
        alt.addToken(GrammarConstants.RIGHT_BRACKET, 1, 1);
        pattern.addAlternative(alt);
        addPattern(pattern);

        pattern = new ProductionPattern(SUBPRODUCTION_1,
                                        "Subproduction1");
        pattern.setSynthetic(true);
        alt = new ProductionPatternAlternative();
        alt.addToken(GrammarConstants.VERTICAL_BAR, 1, 1);
        alt.addProduction(GrammarConstants.PRODUCTION, 1, 1);
        pattern.addAlternative(alt);
        addPattern(pattern);

        pattern = new ProductionPattern(SUBPRODUCTION_2,
                                        "Subproduction2");
        pattern.setSynthetic(true);
        alt = new ProductionPatternAlternative();
        alt.addToken(GrammarConstants.QUESTION_MARK, 1, 1);
        pattern.addAlternative(alt);
        alt = new ProductionPatternAlternative();
        alt.addToken(GrammarConstants.ASTERISK, 1, 1);
        pattern.addAlternative(alt);
        alt = new ProductionPatternAlternative();
        alt.addToken(GrammarConstants.PLUS_SIGN, 1, 1);
        pattern.addAlternative(alt);
        addPattern(pattern);

        pattern = new ProductionPattern(SUBPRODUCTION_3,
                                        "Subproduction3");
        pattern.setSynthetic(true);
        alt = new ProductionPatternAlternative();
        alt.addToken(GrammarConstants.QUESTION_MARK, 1, 1);
        pattern.addAlternative(alt);
        alt = new ProductionPatternAlternative();
        alt.addToken(GrammarConstants.ASTERISK, 1, 1);
        pattern.addAlternative(alt);
        alt = new ProductionPatternAlternative();
        alt.addToken(GrammarConstants.PLUS_SIGN, 1, 1);
        pattern.addAlternative(alt);
        addPattern(pattern);

        pattern = new ProductionPattern(SUBPRODUCTION_4,
                                        "Subproduction4");
        pattern.setSynthetic(true);
        alt = new ProductionPatternAlternative();
        alt.addToken(GrammarConstants.QUESTION_MARK, 1, 1);
        pattern.addAlternative(alt);
        alt = new ProductionPatternAlternative();
        alt.addToken(GrammarConstants.ASTERISK, 1, 1);
        pattern.addAlternative(alt);
        alt = new ProductionPatternAlternative();
        alt.addToken(GrammarConstants.PLUS_SIGN, 1, 1);
        pattern.addAlternative(alt);
        addPattern(pattern);
    }
View Full Code Here

        VisualBasicConstantsFile  constants;
        VisualBasicTokenizerFile  tokenizer;
        VisualBasicParserFile     parser;
        VisualBasicAnalyzerFile   analyzer;
        TokenPattern              token;
        ProductionPattern         production;
        int                       i;

        // Create output files
        constants = new VisualBasicConstantsFile(this);
        tokenizer = new VisualBasicTokenizerFile(this);
View Full Code Here

        CSharpConstantsFile  constants = new CSharpConstantsFile(this);
        CSharpTokenizerFile  tokenizer = new CSharpTokenizerFile(this);
        CSharpAnalyzerFile   analyzer = new CSharpAnalyzerFile(this);
        CSharpParserFile     parser = new CSharpParserFile(this, tokenizer, analyzer);
        TokenPattern         token;
        ProductionPattern    production;
        int                  i;

        // Create token declarations
        for (i = 0; i < grammar.getTokenPatternCount(); i++) {
            token = grammar.getTokenPattern(i);
View Full Code Here

        JavaConstantsFile  constants = new JavaConstantsFile(this);
        JavaTokenizerFile  tokenizer = new JavaTokenizerFile(this);
        JavaAnalyzerFile   analyzer = new JavaAnalyzerFile(this);
        JavaParserFile     parser = new JavaParserFile(this, tokenizer, analyzer);
        TokenPattern       token;
        ProductionPattern  production;
        int                i;

        // Create token declarations
        for (i = 0; i < grammar.getTokenPatternCount(); i++) {
            token = grammar.getTokenPattern(i);
View Full Code Here

     *
     * @throws ParserCreationException if the parser couldn't be
     *             initialized correctly
     */
    private void createPatterns() throws ParserCreationException {
        ProductionPattern             pattern;
        ProductionPatternAlternative  alt;

        pattern = new ProductionPattern(ArithmeticConstants.EXPRESSION,
                                        "Expression");
        alt = new ProductionPatternAlternative();
        alt.addProduction(ArithmeticConstants.TERM, 1, 1);
        alt.addProduction(ArithmeticConstants.EXPRESSION_REST, 0, 1);
        pattern.addAlternative(alt);
        addPattern(pattern);

        pattern = new ProductionPattern(ArithmeticConstants.EXPRESSION_REST,
                                        "ExpressionRest");
        alt = new ProductionPatternAlternative();
        alt.addToken(ArithmeticConstants.ADD, 1, 1);
        alt.addProduction(ArithmeticConstants.EXPRESSION, 1, 1);
        pattern.addAlternative(alt);
        alt = new ProductionPatternAlternative();
        alt.addToken(ArithmeticConstants.SUB, 1, 1);
        alt.addProduction(ArithmeticConstants.EXPRESSION, 1, 1);
        pattern.addAlternative(alt);
        addPattern(pattern);

        pattern = new ProductionPattern(ArithmeticConstants.TERM,
                                        "Term");
        alt = new ProductionPatternAlternative();
        alt.addProduction(ArithmeticConstants.FACTOR, 1, 1);
        alt.addProduction(ArithmeticConstants.TERM_REST, 0, 1);
        pattern.addAlternative(alt);
        addPattern(pattern);

        pattern = new ProductionPattern(ArithmeticConstants.TERM_REST,
                                        "TermRest");
        alt = new ProductionPatternAlternative();
        alt.addToken(ArithmeticConstants.MUL, 1, 1);
        alt.addProduction(ArithmeticConstants.TERM, 1, 1);
        pattern.addAlternative(alt);
        alt = new ProductionPatternAlternative();
        alt.addToken(ArithmeticConstants.DIV, 1, 1);
        alt.addProduction(ArithmeticConstants.TERM, 1, 1);
        pattern.addAlternative(alt);
        addPattern(pattern);

        pattern = new ProductionPattern(ArithmeticConstants.FACTOR,
                                        "Factor");
        alt = new ProductionPatternAlternative();
        alt.addProduction(ArithmeticConstants.ATOM, 1, 1);
        pattern.addAlternative(alt);
        alt = new ProductionPatternAlternative();
        alt.addToken(ArithmeticConstants.LEFT_PAREN, 1, 1);
        alt.addProduction(ArithmeticConstants.EXPRESSION, 1, 1);
        alt.addToken(ArithmeticConstants.RIGHT_PAREN, 1, 1);
        pattern.addAlternative(alt);
        addPattern(pattern);

        pattern = new ProductionPattern(ArithmeticConstants.ATOM,
                                        "Atom");
        alt = new ProductionPatternAlternative();
        alt.addToken(ArithmeticConstants.NUMBER, 1, 1);
        pattern.addAlternative(alt);
        alt = new ProductionPatternAlternative();
        alt.addToken(ArithmeticConstants.IDENTIFIER, 1, 1);
        pattern.addAlternative(alt);
        addPattern(pattern);
    }
View Full Code Here

     *
     * @throws ParserCreationException if the parser couldn't be
     *             initialized correctly
     */
    private void createPatterns() throws ParserCreationException {
        ProductionPattern             pattern;
        ProductionPatternAlternative  alt;

        pattern = new ProductionPattern(RegexpConstants.EXPR,
                                        "Expr");
        alt = new ProductionPatternAlternative();
        alt.addProduction(RegexpConstants.TERM, 1, 1);
        alt.addProduction(SUBPRODUCTION_1, 0, 1);
        pattern.addAlternative(alt);
        addPattern(pattern);

        pattern = new ProductionPattern(RegexpConstants.TERM,
                                        "Term");
        alt = new ProductionPatternAlternative();
        alt.addProduction(RegexpConstants.FACT, 1, -1);
        pattern.addAlternative(alt);
        addPattern(pattern);

        pattern = new ProductionPattern(RegexpConstants.FACT,
                                        "Fact");
        alt = new ProductionPatternAlternative();
        alt.addProduction(RegexpConstants.ATOM, 1, 1);
        alt.addProduction(RegexpConstants.ATOM_MODIFIER, 0, 1);
        pattern.addAlternative(alt);
        addPattern(pattern);

        pattern = new ProductionPattern(RegexpConstants.ATOM,
                                        "Atom");
        alt = new ProductionPatternAlternative();
        alt.addToken(RegexpConstants.CHAR, 1, 1);
        pattern.addAlternative(alt);
        alt = new ProductionPatternAlternative();
        alt.addToken(RegexpConstants.NUMBER, 1, 1);
        pattern.addAlternative(alt);
        alt = new ProductionPatternAlternative();
        alt.addToken(RegexpConstants.COMMA, 1, 1);
        pattern.addAlternative(alt);
        alt = new ProductionPatternAlternative();
        alt.addToken(RegexpConstants.DOT, 1, 1);
        pattern.addAlternative(alt);
        alt = new ProductionPatternAlternative();
        alt.addToken(RegexpConstants.LEFT_PAREN, 1, 1);
        alt.addProduction(RegexpConstants.EXPR, 1, 1);
        alt.addToken(RegexpConstants.RIGHT_PAREN, 1, 1);
        pattern.addAlternative(alt);
        alt = new ProductionPatternAlternative();
        alt.addToken(RegexpConstants.LEFT_BRACKET, 1, 1);
        alt.addProduction(RegexpConstants.CHARACTER_SET, 1, 1);
        alt.addToken(RegexpConstants.RIGHT_BRACKET, 1, 1);
        pattern.addAlternative(alt);
        addPattern(pattern);

        pattern = new ProductionPattern(RegexpConstants.ATOM_MODIFIER,
                                        "AtomModifier");
        alt = new ProductionPatternAlternative();
        alt.addToken(RegexpConstants.QUESTION, 1, 1);
        alt.addToken(RegexpConstants.QUESTION, 0, 1);
        pattern.addAlternative(alt);
        alt = new ProductionPatternAlternative();
        alt.addToken(RegexpConstants.ASTERISK, 1, 1);
        alt.addToken(RegexpConstants.QUESTION, 0, 1);
        pattern.addAlternative(alt);
        alt = new ProductionPatternAlternative();
        alt.addToken(RegexpConstants.PLUS, 1, 1);
        alt.addToken(RegexpConstants.QUESTION, 0, 1);
        pattern.addAlternative(alt);
        alt = new ProductionPatternAlternative();
        alt.addToken(RegexpConstants.LEFT_BRACE, 1, 1);
        alt.addToken(RegexpConstants.NUMBER, 1, 1);
        alt.addProduction(SUBPRODUCTION_2, 0, 1);
        alt.addToken(RegexpConstants.RIGHT_BRACE, 1, 1);
        alt.addToken(RegexpConstants.QUESTION, 0, 1);
        pattern.addAlternative(alt);
        addPattern(pattern);

        pattern = new ProductionPattern(RegexpConstants.CHARACTER_SET,
                                        "CharacterSet");
        alt = new ProductionPatternAlternative();
        alt.addProduction(RegexpConstants.CHARACTER, 1, -1);
        pattern.addAlternative(alt);
        addPattern(pattern);

        pattern = new ProductionPattern(RegexpConstants.CHARACTER,
                                        "Character");
        alt = new ProductionPatternAlternative();
        alt.addToken(RegexpConstants.CHAR, 1, 1);
        pattern.addAlternative(alt);
        alt = new ProductionPatternAlternative();
        alt.addToken(RegexpConstants.NUMBER, 1, 1);
        pattern.addAlternative(alt);
        alt = new ProductionPatternAlternative();
        alt.addToken(RegexpConstants.COMMA, 1, 1);
        pattern.addAlternative(alt);
        alt = new ProductionPatternAlternative();
        alt.addToken(RegexpConstants.DOT, 1, 1);
        pattern.addAlternative(alt);
        alt = new ProductionPatternAlternative();
        alt.addToken(RegexpConstants.VERTICAL_BAR, 1, 1);
        pattern.addAlternative(alt);
        alt = new ProductionPatternAlternative();
        alt.addToken(RegexpConstants.PLUS, 1, 1);
        pattern.addAlternative(alt);
        alt = new ProductionPatternAlternative();
        alt.addToken(RegexpConstants.ASTERISK, 1, 1);
        pattern.addAlternative(alt);
        alt = new ProductionPatternAlternative();
        alt.addToken(RegexpConstants.QUESTION, 1, 1);
        pattern.addAlternative(alt);
        alt = new ProductionPatternAlternative();
        alt.addToken(RegexpConstants.LEFT_BRACE, 1, 1);
        pattern.addAlternative(alt);
        alt = new ProductionPatternAlternative();
        alt.addToken(RegexpConstants.RIGHT_BRACE, 1, 1);
        pattern.addAlternative(alt);
        alt = new ProductionPatternAlternative();
        alt.addToken(RegexpConstants.LEFT_PAREN, 1, 1);
        pattern.addAlternative(alt);
        alt = new ProductionPatternAlternative();
        alt.addToken(RegexpConstants.RIGHT_PAREN, 1, 1);
        pattern.addAlternative(alt);
        alt = new ProductionPatternAlternative();
        alt.addToken(RegexpConstants.LEFT_BRACKET, 1, 1);
        pattern.addAlternative(alt);
        addPattern(pattern);

        pattern = new ProductionPattern(SUBPRODUCTION_1,
                                        "Subproduction1");
        pattern.setSynthetic(true);
        alt = new ProductionPatternAlternative();
        alt.addToken(RegexpConstants.VERTICAL_BAR, 1, 1);
        alt.addProduction(RegexpConstants.EXPR, 1, 1);
        pattern.addAlternative(alt);
        addPattern(pattern);

        pattern = new ProductionPattern(SUBPRODUCTION_2,
                                        "Subproduction2");
        pattern.setSynthetic(true);
        alt = new ProductionPatternAlternative();
        alt.addToken(RegexpConstants.COMMA, 1, 1);
        alt.addToken(RegexpConstants.NUMBER, 0, 1);
        pattern.addAlternative(alt);
        addPattern(pattern);
    }
View Full Code Here

TOP

Related Classes of net.percederberg.grammatica.parser.ProductionPattern

Copyright © 2018 www.massapicom. 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.