Die Zeilennummer ist einfach: yylineno
ist die Zeilennummer. Geben Sie %option yylineno
am Anfang Ihrer .l-Datei an.
Nun, fast einfach. Lookahead kann die Zeilennummer manchmal um eins verringern. Anstatt etwas wie "Fehler bei Zeile #xxx" zu sagen, möchten Sie vielleicht sagen, dass der Fehler in der Nähe von Zeile #xxx aufgetreten ist.
Was den Rest angeht, liegt es an Ihnen. Sie müssen die nicht ganz gültige Syntax erfassen und den entsprechenden Warn- oder Fehlerhandler aufrufen. Siehe das O'Reilly "Flex & Bison" Buch für Details; es hat ein ganzes Kapitel über Fehlermeldungen. Ein ganzes Kapitel ist ein bisschen zu viel, um es auf dieser Q & A-Site zu reproduzieren.
yylineno
gibt Ihnen die Lineno in Bearbeitung
Sie können den Benutzer auch wissen lassen, welcher Text den Fehler mit yytext auf der Flex-Seite verursacht hat:
%Vor%yytext enthält nur den Text für die übereinstimmende Regel.
Wenn Sie die gesamte Zeile angeben möchten, müssen Sie es selbst tun. Öffnen Sie die Datei nach der Zeilennummer yylineno
und drucken Sie sie aus. Ein guter Ort dafür ist die eigene Implementierung von yyerror
. Funktion.
Tags und Links c c++ bison flex-lexer