Ich mache einen Lexical Analyzer mit Flex unter Unix. Wenn Sie es jemals verwendet haben, bevor Sie wissen, dass Sie hauptsächlich nur die Regex für die Token der Sprache definieren, für die Sie den Lexical Analyzer schreiben. Ich bin fest im letzten Teil. Ich brauche die richtige Regex für mehrzeilige Kommentare, die etwas wie
erlaubt %Vor%erlaubt aber auch
%Vor%Kann jemand dabei helfen?
Sie stimmen C-Stil-Kommentare nicht mit einem einfachen regulären Ausdruck in Flex ab. Sie erfordern eine komplexere Matching-Methode basierend auf Startzuständen. Die Flex FAQ sagt, wie (nun, sie tun es für die /*...*/
form; die Handhabung des anderen Formulars in <INITIAL>
sollte einfach sein).
Wenn Sie jedoch nur mit Regex auskommen müssen, gibt es in der Tat eine nicht allzu komplexe Lösung:
"/ *" ([^ *] | (\ * + [^ * /])) * \ * + \ / Die vollständige Erklärung und Herleitung dieser Regex ist auf hier exzellent ausgearbeitet Zusamenfassend:Ссылка tut:
%Vor%Eine Frage, die das auch lösen würde, ist Wie schreibe ich ein nicht gieriges Spiel in LEX / FLEX?
Ich weiß Flex nicht, aber ich kenne Regexs. /\/\*.*?\*\//s
sollte mit beiden Typen übereinstimmen (in PCRE), aber wenn Sie sie in Ihrem Analysator unterscheiden müssen, können Sie die Liste der Übereinstimmungen dann iterieren, um zu sehen, ob sie der zweite Typ mit /\*\*\s+\/{4}/
Tags und Links flex-lexer regex unix