Changes in tools/prettyprinter/lex.ll [fc1ef62:6b0b624]
- File:
-
- 1 edited
-
tools/prettyprinter/lex.ll (modified) (3 diffs)
Legend:
- Unmodified
- Added
- Removed
-
tools/prettyprinter/lex.ll
rfc1ef62 r6b0b624 7 7 * lex.ll -- 8 8 * 9 * Author : Peter A. Buhr9 * Author : Rodolfo Gabriel Esteves 10 10 * Created On : Sat Dec 15 11:45:59 2001 11 11 * Last Modified By : Peter A. Buhr 12 * Last Modified On : Tue Aug 29 17:33:36 201713 * Update Count : 2 6812 * Last Modified On : Fri Jul 21 23:06:16 2017 13 * Update Count : 254 14 14 */ 15 15 16 16 %option stack 17 17 %option yylineno 18 %option nounput19 18 20 19 %{ … … 31 30 string comment_str; 32 31 string code_str; 33 34 // Stop warning due to incorrectly generated flex code.35 #pragma GCC diagnostic ignored "-Wsign-compare"36 32 %} 37 33 … … 48 44 /* ---------------------------- Token Section ---------------------------- */ 49 45 %% 50 <INITIAL,C_CODE>"/*" { // C style comments */ 51 #if defined(DEBUG_ALL) | defined(DEBUG_COMMENT) 52 cerr << "\"/*\" : " << yytext << endl; 53 #endif 54 if ( YYSTATE == C_CODE ) code_str += yytext; 55 else comment_str += yytext; 56 yy_push_state(C_COMMENT); 57 } 58 <C_COMMENT>(.|"\n") { // C style comments 59 #if defined(DEBUG_ALL) | defined(DEBUG_COMMENT) 60 cerr << "<C_COMMENT>(.|\\n) : " << yytext << endl; 61 #endif 62 if ( yy_top_state() == C_CODE ) code_str += yytext; 63 else comment_str += yytext; 64 } 65 <C_COMMENT>"*/" { // C style comments 66 #if defined(DEBUG_ALL) | defined(DEBUG_COMMENT) 67 cerr << "<C_COMMENT>\"*/\" : " << yytext << endl; 68 #endif 69 if ( yy_top_state() == C_CODE ) code_str += yytext; 70 else { 71 comment_str += yytext; 72 //cerr << "C COMMENT : " << endl << comment_str << endl; 73 ws_list.push_back( comment_str ); 74 comment_str = ""; 75 } 76 yy_pop_state(); 77 } 46 <INITIAL,C_CODE>"/*" { /* C style comments */ 47 #if defined(DEBUG_ALL) | defined(DEBUG_COMMENT) 48 cerr << "\"/*\" : " << yytext << endl; 49 #endif 50 if ( YYSTATE == C_CODE ) code_str += yytext; 51 else comment_str += yytext; 52 yy_push_state(C_COMMENT); 53 } 54 <C_COMMENT>(.|"\n") { /* C style comments */ 55 #if defined(DEBUG_ALL) | defined(DEBUG_COMMENT) 56 cerr << "<C_COMMENT>(.|\\n) : " << yytext << endl; 57 #endif 58 if ( yy_top_state() == C_CODE ) code_str += yytext; 59 else comment_str += yytext; 60 } 61 <C_COMMENT>"*/" { /* C style comments */ 62 #if defined(DEBUG_ALL) | defined(DEBUG_COMMENT) 63 cerr << "<C_COMMENT>\"*/\" : " << yytext << endl; 64 #endif 65 if ( yy_top_state() == C_CODE ) code_str += yytext; 66 else { 67 comment_str += yytext; 68 //cerr << "C COMMENT : " << endl << comment_str << endl; 69 ws_list.push_back( comment_str ); 70 comment_str = ""; 71 } 72 yy_pop_state(); 73 } 74 <INITIAL,C_CODE>"//"[^\n]*"\n" { /* C++ style comments */ 75 #if defined(DEBUG_ALL) | defined(DEBUG_COMMENT) 76 cerr << "\"//\"[^\\n]*\"\n\" : " << yytext << endl; 77 #endif 78 if ( YYSTATE == C_CODE ) code_str += yytext; 79 else { 80 comment_str += yytext; 81 //cerr << "C++ COMMENT : " << endl << comment_str << endl; 82 ws_list.push_back( comment_str ); 83 comment_str = ""; 84 } 85 } 78 86 79 <INITIAL,C_CODE>"//"[^\n]*"\n" { // C++ style comments 80 #if defined(DEBUG_ALL) | defined(DEBUG_COMMENT) 81 cerr << "\"//\"[^\\n]*\"\n\" : " << yytext << endl; 82 #endif 83 if ( YYSTATE == C_CODE ) code_str += yytext; 84 else { 85 comment_str += yytext; 86 //cerr << "C++ COMMENT : " << endl << comment_str << endl; 87 ws_list.push_back( comment_str ); 88 comment_str = ""; 89 } 90 } 87 ";" { RETURN_TOKEN( ';' ) } 88 ":" { RETURN_TOKEN( ':' ) } 89 "|" { RETURN_TOKEN( '|' ) } 90 "," { RETURN_TOKEN( ',' ) } 91 "<" { RETURN_TOKEN( '<' ) } 92 ">" { RETURN_TOKEN( '>' ) } 91 93 92 ";" { RETURN_TOKEN( ';' ) } 93 ":" { RETURN_TOKEN( ':' ) } 94 "|" { RETURN_TOKEN( '|' ) } 95 "," { RETURN_TOKEN( ',' ) } 96 "<" { RETURN_TOKEN( '<' ) } 97 ">" { RETURN_TOKEN( '>' ) } 94 [[:space:]]+ { /* [ \t\n]+ */ 95 ws_list.push_back( yytext ); 96 //cerr << "WS : " << "\"" << yytext << "\"" << endl; 97 } 98 98 99 [[:space:]]+ { // [ \t\n]+ 100 ws_list.push_back( yytext ); 101 //cerr << "WS : " << "\"" << yytext << "\"" << endl; 102 } 103 104 <INITIAL>"{" { RETURN_TOKEN( '{' ) } 105 <INITIAL>"}" { RETURN_TOKEN( '}' ) } 106 <C_CODE>"{" { 107 #if defined(DEBUG_ALL) | defined(DEBUG_C) 108 cerr << "<C_CODE>. : " << yytext << endl; 109 #endif 110 code_str += yytext; 111 RETURN_TOKEN( '{' ) 112 } 113 <C_CODE>"}" { 114 #if defined(DEBUG_ALL) | defined(DEBUG_C) 115 cerr << "<C_CODE>. : " << yytext << endl; 116 #endif 117 code_str += yytext; 118 RETURN_TOKEN( '}' ) 119 } 99 <INITIAL>"{" { RETURN_TOKEN( '{' ) } 100 <INITIAL>"}" { RETURN_TOKEN( '}' ) } 101 <C_CODE>"{" { 102 #if defined(DEBUG_ALL) | defined(DEBUG_C) 103 cerr << "<C_CODE>. : " << yytext << endl; 104 #endif 105 code_str += yytext; 106 RETURN_TOKEN( '{' ) 107 } 108 <C_CODE>"}" { 109 #if defined(DEBUG_ALL) | defined(DEBUG_C) 110 cerr << "<C_CODE>. : " << yytext << endl; 111 #endif 112 code_str += yytext; 113 RETURN_TOKEN( '}' ) 114 } 120 115 121 116 "%%" { RETURN_TOKEN( MARK ) } 122 117 "%{" { RETURN_TOKEN( LCURL ) } 123 <C_CODE>"%}" { RETURN_TOKEN( RCURL ) }118 <C_CODE>"%}" { RETURN_TOKEN( RCURL ) } 124 119 125 ^"%union" { RETURN_TOKEN( UNION ) } 126 ^"%start" { RETURN_TOKEN( START ) } 127 ^"%token" { RETURN_TOKEN( TOKEN ) } 128 ^"%type" { RETURN_TOKEN( TYPE ) } 129 ^"%left" { RETURN_TOKEN( LEFT ) } 130 ^"%right" { RETURN_TOKEN( RIGHT ) } 131 ^"%nonassoc" { RETURN_TOKEN( NONASSOC ) } 132 ^"%precedence" { RETURN_TOKEN( PRECEDENCE ) } 133 ^"%pure_parser" { RETURN_TOKEN( PURE_PARSER ) } 134 ^"%semantic_parser" { RETURN_TOKEN( SEMANTIC_PARSER ) } 135 ^"%expect" { RETURN_TOKEN( EXPECT ) } 120 ^"%union" { RETURN_TOKEN( UNION ) } 121 ^"%start" { RETURN_TOKEN( START ) } 122 ^"%token" { RETURN_TOKEN( TOKEN ) } 123 ^"%type" { RETURN_TOKEN( TYPE ) } 124 ^"%left" { RETURN_TOKEN( LEFT ) } 125 ^"%right" { RETURN_TOKEN( RIGHT ) } 126 ^"%nonassoc" { RETURN_TOKEN( NONASSOC ) } 127 ^"%pure_parser" { RETURN_TOKEN( PURE_PARSER ) } 128 ^"%semantic_parser" { RETURN_TOKEN( SEMANTIC_PARSER ) } 129 ^"%expect" { RETURN_TOKEN( EXPECT ) } 136 130 ^"%thong" { RETURN_TOKEN( THONG ) } 137 131 138 132 "%prec" { RETURN_TOKEN( PREC ) } 139 133 140 {integer} { RETURN_TOKEN( INTEGER ); }141 [']{c_char}['] { RETURN_TOKEN( CHARACTER ); }142 {identifier} { RETURN_TOKEN( IDENTIFIER ); }134 {integer} { RETURN_TOKEN( INTEGER ); } 135 [']{c_char}['] { RETURN_TOKEN( CHARACTER ); } 136 {identifier} { RETURN_TOKEN( IDENTIFIER ); } 143 137 144 <C_CODE>["]{s_char}*["] { // hide braces "{}" in strings145 #if defined(DEBUG_ALL) | defined(DEBUG_C)146 cerr << "<C_CODE>. : " << yytext << endl;147 #endif148 code_str += yytext;149 }138 <C_CODE>["]{s_char}*["] { /* hide braces "{}" in strings */ 139 #if defined(DEBUG_ALL) | defined(DEBUG_C) 140 cerr << "<C_CODE>. : " << yytext << endl; 141 #endif 142 code_str += yytext; 143 } 150 144 151 <C_CODE>(.|\n) { // must be last rule of C_CODE152 #if defined(DEBUG_ALL) | defined(DEBUG_C)153 cerr << "<C_CODE>. : " << yytext << endl;154 #endif155 code_str += yytext;156 }145 <C_CODE>(.|\n) { /* must be last rule of C_CODE */ 146 #if defined(DEBUG_ALL) | defined(DEBUG_C) 147 cerr << "<C_CODE>. : " << yytext << endl; 148 #endif 149 code_str += yytext; 150 } 157 151 158 /* unknown characters */ 159 . { printf("unknown character(s):\"%s\" on line %d\n", yytext, yylineno); } 152 . { printf("UNKNOWN CHARACTER:%s\n", yytext); } /* unknown characters */ 160 153 %% 161 154 void lexC(void) {
Note:
See TracChangeset
for help on using the changeset viewer.