J'essaie d'analyser un fichier de données dans ANTLR - il dispose d'un espacement blanche optionnel illustré par indique où se trouve la ligne de démarrage et des extrémités. Il y a une nouvelle ligne à la fin et il n'y a pas d'onglets. P> ma grammaire est: p> ce qui donne < / p> (c'est-à-dire que le premier WS n'a pas été reconnu et la dernière ligne a été manquée). P> Je voudrais analyser les lignes qui commencent sans blancheur, tels que: p> mais je reçois des erreurs telles que: p> J'apprécierais des explications générales de l'analyse de l'analyse WS en anti-antlr. p> mais obtenir l'erreur: p> edit fort> apparemment Cela a été supprimé de V3:
http://www.antlr.org/pipermail/antlr-interest /2007-fèbre/019423.html P> p> {ignor = ws} code> n'apparaît pas dans le livre "Référence AntLR définitive" que je Je travaille de sorte qu'il s'agit clairement d'une zone délicate. P>
3 Réponses :
vérifier Analyse lexicale avec Antlr puis recherchez la pièce qui commence avec cet en-tête p>
Ignorer WhitSpace dans le LXER STRUT> P>
Vous devez utiliser le {ignor = ws; } code> règle p>
Merci - je vais essayer cela et faire rapport. FWIW Il y a des cas où le formatage exact compte également donc j'espère que je peux changer.
Modifier B> Il apparaît que ce n'est pas disponible en v3
J'ai réussi à obtenir ce travail en utilisant des constructions Lexer telles que: mais pas dans la nouvelle ligne. Ensuite, dans les constructions d'analyseurs telles que: p> la touche consistait à supporter tout WS dans le LXER, à l'exception de la nouvelle ligne. P> P>
WS : (' ' | '\t')+ {$channel = HIDDEN;} ;
Version AntLR4: WS: ('' | '\ t') + -> canal (caché);
+1, j'ai eu le même problème et j'ai fini par utiliser un hack majeur de l'analyseur citron. Suite à cela avec intérêt.
@Tinkertim merci - il est toujours agréable de savoir que la question n'est pas un mannequin complet.