Je fais un projet avec un sous-ensemble Pascal. Mon code ressemble:Flex - nouvelle ligne non reconnue
NLINE [\n]
BRACKET ['('|')']
%%
{BRACKET} {
std::cout << "Found BRACKET symbol " << yytext[0] << std::endl;
return yytext[0];
}
{NLINE} {
std::cout << "Found NEWLINE symbol " << yytext[0] << std::endl;
yylineno++;
}
...
. { // anything is exactly before EOF
std::cout << "Found ANYTHING " << yytext[0] << std::endl;
yylval = NONE;
return yytext[0];
}
J'ai essayé plusieurs façons de traiter avec cela, aussi juste \ n au lieu de [\ n] ou [\ n], mais sans les résultats escomptés. Voici la sortie:
...
Found BRACKET symbol)
Found ANYTHING ;
Found ANYTHING << where in code should be \n
Je sais que cela est \ question n, parce que quand je pousse le code sans que cela fonctionne comme un charme!
Apprécierez chaque réponse constructive.
Le motif correct pour correspondre '(' ou ')' est '[()]'. Votre motif correspond à une parenthèse, une apostrophe ou une barre verticale. – rici
Aussi, je n'ai aucune idée de ce que vous entendez par "quand je pousse le code sans ça". – rici
Je veux dire quand je coupe tout le \ n du fichier d'entrée. Tout juste en une ligne, ce qui n'est pas très confortable. Désolé, je ne me suis pas exprimé assez clairement. – Kris