Estoy experimentando para aprender flex y me gustaría hacer coincidir los literales de cadena. Mi código es actualmente como:Expresión regular para un literal de cadena en flex/lex
"\""([^\n\"\\]*(\\[.\n])*)*"\"" {/*matches string-literal*/;}
He estado luchando con variaciones para una hora o así y no puedo conseguir que funcione como debería. En esencia, espero que coincida con un literal de cadena que no puede contener una nueva línea (a menos que se haya escapado) y admite caracteres escapados.
Probablemente estoy escribiendo una expresión regular pobre o una incompatible con flex. ¡Por favor avise!
Muchas gracias a todos! Todos tus comentarios fueron muy útiles. La expresión regular que finalmente funcionó para mí es una variante de la utilizada en la especificación C vinculada por codadict (y explicada por Jonathan): \ "(\\ (. | \ N) | [^ \\" \ n]) * \ " – Thomas
Dado que encontraste útil la respuesta de Jonathan, considera agregar un voto positivo para su respuesta. – codaddict
Dicho sea de paso: en ninguna parte de tu pregunta especificas los literales de cadenas del idioma que te interesan. Es una muy buena idea poner el idioma estás preguntando sobre una de las etiquetas de la pregunta. –