Juste à la recherche d'un moyen simple d'obtenir ANTLR4 pour générer un analyseur qui effectuer les opérations suivantes (ne pas tenir quoi que ce soit après le ;
):Exigent nouvelle ligne ou EOF après un match de déclaration
int #i ; defines an int
int #j ; see how I have to go to another line for another statement?
Mon analyseur est comme suivant:
compilationUnit:
(statement END?)*
statement END?
EOF
;
statement:
intdef |
WS
;
// 10 - 1F block.
intdef:
'intdef' Identifier
;
// Lexer.
Identifier: '#' Letter LetterOrDigit*;
fragment Letter: [a-zA-Z_];
fragment LetterOrDigit: [a-zA-Z0-9$_];
// Whitespace, fragments and terminals.
WS: [ \t\r\n\u000C]+ -> skip;
//COMMENT: '/*' .*? '*/' -> channel(HIDDEN);
END: (';' ~[\r\n]*) | '\n';
essentiellement, chaque fois que j'ai un statement
, j'ai besoin pour EXIGER un saut de ligne avant qu'un autre est entré. Je me fiche de savoir s'il y a 3 nouvelles lignes et ensuite sur le second un groupe d'onglets persiste, tant qu'il y a une nouvelle ligne.
La question est, le ANTLR4 Parse Arbre semble me donner des erreurs pour les entrées telles que:
.
(Pretend le point isnt il, son littéralement pas d'entrée)
int #i int #j
Woops , nous en avons deux sur la même ligne!
Des idées sur comment je peux y parvenir? J'apprécie l'aide.
Merci pour la réponse! C'est exactement ce que je cherche. – finnrayment
En fait, question rapide, y at-il un moyen de me permettre d'avoir des sauts de ligne entre les déclarations et après la dernière déclaration? Pour le moment, ils DOIVENT être insérés les uns après les autres sans ligne de fuite. – finnrayment
@finnrayment Bien sûr, fait, voir la grammaire éditée ci-dessus. À votre santé! – TomServo