mam prostą gramatykę, co następuje:ANTLR4: ignorowanie spacji na wejściu, ale nie te, w napisowych
grammar SampleConfig;
line: ID (WS)* '=' (WS)* string;
ID: [a-zA-Z]+;
string: '"' (ESC|.)*? '"' ;
ESC : '\\"' | '\\\\' ; // 2-char sequences \" and \\
WS: [ \t]+ -> skip;
Przestrzenie w wejściu są całkowicie ignorowane, w tym w ciągu dosłownym.
final String input = "key = \"value with spaces in between\"";
final SampleConfigLexer l = new SampleConfigLexer(new ANTLRInputStream(input));
final SampleConfigParser p = new SampleConfigParser(new CommonTokenStream(l));
final LineContext context = p.line();
System.out.println(context.getChildCount() + ": " + context.getText());
Drukuje następujące dane wyjściowe:
3: key="valuewithspacesinbetween"
Ale spodziewałem białe przestrzenie w ciągu dosłownym być zachowana, tzn
3: key="value with spaces in between"
Czy to możliwe, aby poprawić gramatykę Aby osiągnąć to zachowanie, czy powinienem po prostu przesłonić CommonTokenStream, aby zignorować białe spacje podczas procesu parsowania?
usunięcie polecenia pomijania jest dokładnie to, co potrzebne – raghavsood33