From d06e09b9511511a281b04b94c92a8334f3cba1d2 Mon Sep 17 00:00:00 2001 From: Alexandre Duret-Lutz Date: Thu, 2 Oct 2003 15:58:57 +0000 Subject: [PATCH] * src/ltlparse/ltlscan.ll: Allow doubly quoted atomic propositions. --- ChangeLog | 4 ++++ src/ltlparse/ltlscan.ll | 20 +++++++++++++------- 2 files changed, 17 insertions(+), 7 deletions(-) diff --git a/ChangeLog b/ChangeLog index 7bbc5f6aa..24e95ca8b 100644 --- a/ChangeLog +++ b/ChangeLog @@ -1,3 +1,7 @@ +2003-10-02 Alexandre Duret-Lutz + + * src/ltlparse/ltlscan.ll: Allow doubly quoted atomic propositions. + 2003-10-01 Alexandre Duret-Lutz * iface/gspn/udcsltl.test, iface/gspn/udcseltl.test, diff --git a/src/ltlparse/ltlscan.ll b/src/ltlparse/ltlscan.ll index 2c058006b..16b72c5c3 100644 --- a/src/ltlparse/ltlscan.ll +++ b/src/ltlparse/ltlscan.ll @@ -20,7 +20,7 @@ static const char *to_parse = 0; static size_t to_parse_size = 0; - + void flex_set_buffer(const char *buf) { @@ -40,8 +40,8 @@ flex_set_buffer(const char *buf) ")" return PAR_CLOSE; "!" return OP_NOT; - /* & and | come from Spin. && and || from LTL2BA. - /\, \/, and xor are from LBTT. + /* & and | come from Spin. && and || from LTL2BA. + /\, \/, and xor are from LBTT. */ "||"|"|"|"+"|"\\/" return OP_OR; "&&"|"&"|"."|"*"|"/\\" return OP_AND; @@ -59,16 +59,22 @@ flex_set_buffer(const char *buf) "1"|"true" return CONST_TRUE; "0"|"false" return CONST_FALSE; -[ \t\n]+ /* discard whitespace */ yylloc->step (); +[ \t\n]+ /* discard whitespace */ yylloc->step (); /* An Atomic proposition cannot start with the letter used by a unary operator (F,G,X), unless this letter is followed by a digit in which case we assume it's an ATOMIC_PROP (even though F0 could be seen as Ffalse, we don't). */ -[a-zA-EH-WYZ_][a-zA-Z0-9_]* | -[FGX][0-9_][a-zA-Z0-9_]* { - yylval->str = new std::string(yytext); +[a-zA-EH-WYZ_][a-zA-Z0-9_]* | +[FGX][0-9_][a-zA-Z0-9_]* { + yylval->str = new std::string(yytext); + return ATOMIC_PROP; + } + + /* Atomic propositions can also be inclosed in double quotes. */ +\"[^\"]*\" { + yylval->str = new std::string(yytext + 1, yyleng - 2); return ATOMIC_PROP; }