2011-11-30 3 views
6

Per impostazione predefinita, flex utilizza la regola di corrispondenza più lunga. Esiste un modo per sovrascrivere questo comportamento per farlo corrispondere alla sequenza più breve?come abilitare la regola della corrispondenza più corta in flex (lexer)?

Grazie

+0

No, e non lo vorrebbe se lo avessi. Ad esempio, molti se non molti lessici (sicuramente tutti i miei) terminano con una regola catch-all '. return yytext [0]; '. Quello diventerebbe l'unica regola che ha fatto qualsiasi cosa. – EJP

risposta

0

This page nel manuale Flex dice che non ha gli operatori non avidi, perché è uno scanner piuttosto che un parser, e suggerisce le espressioni regolari potrebbero essere utilizzati per aggiungere le funzionalità mancanti.

+0

non intendevo gli operatori avidi di per sé. Se hai regexprs completamente separati, entrambi corrispondono allo stesso prefisso di una stringa un lexer per default sceglie quello più lungo. quello di cui ho bisogno è di farlo prendere quello più corto, resettare e ricominciare la corrispondenza. – VilleDePommes