⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 testrecursivedescentparser.java

📁 Grammatica is a C# and Java parser generator (compiler compiler). It improves upon simlar tools (lik
💻 JAVA
📖 第 1 页 / 共 2 页
字号:
        addPattern(parser, pattern);        failPrepareParser(parser);    }    /**     * Tests an unresolvable token conflict inside a production      * alternative.     */    public void testElementTokenConflict() {        Parser parser = createParser();        pattern = new ProductionPattern(P1, "P1");        alt = new ProductionPatternAlternative();        alt.addToken(T1, 0, 1);        alt.addToken(T1, 1, -1);        addAlternative(pattern, alt);        addPattern(parser, pattern);        failPrepareParser(parser);    }    /**     * Tests an unresolvable production conflict inside a production      * alternative.     */    public void testElementProductionConflict() {        Parser parser = createParser();        pattern = new ProductionPattern(P1, "P1");        alt = new ProductionPatternAlternative();        alt.addProduction(P2, 0, 1);        alt.addProduction(P3, 1, 1);        alt.addToken(T2, 1, 1);        addAlternative(pattern, alt);        addPattern(parser, pattern);        pattern = new ProductionPattern(P2, "P2");        alt = new ProductionPatternAlternative();        alt.addToken(T1, 1, 1);        alt.addProduction(P2, 0, 1);        addAlternative(pattern, alt);        addPattern(parser, pattern);        pattern = new ProductionPattern(P3, "P3");        alt = new ProductionPatternAlternative();        addAlternative(pattern, alt);        alt.addToken(T1, 1, -1);        addPattern(parser, pattern);        failPrepareParser(parser);    }    /**     * Tests an unresolvable production conflict in the tail of a     * production alternative.     */    public void testElementTailConflict() {        Parser parser = createParser();        pattern = new ProductionPattern(P1, "P1");        alt = new ProductionPatternAlternative();        alt.addProduction(P2, 1, 1);        alt.addToken(T2, 0, 1);        addAlternative(pattern, alt);        addPattern(parser, pattern);        pattern = new ProductionPattern(P2, "P2");        alt = new ProductionPatternAlternative();        alt.addToken(T1, 1, 1);        alt.addToken(T2, 0, 1);        addAlternative(pattern, alt);        addPattern(parser, pattern);        // TODO: enable this test        // failPrepareParser(parser);    }    /**     * Tests a resolvable conflict between two production patterns.     */    public void testResolvableProductionConflict() {        Parser parser = createParser();        pattern = new ProductionPattern(P1, "P1");        alt = new ProductionPatternAlternative();        alt.addProduction(P2, 1, 1);        addAlternative(pattern, alt);        alt = new ProductionPatternAlternative();        alt.addProduction(P3, 1, 1);        addAlternative(pattern, alt);        addPattern(parser, pattern);        pattern = new ProductionPattern(P2, "P2");        alt = new ProductionPatternAlternative();        alt.addToken(T1, 1, 1);        alt.addToken(T1, 0, 1);        alt.addToken(T2, 1, 1);        addAlternative(pattern, alt);        addPattern(parser, pattern);                pattern = new ProductionPattern(P3, "P3");        alt = new ProductionPatternAlternative();        alt.addToken(T1, 1, -1);        alt.addToken(T3, 1, 1);        addAlternative(pattern, alt);        addPattern(parser, pattern);        prepareParser(parser);    }    /**     * Tests a resolvable conflict between two production      * alternatives.     */    public void testResolvableAlternativeConflict() {        Parser parser = createParser();        pattern = new ProductionPattern(P1, "P1");        alt = new ProductionPatternAlternative();        alt.addToken(T1, 1, 1);        alt.addToken(T1, 0, 1);        alt.addToken(T2, 1, 1);        addAlternative(pattern, alt);        alt = new ProductionPatternAlternative();        alt.addToken(T1, 1, -1);        alt.addToken(T3, 1, 1);        addAlternative(pattern, alt);        addPattern(parser, pattern);        prepareParser(parser);    }    /**     * Tests a resolvable token conflict inside a production      * alternative.     */    public void testResolvableElementTokenConflict() {        Parser parser = createParser();        pattern = new ProductionPattern(P1, "P1");        alt = new ProductionPatternAlternative();        alt.addToken(T1, 0, 1);        alt.addToken(T1, 1, 1);        alt.addToken(T2, 1, 1);        addAlternative(pattern, alt);        addPattern(parser, pattern);        prepareParser(parser);    }    /**     * Tests a resolvable production conflict inside a production      * alternative.     */    public void testResolvableElementProductionConflict() {        Parser parser = createParser();        pattern = new ProductionPattern(P1, "P1");        alt = new ProductionPatternAlternative();        alt.addProduction(P2, 0, 1);        alt.addToken(T1, 1, -1);        addAlternative(pattern, alt);        addPattern(parser, pattern);        pattern = new ProductionPattern(P2, "P2");        alt = new ProductionPatternAlternative();        alt.addToken(T1, 1, 1);        alt.addToken(T2, 1, 1);        addAlternative(pattern, alt);        addPattern(parser, pattern);        prepareParser(parser);    }    /**     * Tests a resolvable production conflict in the tail of a     * production alternative.     */    public void testResolvableElementTailConflict() {        Parser parser = createParser();        pattern = new ProductionPattern(P1, "P1");        alt = new ProductionPatternAlternative();        alt.addProduction(P2, 1, 1);        alt.addToken(T2, 1, 1);        addAlternative(pattern, alt);        addPattern(parser, pattern);        pattern = new ProductionPattern(P2, "P2");        alt = new ProductionPatternAlternative();        alt.addToken(T1, 1, 1);        alt.addToken(T2, 0, 1);        addAlternative(pattern, alt);        addPattern(parser, pattern);        prepareParser(parser);    }    /**     * Creates a new parser.     *      * @return a new parser     */    private Parser createParser() {        return new RecursiveDescentParser(null);    }    /**     * Prepares the parser and reports a test failure if it failed.     *      * @param parser         the parser to prepare     */    private void prepareParser(Parser parser) {        try {            parser.prepare();        } catch (ParserCreationException e) {            fail(e.getMessage());        }    }    /**     * Prepares the parser and reports a test failure if it succeeded.     *      * @param parser         the parser to prepare     */    private void failPrepareParser(Parser parser) {        try {            parser.prepare();            fail();        } catch (ParserCreationException e) {            // Failure was expected        }    }    /**     * Adds a production pattern to a parser and reports a test      * failure if it failed.     *      * @param parser         the parser to add a pattern to     * @param pattern        the production pattern to add     */    private void addPattern(Parser parser, ProductionPattern pattern) {        try {            parser.addPattern(pattern);        } catch (ParserCreationException e) {            fail("couldn't add pattern " + pattern.getName() + ": " +                 e.getMessage());        }    }    /**     * Adds a production pattern to a parser and reports a test      * failure if it succeeded.     *      * @param parser         the parser to add a pattern to     * @param pattern        the production pattern to add     */    private void failAddPattern(Parser parser, ProductionPattern pattern) {        try {            parser.addPattern(pattern);            fail("could add pattern " + pattern.getName());        } catch (ParserCreationException e) {            // Failure was expected        }    }    /**     * Adds a pattern alternative. This method reports a test failure     * if an exception was thrown.     *      * @param pattern        the production pattern     * @param alt            the pattern alternative to add     */    private void addAlternative(ProductionPattern pattern,                                ProductionPatternAlternative alt) {        try {            pattern.addAlternative(alt);        } catch (ParserCreationException e) {            fail("couldn't add alternative to " + pattern.getName() +                  ": " + e.getMessage());        }    }}

⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -