Changeset fc1ef62
- Timestamp:
- Aug 29, 2017, 5:40:44 PM (8 years ago)
- Branches:
- ADT, aaron-thesis, arm-eh, ast-experimental, cleanup-dtors, deferred_resn, demangler, enum, forall-pointer-decay, jacob/cs343-translation, jenkins-sandbox, master, new-ast, new-ast-unique-expr, new-env, no_list, persistent-indexer, pthread-emulation, qualifiedEnum, resolv-new, with_gc
- Children:
- 9ed4f94
- Parents:
- 6454949
- Location:
- tools/prettyprinter
- Files:
-
- 3 edited
Legend:
- Unmodified
- Added
- Removed
-
tools/prettyprinter/lex.ll
r6454949 rfc1ef62 7 7 * lex.ll -- 8 8 * 9 * Author : Rodolfo Gabriel Esteves9 * Author : Peter A. Buhr 10 10 * Created On : Sat Dec 15 11:45:59 2001 11 11 * Last Modified By : Peter A. Buhr 12 * Last Modified On : Fri Jul 21 23:06:16 201713 * Update Count : 2 5412 * Last Modified On : Tue Aug 29 17:33:36 2017 13 * Update Count : 268 14 14 */ 15 15 16 16 %option stack 17 17 %option yylineno 18 %option nounput 18 19 19 20 %{ … … 30 31 string comment_str; 31 32 string code_str; 33 34 // Stop warning due to incorrectly generated flex code. 35 #pragma GCC diagnostic ignored "-Wsign-compare" 32 36 %} 33 37 … … 44 48 /* ---------------------------- Token Section ---------------------------- */ 45 49 %% 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 } 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 } 86 78 87 ";" { RETURN_TOKEN( ';' ) } 88 ":" { RETURN_TOKEN( ':' ) } 89 "|" { RETURN_TOKEN( '|' ) } 90 "," { RETURN_TOKEN( ',' ) } 91 "<" { RETURN_TOKEN( '<' ) } 92 ">" { RETURN_TOKEN( '>' ) } 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 } 93 91 94 [[:space:]]+ { /* [ \t\n]+ */ 95 ws_list.push_back( yytext ); 96 //cerr << "WS : " << "\"" << yytext << "\"" << endl; 97 } 92 ";" { RETURN_TOKEN( ';' ) } 93 ":" { RETURN_TOKEN( ':' ) } 94 "|" { RETURN_TOKEN( '|' ) } 95 "," { RETURN_TOKEN( ',' ) } 96 "<" { RETURN_TOKEN( '<' ) } 97 ">" { RETURN_TOKEN( '>' ) } 98 98 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 } 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 } 115 120 116 121 "%%" { RETURN_TOKEN( MARK ) } 117 122 "%{" { RETURN_TOKEN( LCURL ) } 118 <C_CODE>"%}" 123 <C_CODE>"%}" { RETURN_TOKEN( RCURL ) } 119 124 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 ) } 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 ) } 130 136 ^"%thong" { RETURN_TOKEN( THONG ) } 131 137 132 138 "%prec" { RETURN_TOKEN( PREC ) } 133 139 134 {integer} 135 [']{c_char}['] 136 {identifier} 140 {integer} { RETURN_TOKEN( INTEGER ); } 141 [']{c_char}['] { RETURN_TOKEN( CHARACTER ); } 142 {identifier} { RETURN_TOKEN( IDENTIFIER ); } 137 143 138 <C_CODE>["]{s_char}*["] { /* hide braces "{}" in strings */139 140 141 142 143 144 <C_CODE>["]{s_char}*["] { // hide braces "{}" in strings 145 #if defined(DEBUG_ALL) | defined(DEBUG_C) 146 cerr << "<C_CODE>. : " << yytext << endl; 147 #endif 148 code_str += yytext; 149 } 144 150 145 <C_CODE>(.|\n) { /* must be last rule of C_CODE */146 147 148 149 150 151 <C_CODE>(.|\n) { // must be last rule of C_CODE 152 #if defined(DEBUG_ALL) | defined(DEBUG_C) 153 cerr << "<C_CODE>. : " << yytext << endl; 154 #endif 155 code_str += yytext; 156 } 151 157 152 . { printf("UNKNOWN CHARACTER:%s\n", yytext); } /* unknown characters */ 158 /* unknown characters */ 159 . { printf("unknown character(s):\"%s\" on line %d\n", yytext, yylineno); } 153 160 %% 154 161 void lexC(void) { -
tools/prettyprinter/parser.hh
r6454949 rfc1ef62 59 59 RIGHT = 269, 60 60 NONASSOC = 270, 61 TYPE = 271, 62 PURE_PARSER = 272, 63 SEMANTIC_PARSER = 273, 64 EXPECT = 274, 65 THONG = 275, 66 PREC = 276, 67 END_TERMINALS = 277, 68 _SECTIONS = 278, 69 _DEFSECTION_OPT = 279, 70 _LITERALBLOCK = 280, 71 _DECLARATION = 281, 72 _TAG_OPT = 282, 73 _NAMENOLIST = 283, 74 _NAMENO = 284, 75 _NAMELIST = 285, 76 _RULESECTION = 286, 77 _RULE = 287, 78 _LHS = 288, 79 _RHS = 289, 80 _PREC = 290, 81 _ACTION = 291, 82 _USERSECTION_OPT = 292 61 PRECEDENCE = 271, 62 TYPE = 272, 63 PURE_PARSER = 273, 64 SEMANTIC_PARSER = 274, 65 EXPECT = 275, 66 THONG = 276, 67 PREC = 277, 68 END_TERMINALS = 278, 69 _SECTIONS = 279, 70 _DEFSECTION_OPT = 280, 71 _LITERALBLOCK = 281, 72 _DECLARATION = 282, 73 _TAG_OPT = 283, 74 _NAMENOLIST = 284, 75 _NAMENO = 285, 76 _NAMELIST = 286, 77 _RULESECTION = 287, 78 _RULE = 288, 79 _LHS = 289, 80 _RHS = 290, 81 _PREC = 291, 82 _ACTION = 292, 83 _USERSECTION_OPT = 293 83 84 }; 84 85 #endif … … 97 98 #define RIGHT 269 98 99 #define NONASSOC 270 99 #define TYPE 271 100 #define PURE_PARSER 272 101 #define SEMANTIC_PARSER 273 102 #define EXPECT 274 103 #define THONG 275 104 #define PREC 276 105 #define END_TERMINALS 277 106 #define _SECTIONS 278 107 #define _DEFSECTION_OPT 279 108 #define _LITERALBLOCK 280 109 #define _DECLARATION 281 110 #define _TAG_OPT 282 111 #define _NAMENOLIST 283 112 #define _NAMENO 284 113 #define _NAMELIST 285 114 #define _RULESECTION 286 115 #define _RULE 287 116 #define _LHS 288 117 #define _RHS 289 118 #define _PREC 290 119 #define _ACTION 291 120 #define _USERSECTION_OPT 292 100 #define PRECEDENCE 271 101 #define TYPE 272 102 #define PURE_PARSER 273 103 #define SEMANTIC_PARSER 274 104 #define EXPECT 275 105 #define THONG 276 106 #define PREC 277 107 #define END_TERMINALS 278 108 #define _SECTIONS 279 109 #define _DEFSECTION_OPT 280 110 #define _LITERALBLOCK 281 111 #define _DECLARATION 282 112 #define _TAG_OPT 283 113 #define _NAMENOLIST 284 114 #define _NAMENO 285 115 #define _NAMELIST 286 116 #define _RULESECTION 287 117 #define _RULE 288 118 #define _LHS 289 119 #define _RHS 290 120 #define _PREC 291 121 #define _ACTION 292 122 #define _USERSECTION_OPT 293 121 123 122 124 /* Value type. */ … … 129 131 Token *tokenp; 130 132 131 #line 13 2"parser.hh" /* yacc.c:1909 */133 #line 134 "parser.hh" /* yacc.c:1909 */ 132 134 }; 133 135 -
tools/prettyprinter/parser.yy
r6454949 rfc1ef62 10 10 // Created On : Sat Dec 15 13:44:21 2001 11 11 // Last Modified By : Peter A. Buhr 12 // Last Modified On : T hu Jun 29 09:26:47201713 // Update Count : 104 512 // Last Modified On : Tue Aug 29 16:34:10 2017 13 // Update Count : 1047 14 14 // 15 15 … … 67 67 %token<tokenp> RIGHT // %right 68 68 %token<tokenp> NONASSOC // %nonassoc 69 %token<tokenp> PRECEDENCE // %precedence 69 70 %token<tokenp> TYPE // %type 70 71 %token<tokenp> PURE_PARSER // %pure_parser … … 259 260 | RIGHT 260 261 | NONASSOC 262 | PRECEDENCE 261 263 ; 262 264
Note: See TracChangeset
for help on using the changeset viewer.