2011-07-07 16 views
10

Otras personas han tenido el siguiente problema que tengo pero no puedo encontrar a nadie que haya informado sobre una solución. Conseguir que Flex detecte el EOF (fin del archivo). Necesito Flex para encontrar EOF y devolver un token que indique que lo ha encontrado para que pueda decirle a Yacc/Bison que ha llegado al final de un archivo fuente de entrada y puede informar un análisis exitoso.Lex/Flex - Escaneado para el carácter EOF

Tenga en cuenta que this question no es lo mismo ya que esto se trata de Lex/Flex.

Cualquier ayuda sería increíble. Gracias.

+1

Algo mal aquí. Normalmente no necesitas hacer esto. Simplemente escriba un símbolo de destino en su gramática y ya está todo arreglado. – EJP

+0

@EJP: ¿Podría por favor dar un pequeño ejemplo? Soy un novato en Flex/Bison. ¿Cómo lograr esto como una regla de gramática simple? Gracias – Andry

+0

@EJP, cuando se ingresa desde un teclado real, Ctrl-Z se pasa al programa, causando un error de sintaxis. No puedo verlo usando cosas como/x1a pero <> funciona. – user34660

Respuesta

21

Flex tiene modelo que coincide solamente con el final de archivo. Probablemente puede devolver algún token que indique el final del archivo en el analizador de la siguiente manera.

<<EOF>>  return END_OF_FILE;