Ошибка интерпретатора Eclipse Antlr

Следующая грамматика успешно генерирует парсер для обработки строки 'ccdunion', Но когда я пытаюсь с переводчиком, у меня есть NoViableAltException ошибка, почему?

grammar SimpleCalc;

options {
  k = 2;
  output = AST;
  backtrack = true;
}

tokens {
  UNION = 'union';
}


@header {
  package myPack;
  import java.io.File;
  import java.io.FileWriter;
  import java.io.PrintWriter;
}

@lexer::header {
  package myPack;
}

@members {
  public static void main(String[] args) throws Exception {
    File fileOut = new File("src/ARFF.arff");

    FileWriter fw = new FileWriter(fileOut);
    PrintWriter pw = new PrintWriter(fw);

    pw.print("a ");
    pw.println("b");
    pw.println(12);

    fw.close();
    SimpleCalcLexer lex = new SimpleCalcLexer(new ANTLRFileStream(args[0]));
    CommonTokenStream tokens = new CommonTokenStream(lex);

    SimpleCalcParser parser = new SimpleCalcParser(tokens);

    try {
      parser.expr();
    } catch (RecognitionException e) {
      e.printStackTrace();
    }
  }
}

expr
 : filsPiquets EOF 
   {
     System.out.println("base mono: ");
   }
 ;

filsPiquets
 : chars UNION
   {
     System.out.println("TXTunionII"+$chars.text);
   }
 ;

chars
 : CHAR
 | . chars
 ;

CHAR
 : .
 ;

1 ответ

... когда я пытаюсь использовать интерпретатор, возникает ошибка NoViableAltException, почему?

Потому что переводчик глючит: не используйте его. Вместо этого используйте отладчик. То же самое касается ANTLRWorks.

Другие вопросы по тегам