Problème: impossible d'imprimer correctement le caractère Unicode.ANTLR: Balayage de caractères Unicode
Voici ma grammaire:
options { k=1; filter=true;
// Allow any char but \uFFFF (16 bit -1)
charVocabulary='\u0000'..'\uFFFE';
}
ANYCHAR :'$'
| '_' { System.out.println("Found underscore: "+getText()); }
| 'a'..'z' { System.out.println("Found alpha: "+getText()); }
| '\u0080'..'\ufffe' { System.out.println("Found unicode: "+getText()); }
;
extrait de code de la méthode principale invoquant le lexer:
public static void main(String[] args) {
SimpleLexer simpleLexer = new SimpleLexer(System.in);
while(true) {
try {
Token t = simpleLexer.nextToken();
System.out.println("Token : "+t);
} catch(Exception e) {}
}
}
Pour l'entrée "ठ", je reçois la sortie suivante:
Found unicode:
Token : ["à",<5>,line=1,col=7]
Found unicode:
Token : ["¤",<5>,line=1,col=8]
Found unicode:
Token : [" ",<5>,line=1,col=9]
Il semble que le lexer traite ch Unicode ar "ठ" comme trois caractères distincts. Mon but est de numériser et d'imprimer "ठ".
pas lié à votre problème, mais je vous recommande de ne jamais « avaler » vos exceptions: quand les choses vont mal , vous n'avez aucune idée de ce qui s'est passé (et où). Au lieu de 'catch (Exception e) {}', faites au moins: 'catch (Exception e) {e.printStackTrace(); } ' –
Vous avez raison monsieur :) Leçon pour moi: lire le code copié tout le chemin jusqu'à la fin avant de l'utiliser. – Jhakki