J'ai trouvé mon problème. Il ne fallait pas retourner les fins de ligne. Donc je les consomme silencieusement (comme des commentaires et des espaces en fait). Le WE et tes remarques ont porté conseil :-)
Pour le terminateur, je ne peux pas l'utiliser car le parser doit compiler et tourner sous AIX, et la version de Lex disponible ne comprend pas <<EOF>> (il semble même que ce soit spécifique à Flex). Mais en forçant la reconnaissance des RESIZE et WHEN en début de ligne, je m'en sors très bien. Même si la syntaxe autorise de découper les instructions en morceaux, c'est un moindre mal (d'ailleurs je vois pas comment l'empêcher).
Effectivement, les WHEN doivent être suivis d'un ou plusieurs RESIZE, donc il n'y a pas d'ambiguïté je pense.
Pour les commentaires, il n'est pas nécessaire d'ajouter $ à la fin de la regex car le point ne matche pas la fin de ligne.
Quant au return '\n', ça ne doit pas poser de problème car les tokens définis par Bison/Yacc commencent à 256 ou 257, justement pour pouvoir retourner des caractères individuels. Mais du coup ça ne doit pas être compatible avec l'UTF-8.
Merci beaucoup pour tes commentaires.
Sous MVS, j'ai développé mes lexers et parsers en COBOL (!), mais comme c'est pour Unix, je voulais réviser Lex et Yacc :-)
[^] # Re: Séparateur ?
Posté par VoixOff . En réponse au message YACC: retour-chariot comme séparateur. Évalué à 2.
Pour le terminateur, je ne peux pas l'utiliser car le parser doit compiler et tourner sous AIX, et la version de Lex disponible ne comprend pas <<EOF>> (il semble même que ce soit spécifique à Flex). Mais en forçant la reconnaissance des RESIZE et WHEN en début de ligne, je m'en sors très bien. Même si la syntaxe autorise de découper les instructions en morceaux, c'est un moindre mal (d'ailleurs je vois pas comment l'empêcher).
Effectivement, les WHEN doivent être suivis d'un ou plusieurs RESIZE, donc il n'y a pas d'ambiguïté je pense.
Pour les commentaires, il n'est pas nécessaire d'ajouter $ à la fin de la regex car le point ne matche pas la fin de ligne.
Quant au return '\n', ça ne doit pas poser de problème car les tokens définis par Bison/Yacc commencent à 256 ou 257, justement pour pouvoir retourner des caractères individuels. Mais du coup ça ne doit pas être compatible avec l'UTF-8.
Merci beaucoup pour tes commentaires.
Sous MVS, j'ai développé mes lexers et parsers en COBOL (!), mais comme c'est pour Unix, je voulais réviser Lex et Yacc :-)