2011-07-07 28 views
10

Inne osoby miały następujący problem, który mam, ale nie mogę znaleźć nikogo, kto zgłosiłby rozwiązanie. Uzyskiwanie Flexa w celu wykrycia EOF (koniec pliku). Potrzebuję Flexa, by znaleźć EOF i zwrócić token, który go znalazł, aby mógł powiedzieć Yacc/Bison, że dotarł do końca pliku źródłowego i może zgłosić udaną analizę.Lex/Flex - skanowanie dla postaci EOF

Pamiętaj, że this question to nie to samo, ponieważ dotyczy Lex/Flex.

Każda pomoc będzie świetna. Dziękuję Ci.

+1

Coś tu nie tak. Zazwyczaj nie musisz tego robić. Po prostu wpisz symbol celu do swojej gramatyki i wszystko jest załatwione. – EJP

+0

@EJP: Czy mógłbyś zrobić mały przykład? Jestem nowicjuszem w Flex/Bison. Jak osiągnąć to jako prostą zasadę gramatyki? Dziękuje – Andry

+0

@EJP, podczas wprowadzania z prawdziwej klawiatury, Ctrl-Z jest przekazywane do programu, powodując błąd składni. Nie mogę tego złapać, używając rzeczy takich jak/x1a, ale <> działa. – user34660

Odpowiedz

21

Flex ma <<EOF>> wzór, który pasuje tylko do końca pliku. Prawdopodobnie możesz zwrócić pewien token wskazujący koniec pliku do analizatora składni jako następujący.

<<EOF>>  return END_OF_FILE;