Package org.antlr.v4.tool

Examples of org.antlr.v4.tool.LexerGrammar


* want, but occasionally there are some quirks as you'll see from
* the tests below.
*/
public class TestATNLexerInterpreter extends BaseTest {
  @Test public void testLexerTwoRules() throws Exception {
    LexerGrammar lg = new LexerGrammar(
      "lexer grammar L;\n"+
      "A : 'a' ;\n" +
      "B : 'b' ;\n");
    String expecting = "A, B, A, B, EOF";
    checkLexerMatches(lg, "abab", expecting);
View Full Code Here


    String expecting = "A, B, A, B, EOF";
    checkLexerMatches(lg, "abab", expecting);
  }

  @Test public void testShortLongRule() throws Exception {
    LexerGrammar lg = new LexerGrammar(
      "lexer grammar L;\n"+
      "A : 'xy'\n" +
      "  | 'xyz'\n" + // this alt is preferred since there are no non-greedy configs
      "  ;\n" +
      "Z : 'z'\n" +
View Full Code Here

    checkLexerMatches(lg, "xy", "A, EOF");
    checkLexerMatches(lg, "xyz", "A, EOF");
  }

  @Test public void testShortLongRule2() throws Exception {
    LexerGrammar lg = new LexerGrammar(
      "lexer grammar L;\n"+
      "A : 'xyz'\n" // make sure nongreedy mech cut off doesn't kill this alt
      "  | 'xy'\n" +
      "  ;\n");
    checkLexerMatches(lg, "xy", "A, EOF");
View Full Code Here

    checkLexerMatches(lg, "xy", "A, EOF");
    checkLexerMatches(lg, "xyz", "A, EOF");
  }

  @Test public void testWildOnEndFirstAlt() throws Exception {
    LexerGrammar lg = new LexerGrammar(
      "lexer grammar L;\n"+
      "A : 'xy' .\n" + // should pursue '.' since xyz hits stop first, before 2nd alt
      "  | 'xy'\n" +
      "  ;\n" +
      "Z : 'z'\n" +
View Full Code Here

    checkLexerMatches(lg, "xy", "A, EOF");
    checkLexerMatches(lg, "xyz", "A, EOF");
  }

  @Test public void testWildOnEndLastAlt() throws Exception {
    LexerGrammar lg = new LexerGrammar(
      "lexer grammar L;\n"+
      "A : 'xy'\n" +
      "  | 'xy' .\n" // this alt is preferred since there are no non-greedy configs
      "  ;\n" +
      "Z : 'z'\n" +
View Full Code Here

    checkLexerMatches(lg, "xy", "A, EOF");
    checkLexerMatches(lg, "xyz", "A, EOF");
  }

  @Test public void testWildcardNonQuirkWhenSplitBetweenTwoRules() throws Exception {
    LexerGrammar lg = new LexerGrammar(
      "lexer grammar L;\n"+
      "A : 'xy' ;\n" +
      "B : 'xy' . 'z' ;\n");
    checkLexerMatches(lg, "xy", "A, EOF");
    checkLexerMatches(lg, "xyqz", "B, EOF");
View Full Code Here

    checkLexerMatches(lg, "xy", "A, EOF");
    checkLexerMatches(lg, "xyqz", "B, EOF");
  }

  @Test public void testLexerLoops() throws Exception {
    LexerGrammar lg = new LexerGrammar(
      "lexer grammar L;\n"+
      "INT : '0'..'9'+ ;\n" +
      "ID : 'a'..'z'+ ;\n");
    String expecting = "ID, INT, ID, INT, EOF";
    checkLexerMatches(lg, "a34bde3", expecting);
View Full Code Here

    String expecting = "ID, INT, ID, INT, EOF";
    checkLexerMatches(lg, "a34bde3", expecting);
  }

  @Test public void testLexerNotSet() throws Exception {
    LexerGrammar lg = new LexerGrammar(
      "lexer grammar L;\n"+
      "ID : ~('a'|'b')\n ;");
    String expecting = "ID, EOF";
    checkLexerMatches(lg, "c", expecting);
  }
View Full Code Here

    String expecting = "ID, EOF";
    checkLexerMatches(lg, "c", expecting);
  }

  @Test public void testLexerKeywordIDAmbiguity() throws Exception {
    LexerGrammar lg = new LexerGrammar(
      "lexer grammar L;\n"+
      "KEND : 'end' ;\n" +
      "ID : 'a'..'z'+ ;\n" +
      "WS : (' '|'\\n')+ ;");
    String expecting = "ID, EOF";
View Full Code Here

    expecting = "ID, WS, KEND, WS, ID, EOF";
    checkLexerMatches(lg, "a end bcd", expecting);
  }

  @Test public void testLexerRuleRef() throws Exception {
    LexerGrammar lg = new LexerGrammar(
      "lexer grammar L;\n"+
      "INT : DIGIT+ ;\n" +
      "fragment DIGIT : '0'..'9' ;\n" +
      "WS : (' '|'\\n')+ ;");
    String expecting = "INT, WS, INT, EOF";
View Full Code Here

TOP

Related Classes of org.antlr.v4.tool.LexerGrammar

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.