Нет, ID
не соответствует "$one"
или "£one"
, как вы можете видеть:
T.g
grammar T;
parse : ID EOF;
ID : ('a'..'z'|'A'..'Z'|'_') ('a'..'z'|'A'..'Z'|'0'..'9'|'_')*;
Main.java
import org.antlr.runtime.*;
public class Main {
public static void main(String[] args) throws Exception {
TLexer lexer = new TLexer(new ANTLRStringStream("$one"));
TParser parser = new TParser(new CommonTokenStream(lexer));
parser.parse();
}
}
Запустить тест
java -cp antlr-3.4-complete.jar org.antlr.Tool T.g
javac -cp antlr-3.4-complete.jar *.java
java -cp .;antlr-3.4-complete.jar Main
выдаст следующую ошибку:
line 1:0 mismatched character '$' expecting set null
Обратите внимание, что и antlr-3.4-complete.jar
, и antlr-3.4-complete-no-antlrv2.jar
выдают одну и ту же ошибку (или любую другую версию 3.x, в этом отношении).
Я предполагаю, что вы используете ANTLRWorks, и вы не заметили сообщения об ошибках на вкладке консоли (они есть!).