Changeset fbcb354
- Timestamp:
- Aug 31, 2017, 3:33:11 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:
- 058f549
- Parents:
- 326338ae (diff), 2ad507b8 (diff)
Note: this is a merge changeset, the changes displayed below correspond to the merge itself.
Use the(diff)
links above to see all the changes relative to each parent. - Files:
-
- 3 added
- 29 edited
Legend:
- Unmodified
- Added
- Removed
-
doc/LaTeXmacros/common.tex
r326338ae rfbcb354 11 11 %% Created On : Sat Apr 9 10:06:17 2016 12 12 %% Last Modified By : Peter A. Buhr 13 %% Last Modified On : Mon Jul 24 21:02:14201714 %% Update Count : 35 213 %% Last Modified On : Mon Aug 28 20:18:42 2017 14 %% Update Count : 355 15 15 %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% 16 16 … … 148 148 % Latin abbreviation 149 149 \newcommand{\abbrevFont}{\textit} % set empty for no italics 150 \newcommand{\EG}{\abbrevFont{e}.\abbrevFont{g}.} 150 151 \newcommand*{\eg}{% 151 \@ifnextchar{,}{\abbrevFont{e}.\abbrevFont{g}.}% 152 {\@ifnextchar{:}{\abbrevFont{e}.\abbrevFont{g}.}% 153 {\abbrevFont{e}.\abbrevFont{g}.,\xspace}}% 154 }% 152 \@ifnextchar{,}{\EG}% 153 {\@ifnextchar{:}{\EG}% 154 {\EG,\xspace}}% 155 }% 156 \newcommand{\IE}{\abbrevFont{i}.\abbrevFont{e}.} 155 157 \newcommand*{\ie}{% 156 \@ifnextchar{,}{\abbrevFont{i}.\abbrevFont{e}.}% 157 {\@ifnextchar{:}{\abbrevFont{i}.\abbrevFont{e}.}% 158 {\abbrevFont{i}.\abbrevFont{e}.,\xspace}}% 159 }% 158 \@ifnextchar{,}{\IE}% 159 {\@ifnextchar{:}{\IE}% 160 {\IE,\xspace}}% 161 }% 162 \newcommand{\ETC}{\abbrevFont{etc}} 160 163 \newcommand*{\etc}{% 161 \@ifnextchar{.}{\abbrevFont{etc}}% 162 {\abbrevFont{etc}.\xspace}% 163 }% 164 \@ifnextchar{.}{\ETC}% 165 {\ETC\xspace}% 166 }% 167 \newcommand{\ETAL}{\abbrevFont{et\:al}} 164 168 \newcommand{\etal}{% 165 \@ifnextchar{.}{\abbrevFont{et~al}}% 166 {\abbrevFont{et al}.\xspace}% 169 \@ifnextchar{.}{\ETAL}% 170 {\abbrevFont{\ETAL}.\xspace}% 171 }% 172 \newcommand{\VIZ}{\abbrevFont{viz}} 173 \newcommand{\viz}{% 174 \@ifnextchar{.}{\VIZ}% 175 {\abbrevFont{\VIZ}.\xspace}% 167 176 }% 168 177 \makeatother -
doc/LaTeXmacros/lstlang.sty
r326338ae rfbcb354 8 8 %% Created On : Sat May 13 16:34:42 2017 9 9 %% Last Modified By : Peter A. Buhr 10 %% Last Modified On : Mon Jul 24 20:40:37201711 %% Update Count : 1 310 %% Last Modified On : Wed Aug 30 22:11:14 2017 11 %% Update Count : 14 12 12 %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% 13 13 … … 112 112 finally, forall, ftype, _Generic, _Imaginary, inline, __label__, lvalue, _Noreturn, one_t, 113 113 otype, restrict, _Static_assert, throw, throwResume, trait, try, ttype, typeof, __typeof, 114 __typeof__, virtual, w ith, zero_t},114 __typeof__, virtual, waitfor, when, with, zero_t}, 115 115 morekeywords=[2]{ 116 116 _Atomic, coroutine, is_coroutine, is_monitor, is_thread, monitor, mutex, nomutex, -
doc/refrat/keywords.tex
r326338ae rfbcb354 11 11 %% Created On : Sun Aug 6 08:17:27 2017 12 12 %% Last Modified By : Peter A. Buhr 13 %% Last Modified On : Sun Aug 6 08:31:42201714 %% Update Count : 413 %% Last Modified On : Wed Aug 30 22:10:10 2017 14 %% Update Count : 5 15 15 %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% 16 16 \begin{tabular}{@{}llllll@{}} … … 52 52 ©ttype© \\ 53 53 ©virtual© \\ 54 ©w ith©\\54 ©waitfor© \\ 55 55 \end{tabular} 56 56 & 57 57 \begin{tabular}{@{}l@{}} 58 ©when© \\ 59 ©with© \\ 58 60 ©zero_t© \\ 59 \\60 \\61 61 \\ 62 62 \\ -
src/Common/CodeLocation.h
r326338ae rfbcb354 9 9 // Author : Andrew Beach 10 10 // Created On : Thr Aug 17 11:23:00 2017 11 // Last Modified By : Andrew Beach12 // Last Modified On : Thr Aug 17 14:07:00201713 // Update Count : 011 // Last Modified By : Peter A. Buhr 12 // Last Modified On : Mon Aug 28 12:46:01 2017 13 // Update Count : 2 14 14 // 15 15 … … 66 66 67 67 inline std::string to_string( const CodeLocation& location ) { 68 return location.isSet() ? location.filename + ":" + std::to_string(location.linenumber) + " " : ""; 68 // Column number ":1" allows IDEs to parse the error message and position the cursor in the source text. 69 return location.isSet() ? location.filename + ":" + std::to_string(location.linenumber) + ":1 " : ""; 69 70 } 70 71 -
src/Common/PassVisitor.h
r326338ae rfbcb354 75 75 virtual void visit( CatchStmt *catchStmt ) override final; 76 76 virtual void visit( FinallyStmt *finallyStmt ) override final; 77 virtual void visit( WaitForStmt *waitforStmt ) override final; 77 78 virtual void visit( NullStmt *nullStmt ) override final; 78 79 virtual void visit( DeclStmt *declStmt ) override final; … … 159 160 virtual Statement* mutate( ReturnStmt *returnStmt ) override final; 160 161 virtual Statement* mutate( ThrowStmt *throwStmt ) override final; 161 virtual Statement* mutate( TryStmt * returnStmt ) override final;162 virtual Statement* mutate( TryStmt *tryStmt ) override final; 162 163 virtual Statement* mutate( CatchStmt *catchStmt ) override final; 163 virtual Statement* mutate( FinallyStmt *catchStmt ) override final; 164 virtual Statement* mutate( FinallyStmt *finallyStmt ) override final; 165 virtual Statement* mutate( WaitForStmt *waitforStmt ) override final; 164 166 virtual NullStmt* mutate( NullStmt *nullStmt ) override final; 165 167 virtual Statement* mutate( DeclStmt *declStmt ) override final; -
src/Common/PassVisitor.impl.h
r326338ae rfbcb354 541 541 } 542 542 543 //-------------------------------------------------------------------------- 544 // FinallyStmt 543 545 template< typename pass_type > 544 546 void PassVisitor< pass_type >::visit( FinallyStmt * node ) { … … 547 549 548 550 template< typename pass_type > 551 Statement * PassVisitor< pass_type >::mutate( FinallyStmt * node ) { 552 MUTATE_BODY( Statement, node ); 553 } 554 555 //-------------------------------------------------------------------------- 556 // WaitForStmt 557 template< typename pass_type > 558 void PassVisitor< pass_type >::visit( WaitForStmt * node ) { 559 VISIT_BODY( node ); 560 } 561 562 template< typename pass_type > 563 Statement * PassVisitor< pass_type >::mutate( WaitForStmt * node ) { 564 MUTATE_BODY( Statement, node ); 565 } 566 567 //-------------------------------------------------------------------------- 568 // NullStmt 569 template< typename pass_type > 549 570 void PassVisitor< pass_type >::visit( NullStmt * node ) { 550 571 VISIT_BODY( node ); … … 552 573 553 574 template< typename pass_type > 575 NullStmt * PassVisitor< pass_type >::mutate( NullStmt * node ) { 576 MUTATE_BODY( NullStmt, node ); 577 } 578 579 //-------------------------------------------------------------------------- 580 // DeclStmt 581 template< typename pass_type > 554 582 void PassVisitor< pass_type >::visit( DeclStmt * node ) { 555 583 VISIT_BODY( node ); … … 557 585 558 586 template< typename pass_type > 587 Statement * PassVisitor< pass_type >::mutate( DeclStmt * node ) { 588 MUTATE_BODY( Statement, node ); 589 } 590 591 //-------------------------------------------------------------------------- 592 // ImplicitCtorDtorStmt 593 template< typename pass_type > 559 594 void PassVisitor< pass_type >::visit( ImplicitCtorDtorStmt * node ) { 560 595 VISIT_BODY( node ); … … 562 597 563 598 template< typename pass_type > 599 Statement * PassVisitor< pass_type >::mutate( ImplicitCtorDtorStmt * node ) { 600 MUTATE_BODY( Statement, node ); 601 } 602 603 //-------------------------------------------------------------------------- 604 // ApplicationExpr 605 template< typename pass_type > 564 606 void PassVisitor< pass_type >::visit( ApplicationExpr * node ) { 565 607 VISIT_BODY( node ); 608 } 609 610 template< typename pass_type > 611 Expression * PassVisitor< pass_type >::mutate( ApplicationExpr * node ) { 612 MUTATE_BODY( Expression, node ); 566 613 } 567 614 … … 944 991 945 992 template< typename pass_type > 946 Statement * PassVisitor< pass_type >::mutate( FinallyStmt * node ) {947 MUTATE_BODY( Statement, node );948 }949 950 template< typename pass_type >951 NullStmt * PassVisitor< pass_type >::mutate( NullStmt * node ) {952 MUTATE_BODY( NullStmt, node );953 }954 955 template< typename pass_type >956 Statement * PassVisitor< pass_type >::mutate( DeclStmt * node ) {957 MUTATE_BODY( Statement, node );958 }959 960 template< typename pass_type >961 Statement * PassVisitor< pass_type >::mutate( ImplicitCtorDtorStmt * node ) {962 MUTATE_BODY( Statement, node );963 }964 965 template< typename pass_type >966 Expression * PassVisitor< pass_type >::mutate( ApplicationExpr * node ) {967 MUTATE_BODY( Expression, node );968 }969 970 template< typename pass_type >971 993 Expression * PassVisitor< pass_type >::mutate( NameExpr * node ) { 972 994 MUTATE_BODY( Expression, node ); -
src/Common/SemanticError.cc
r326338ae rfbcb354 10 10 // Created On : Mon May 18 07:44:20 2015 11 11 // Last Modified By : Peter A. Buhr 12 // Last Modified On : Tue May 19 07:21:25 201513 // Update Count : 112 // Last Modified On : Tue Aug 29 18:17:35 2017 13 // Update Count : 3 14 14 // 15 15 16 #include <cstdio> 17 #include <unistd.h> 18 #include <iostream> 19 #include <list> 20 #include <string> 16 #include <cstdio> // for fileno, stderr 17 #include <unistd.h> // for isatty 18 #include <iostream> // for basic_ostream, operator<<, ostream 19 #include <list> // for list, _List_iterator 20 #include <string> // for string, operator<<, operator+, to_string 21 21 22 #include "Common/utility.h" 22 #include "Common/utility.h" // for to_string, CodeLocation (ptr only) 23 23 #include "SemanticError.h" 24 25 inline const std::string& error_str() {26 static std::string str = isatty( fileno(stderr) ) ? "\e[31merror:\e[39m " : "error: ";27 return str;28 }29 24 30 25 SemanticError::SemanticError() { … … 49 44 void SemanticError::print( std::ostream &os ) { 50 45 using std::to_string; 51 for( auto err : errors) {52 os << to_string( err.location ) << err.description << '\n';46 for( auto err : errors ) { 47 os << to_string( err.location ) << err.description << std::endl; 53 48 } 54 49 } -
src/Common/SemanticError.h
r326338ae rfbcb354 9 9 // Author : Richard C. Bilson 10 10 // Created On : Mon May 18 07:44:20 2015 11 // Last Modified By : Andrew Beach12 // Last Modified On : T hr Aug 17 14:01:00201713 // Update Count : 711 // Last Modified By : Peter A. Buhr 12 // Last Modified On : Tue Aug 29 22:03:36 2017 13 // Update Count : 17 14 14 // 15 15 16 16 #pragma once 17 17 18 #include <exception> // for exception 19 #include <iostream> // for ostream 20 #include <list> // for list 21 #include <string> // for string 18 #include <exception> // for exception 19 #include <iostream> // for ostream 20 #include <list> // for list 21 #include <string> // for string 22 #include <unistd.h> // for isatty 22 23 23 #include "CodeLocation.h" 24 #include "CodeLocation.h" // for CodeLocation, toString 24 25 25 26 struct error { … … 28 29 29 30 error() = default; 30 error( const std::string & str ) : description( str ) {}31 error( const std::string & str ) : description( str ) {} 31 32 32 void maybeSet( const CodeLocation & location ) {33 void maybeSet( const CodeLocation & location ) { 33 34 if( this->location.linenumber < 0 ) { 34 35 this->location = location; … … 41 42 SemanticError(); 42 43 SemanticError( std::string error ); 43 template< typename T > SemanticError( const std::string & error, const T *obj );44 template< typename T > SemanticError( const std::string & error, const T * obj ); 44 45 ~SemanticError() throw() {} 45 46 46 void append( SemanticError &other ); 47 static inline const std::string & error_str() { 48 static std::string str = isatty( STDERR_FILENO ) ? "\e[31merror:\e[39m " : "error: "; 49 return str; 50 } 51 52 void append( SemanticError & other ); 47 53 void append( const std::string & ); 48 54 bool isEmpty() const; 49 void print( std::ostream & os );55 void print( std::ostream & os ); 50 56 51 void set_location( const CodeLocation & location );52 // constructs an exception using the given message and the printed 53 // representation of the obj (T must have a printmethod)57 void set_location( const CodeLocation & location ); 58 // constructs an exception using the given message and the printed representation of the obj (T must have a print 59 // method) 54 60 private: 55 61 std::list< error > errors; … … 57 63 58 64 template< typename T > 59 SemanticError::SemanticError( const std::string & error, const T *obj ) {65 SemanticError::SemanticError( const std::string & error, const T * obj ) { 60 66 append( toString( error, obj ) ); 61 67 } -
src/Concurrency/Keywords.cc
r326338ae rfbcb354 19 19 #include <string> // for string, operator== 20 20 21 #include "Common/PassVisitor.h" // for PassVisitor 21 22 #include "Common/SemanticError.h" // for SemanticError 22 23 #include "Common/utility.h" // for deleteAll, map_range … … 46 47 47 48 //============================================================================================= 48 // Visitors declaration49 // Pass declarations 49 50 //============================================================================================= 50 51 … … 58 59 // static inline NewField_t * getter_name( MyType * this ) { return &this->newField; } 59 60 // 60 class ConcurrentSueKeyword : public Visitor { 61 protected: 62 template< typename Visitor > 63 friend void SymTab::acceptAndAdd( std::list< Declaration * > &translationUnit, Visitor &visitor ); 61 class ConcurrentSueKeyword : public WithDeclsToAdd { 64 62 public: 65 63 … … 69 67 virtual ~ConcurrentSueKeyword() {} 70 68 71 using Visitor::visit; 72 virtual void visit( StructDecl * decl ) override final; 69 void postvisit( StructDecl * decl ); 73 70 74 71 void handle( StructDecl * ); … … 86 83 bool needs_main; 87 84 88 std::list< Declaration * > declsToAdd, declsToAddAfter;89 85 StructDecl* type_decl = nullptr; 90 86 }; … … 117 113 118 114 static void implement( std::list< Declaration * > & translationUnit ) { 119 ThreadKeywordimpl;120 SymTab::acceptAndAdd( translationUnit, impl );115 PassVisitor< ThreadKeyword > impl; 116 acceptAll( translationUnit, impl ); 121 117 } 122 118 }; … … 148 144 149 145 static void implement( std::list< Declaration * > & translationUnit ) { 150 CoroutineKeywordimpl;151 SymTab::acceptAndAdd( translationUnit, impl );146 PassVisitor< CoroutineKeyword > impl; 147 acceptAll( translationUnit, impl ); 152 148 } 153 149 }; … … 179 175 180 176 static void implement( std::list< Declaration * > & translationUnit ) { 181 MonitorKeywordimpl;182 SymTab::acceptAndAdd( translationUnit, impl );177 PassVisitor< MonitorKeyword > impl; 178 acceptAll( translationUnit, impl ); 183 179 } 184 180 }; … … 192 188 // } } 193 189 // 194 class MutexKeyword final : public Visitor{190 class MutexKeyword final { 195 191 public: 196 192 197 using Visitor::visit; 198 virtual void visit( FunctionDecl * decl ) override final; 199 virtual void visit( StructDecl * decl ) override final; 193 void postvisit( FunctionDecl * decl ); 194 void postvisit( StructDecl * decl ); 200 195 201 196 std::list<DeclarationWithType*> findMutexArgs( FunctionDecl* ); … … 204 199 205 200 static void implement( std::list< Declaration * > & translationUnit ) { 206 MutexKeywordimpl;201 PassVisitor< MutexKeyword > impl; 207 202 acceptAll( translationUnit, impl ); 208 203 } … … 230 225 // } } 231 226 // 232 class ThreadStarter final : public Visitor{227 class ThreadStarter final { 233 228 public: 234 229 235 using Visitor::visit; 236 virtual void visit( FunctionDecl * decl ) override final; 230 void postvisit( FunctionDecl * decl ); 237 231 238 232 void addStartStatement( FunctionDecl * decl, DeclarationWithType * param ); 239 233 240 234 static void implement( std::list< Declaration * > & translationUnit ) { 241 ThreadStarterimpl;235 PassVisitor< ThreadStarter > impl; 242 236 acceptAll( translationUnit, impl ); 243 237 } … … 264 258 // Generic keyword implementation 265 259 //============================================================================================= 266 void ConcurrentSueKeyword::visit(StructDecl * decl) { 267 Visitor::visit(decl); 260 void ConcurrentSueKeyword::postvisit(StructDecl * decl) { 268 261 if( decl->get_name() == type_name && decl->has_body() ) { 269 262 assert( !type_decl ); … … 353 346 } 354 347 355 declsToAdd .push_back( forward );356 if( needs_main ) declsToAdd .push_back( main_decl );357 declsToAdd .push_back( get_decl );348 declsToAddBefore.push_back( forward ); 349 if( needs_main ) declsToAddBefore.push_back( main_decl ); 350 declsToAddBefore.push_back( get_decl ); 358 351 359 352 return get_decl; … … 405 398 //============================================================================================= 406 399 407 void MutexKeyword::visit(FunctionDecl* decl) { 408 Visitor::visit(decl); 400 void MutexKeyword::postvisit(FunctionDecl* decl) { 409 401 410 402 std::list<DeclarationWithType*> mutexArgs = findMutexArgs( decl ); … … 424 416 } 425 417 426 void MutexKeyword::visit(StructDecl* decl) { 427 Visitor::visit(decl); 418 void MutexKeyword::postvisit(StructDecl* decl) { 428 419 429 420 if( decl->get_name() == "monitor_desc" ) { … … 532 523 // General entry routine 533 524 //============================================================================================= 534 void ThreadStarter::visit(FunctionDecl * decl) { 535 Visitor::visit(decl); 536 525 void ThreadStarter::postvisit(FunctionDecl * decl) { 537 526 if( ! CodeGen::isConstructor(decl->get_name()) ) return; 538 527 -
src/InitTweak/InitTweak.cc
r326338ae rfbcb354 325 325 std::string name = getFunctionName( expr ); 326 326 assertf( name == "*?", "Unexpected untyped expression: %s", name.c_str() ); 327 assertf( ! expr->get_args().empty(), "Can 't get called function from dereference with no arguments" );327 assertf( ! expr->get_args().empty(), "Cannot get called function from dereference with no arguments" ); 328 328 return getCalledFunction( expr->get_args().front() ); 329 329 } … … 433 433 std::string name = getFunctionName( expr ); 434 434 assertf( name == "*?", "Unexpected untyped expression: %s", name.c_str() ); 435 assertf( ! expr->get_args().empty(), "Can 't get function name from dereference with no arguments" );435 assertf( ! expr->get_args().empty(), "Cannot get function name from dereference with no arguments" ); 436 436 return funcName( expr->get_args().front() ); 437 437 } -
src/Parser/StatementNode.cc
r326338ae rfbcb354 212 212 WaitForStmt::Target target; 213 213 target.function = maybeBuild<Expression>( targetExpr ); 214 buildMoveList< Expression >( targetExpr, target.arguments ); 214 215 ExpressionNode * next = dynamic_cast<ExpressionNode *>( targetExpr->get_next() ); 216 targetExpr->set_next( nullptr ); 217 buildMoveList< Expression >( next, target.arguments ); 218 215 219 delete targetExpr; 216 220 … … 226 230 WaitForStmt * build_waitfor( ExpressionNode * targetExpr, StatementNode * stmt, ExpressionNode * when, WaitForStmt * node ) { 227 231 WaitForStmt::Target target; 228 229 232 target.function = maybeBuild<Expression>( targetExpr ); 230 buildMoveList< Expression >( targetExpr, target.arguments ); 233 234 ExpressionNode * next = dynamic_cast<ExpressionNode *>( targetExpr->get_next() ); 235 targetExpr->set_next( nullptr ); 236 buildMoveList< Expression >( next, target.arguments ); 237 231 238 delete targetExpr; 232 239 -
src/Parser/lex.ll
r326338ae rfbcb354 10 10 * Created On : Sat Sep 22 08:58:10 2001 11 11 * Last Modified By : Peter A. Buhr 12 * Last Modified On : Tue Aug 22 22:43:39201713 * Update Count : 5 5812 * Last Modified On : Wed Aug 30 17:35:21 2017 13 * Update Count : 584 14 14 */ 15 15 … … 19 19 20 20 %{ 21 // Th islexer assumes the program has been preprocessed by cpp. Hence, all user level preprocessor directive have been21 // The lexer assumes the program has been preprocessed by cpp. Hence, all user level preprocessor directive have been 22 22 // performed and removed from the source. The only exceptions are preprocessor directives passed to the compiler (e.g., 23 23 // line-number directives) and C/C++ style comments, which are ignored. … … 25 25 //**************************** Includes and Defines **************************** 26 26 27 unsigned int column = 0; // position of the end of the last token parsed 28 #define YY_USER_ACTION column += yyleng; // trigger before each matching rule's action 29 27 30 #include <string> 28 31 #include <cstdio> // FILENAME_MAX 32 using namespace std; 29 33 30 34 #include "ParseNode.h" … … 32 36 33 37 char *yyfilename; 34 st d::string *strtext;// accumulate parts of character and string constant value38 string *strtext; // accumulate parts of character and string constant value 35 39 36 40 #define RETURN_LOCN(x) yylval.tok.loc.file = yyfilename; yylval.tok.loc.line = yylineno; return( x ) 37 #define RETURN_VAL(x) yylval.tok.str = new st d::string( yytext ); RETURN_LOCN( x )41 #define RETURN_VAL(x) yylval.tok.str = new string( yytext ); RETURN_LOCN( x ) 38 42 #define RETURN_CHAR(x) yylval.tok.str = nullptr; RETURN_LOCN( x ) 39 43 #define RETURN_STR(x) yylval.tok.str = strtext; RETURN_LOCN( x ) 40 44 41 45 #define WHITE_RETURN(x) // do nothing 42 #define NEWLINE_RETURN() WHITE_RETURN( '\n' )46 #define NEWLINE_RETURN() column = 0; WHITE_RETURN( '\n' ) 43 47 #define ASCIIOP_RETURN() RETURN_CHAR( (int)yytext[0] ) // single character operator 44 48 #define NAMEDOP_RETURN(x) RETURN_CHAR( x ) // multichar operator, with a name … … 154 158 memcpy( &filename, begin_string + 1, length ); // copy file name from yytext 155 159 filename[ length ] = '\0'; // terminate string with sentinel 156 // std::cout << "file " << filename << " line " << lineno << std::endl;160 //cout << "file " << filename << " line " << lineno << endl; 157 161 yylineno = lineno; 158 162 yyfilename = filename; … … 302 306 303 307 /* character constant, allows empty value */ 304 ({cwide_prefix}[_]?)?['] { BEGIN QUOTE; rm_underscore(); strtext = new st d::string( yytext, yyleng ); }308 ({cwide_prefix}[_]?)?['] { BEGIN QUOTE; rm_underscore(); strtext = new string( yytext, yyleng ); } 305 309 <QUOTE>[^'\\\n]* { strtext->append( yytext, yyleng ); } 306 310 <QUOTE>['\n] { BEGIN 0; strtext->append( yytext, yyleng ); RETURN_STR(CHARACTERconstant); } … … 308 312 309 313 /* string constant */ 310 ({swide_prefix}[_]?)?["] { BEGIN STRING; rm_underscore(); strtext = new st d::string( yytext, yyleng ); }314 ({swide_prefix}[_]?)?["] { BEGIN STRING; rm_underscore(); strtext = new string( yytext, yyleng ); } 311 315 <STRING>[^"\\\n]* { strtext->append( yytext, yyleng ); } 312 316 <STRING>["\n] { BEGIN 0; strtext->append( yytext, yyleng ); RETURN_STR(STRINGliteral); } … … 422 426 } 423 427 424 /* unknown character s*/425 . { printf("unknown character(s):\"%s\" on line %d\n", yytext, yylineno); }428 /* unknown character */ 429 . { yyerror( "unknown character" ); } 426 430 427 431 %% 432 // ----end of lexer---- 433 434 void yyerror( const char * errmsg ) { 435 cout << (yyfilename ? yyfilename : "*unknown file*") << ':' << yylineno << ':' << column - yyleng + 1 436 << ": " << SemanticError::error_str() << errmsg << " at token \"" << (yytext[0] == '\0' ? "EOF" : yytext) << '"' << endl; 437 } 428 438 429 439 // Local Variables: // -
src/Parser/parser.yy
r326338ae rfbcb354 10 10 // Created On : Sat Sep 1 20:22:55 2001 11 11 // Last Modified By : Peter A. Buhr 12 // Last Modified On : Sat Aug 26 17:50:19 201713 // Update Count : 27 1212 // Last Modified On : Wed Aug 30 07:04:19 2017 13 // Update Count : 2740 14 14 // 15 15 … … 48 48 #include <cstdio> 49 49 #include <stack> 50 using namespace std; 51 50 52 #include "ParseNode.h" 51 53 #include "TypedefTable.h" 52 54 #include "TypeData.h" 53 55 #include "LinkageSpec.h" 54 using namespace std; 56 #include "Common/SemanticError.h" // error_str 55 57 56 58 extern DeclarationNode * parseTree; … … 3133 3135 // ----end of grammar---- 3134 3136 3135 extern char *yytext;3136 3137 void yyerror( const char * ) {3138 cout << "Error ";3139 if ( yyfilename ) {3140 cout << "in file " << yyfilename << " ";3141 } // if3142 cout << "at line " << yylineno << " reading token \"" << (yytext[0] == '\0' ? "EOF" : yytext) << "\"" << endl;3143 }3144 3145 3137 // Local Variables: // 3146 3138 // mode: c++ // -
src/ResolvExpr/AlternativeFinder.cc
r326338ae rfbcb354 9 9 // Author : Richard C. Bilson 10 10 // Created On : Sat May 16 23:52:08 2015 11 // Last Modified By : Andrew Beach12 // Last Modified On : Wed Jul 26 11:33:00201713 // Update Count : 3 111 // Last Modified By : Peter A. Buhr 12 // Last Modified On : Mon Aug 28 13:47:24 2017 13 // Update Count : 32 14 14 // 15 15 … … 195 195 AltList winners; 196 196 findMinCost( alternatives.begin(), alternatives.end(), back_inserter( winners ) ); 197 stream << "Can 't choose between " << winners.size() << " alternatives for expression ";197 stream << "Cannot choose between " << winners.size() << " alternatives for expression "; 198 198 expr->print( stream ); 199 199 stream << "Alternatives are:"; -
src/SymTab/Validate.cc
r326338ae rfbcb354 9 9 // Author : Richard C. Bilson 10 10 // Created On : Sun May 17 21:50:04 2015 11 // Last Modified By : Andrew Beach12 // Last Modified On : Tus Aug 8 13:27:00201713 // Update Count : 35 811 // Last Modified By : Peter A. Buhr 12 // Last Modified On : Mon Aug 28 13:47:23 2017 13 // Update Count : 359 14 14 // 15 15 … … 709 709 } else { 710 710 TypeDeclMap::const_iterator base = typedeclNames.find( typeInst->get_name() ); 711 assertf( base != typedeclNames.end(), "Can 't find typedecl name %s", typeInst->get_name().c_str() );711 assertf( base != typedeclNames.end(), "Cannot find typedecl name %s", typeInst->get_name().c_str() ); 712 712 typeInst->set_baseType( base->second ); 713 713 } // if -
src/libcfa/concurrency/coroutine
r326338ae rfbcb354 1 // - *- Mode: CFA - *-2 1 // 3 2 // Cforall Version 1.0.0 Copyright (C) 2016 University of Waterloo … … 11 10 // Created On : Mon Nov 28 12:27:26 2016 12 11 // Last Modified By : Peter A. Buhr 13 // Last Modified On : Sat Jul 22 09:57:17201714 // Update Count : 212 // Last Modified On : Wed Aug 30 07:58:29 2017 13 // Update Count : 3 15 14 // 16 15 -
src/prelude/prelude.cf
r326338ae rfbcb354 1 // -*- Mode: C -*-2 1 // 3 2 // Copyright (C) Glen Ditchfield 1994, 1999 … … 8 7 // Created On : Sat Nov 29 07:23:41 2014 9 8 // Last Modified By : Peter A. Buhr 10 // Last Modified On : Tue Jul 5 18:04:40 201611 // Update Count : 9 29 // Last Modified On : Wed Aug 30 07:56:07 2017 10 // Update Count : 93 12 11 // 13 12 -
src/tests/.expect/castError.txt
r326338ae rfbcb354 1 castError.c:7 error: Can't choose between 3 alternatives for expression Cast of:1 castError.c:7:1 error: Cannot choose between 3 alternatives for expression Cast of: 2 2 Name: f 3 3 -
src/tests/.expect/completeTypeError.txt
r326338ae rfbcb354 1 completeTypeError.c:34 error: No reasonable alternatives for expression Applying untyped:1 completeTypeError.c:34:1 error: No reasonable alternatives for expression Applying untyped: 2 2 Name: *? 3 3 ...to: … … 5 5 6 6 7 completeTypeError.c:36 error: No reasonable alternatives for expression Applying untyped:7 completeTypeError.c:36:1 error: No reasonable alternatives for expression Applying untyped: 8 8 Name: baz 9 9 ...to: … … 11 11 12 12 13 completeTypeError.c:37 error: No reasonable alternatives for expression Applying untyped:13 completeTypeError.c:37:1 error: No reasonable alternatives for expression Applying untyped: 14 14 Name: quux 15 15 ...to: … … 17 17 18 18 19 completeTypeError.c:58 error: No reasonable alternatives for expression Applying untyped:19 completeTypeError.c:58:1 error: No reasonable alternatives for expression Applying untyped: 20 20 Name: baz 21 21 ...to: … … 23 23 24 24 25 completeTypeError.c:59 error: No reasonable alternatives for expression Applying untyped:25 completeTypeError.c:59:1 error: No reasonable alternatives for expression Applying untyped: 26 26 Name: quux 27 27 ...to: … … 29 29 30 30 31 completeTypeError.c:60 error: No reasonable alternatives for expression Applying untyped:31 completeTypeError.c:60:1 error: No reasonable alternatives for expression Applying untyped: 32 32 Name: *? 33 33 ...to: … … 35 35 36 36 37 completeTypeError.c:72 error: No reasonable alternatives for expression Applying untyped:37 completeTypeError.c:72:1 error: No reasonable alternatives for expression Applying untyped: 38 38 Name: baz 39 39 ...to: -
src/tests/.expect/declarationErrors.txt
r326338ae rfbcb354 1 declarationErrors.c:16 error: duplicate static in declaration of x1: static const volatile short int1 declarationErrors.c:16:1 error: duplicate static in declaration of x1: static const volatile short int 2 2 3 declarationErrors.c:17 error: conflicting extern & static in declaration of x2: extern const volatile short int3 declarationErrors.c:17:1 error: conflicting extern & static in declaration of x2: extern const volatile short int 4 4 5 declarationErrors.c:18 error: conflicting extern & auto, conflicting extern & static, conflicting extern & static, duplicate extern in declaration of x3: extern const volatile short int5 declarationErrors.c:18:1 error: conflicting extern & auto, conflicting extern & static, conflicting extern & static, duplicate extern in declaration of x3: extern const volatile short int 6 6 7 declarationErrors.c:19 error: duplicate static in declaration of x4: static const volatile instance of const volatile struct __anonymous07 declarationErrors.c:19:1 error: duplicate static in declaration of x4: static const volatile instance of const volatile struct __anonymous0 8 8 with members 9 9 with body 10 10 11 11 12 declarationErrors.c:20 error: duplicate const, duplicate static, duplicate volatile in declaration of x5: static const volatile instance of const volatile struct __anonymous112 declarationErrors.c:20:1 error: duplicate const, duplicate static, duplicate volatile in declaration of x5: static const volatile instance of const volatile struct __anonymous1 13 13 with members 14 14 with body 15 15 16 16 17 declarationErrors.c:22 error: duplicate static in declaration of x6: static const volatile instance of type Int17 declarationErrors.c:22:1 error: duplicate static in declaration of x6: static const volatile instance of type Int 18 18 19 declarationErrors.c:24 error: duplicate const in declaration of f01: static inline function19 declarationErrors.c:24:1 error: duplicate const in declaration of f01: static inline function 20 20 with no parameters 21 21 returning const volatile int 22 22 23 23 24 declarationErrors.c:25 error: duplicate volatile in declaration of f02: static inline function24 declarationErrors.c:25:1 error: duplicate volatile in declaration of f02: static inline function 25 25 with no parameters 26 26 returning const volatile int 27 27 28 28 29 declarationErrors.c:26 error: duplicate const in declaration of f03: static inline function29 declarationErrors.c:26:1 error: duplicate const in declaration of f03: static inline function 30 30 with no parameters 31 31 returning const volatile int 32 32 33 33 34 declarationErrors.c:27 error: duplicate volatile in declaration of f04: static inline function34 declarationErrors.c:27:1 error: duplicate volatile in declaration of f04: static inline function 35 35 with no parameters 36 36 returning const volatile int 37 37 38 38 39 declarationErrors.c:28 error: duplicate const in declaration of f05: static inline function39 declarationErrors.c:28:1 error: duplicate const in declaration of f05: static inline function 40 40 with no parameters 41 41 returning const volatile int 42 42 43 43 44 declarationErrors.c:29 error: duplicate volatile in declaration of f06: static inline function44 declarationErrors.c:29:1 error: duplicate volatile in declaration of f06: static inline function 45 45 with no parameters 46 46 returning const volatile int 47 47 48 48 49 declarationErrors.c:30 error: duplicate const in declaration of f07: static inline function49 declarationErrors.c:30:1 error: duplicate const in declaration of f07: static inline function 50 50 with no parameters 51 51 returning const volatile int 52 52 53 53 54 declarationErrors.c:31 error: duplicate const, duplicate volatile in declaration of f08: static inline function54 declarationErrors.c:31:1 error: duplicate const, duplicate volatile in declaration of f08: static inline function 55 55 with no parameters 56 56 returning const volatile int 57 57 58 58 59 declarationErrors.c:33 error: duplicate const, duplicate volatile in declaration of f09: static inline function59 declarationErrors.c:33:1 error: duplicate const, duplicate volatile in declaration of f09: static inline function 60 60 with no parameters 61 61 returning const volatile int 62 62 63 63 64 declarationErrors.c:34 error: duplicate const, duplicate _Atomic, duplicate _Atomic, duplicate const, duplicate restrict, duplicate volatile in declaration of f09: static inline function64 declarationErrors.c:34:1 error: duplicate const, duplicate _Atomic, duplicate _Atomic, duplicate const, duplicate restrict, duplicate volatile in declaration of f09: static inline function 65 65 with no parameters 66 66 returning const restrict volatile _Atomic int -
src/tests/.expect/dtor-early-exit-ERR1.txt
r326338ae rfbcb354 1 dtor-early-exit.c:142 error: jump to label 'L1' crosses initialization of y Branch (Goto) 1 dtor-early-exit.c:142:1 error: jump to label 'L1' crosses initialization of y Branch (Goto) 2 -
src/tests/.expect/dtor-early-exit-ERR2.txt
r326338ae rfbcb354 1 dtor-early-exit.c:142 error: jump to label 'L2' crosses initialization of y Branch (Goto) 1 dtor-early-exit.c:142:1 error: jump to label 'L2' crosses initialization of y Branch (Goto) 2 -
src/tests/.expect/memberCtors-ERR1.txt
r326338ae rfbcb354 1 memberCtors.c:71 error: in void ?{}(B &b), field a2 used before being constructed1 memberCtors.c:71:1 error: in void ?{}(B &b), field a2 used before being constructed -
src/tests/.expect/scopeErrors.txt
r326338ae rfbcb354 1 scopeErrors.c:2 error: duplicate object definition for thisIsAnError: signed int2 scopeErrors.c:20 error: duplicate function definition for butThisIsAnError: function1 scopeErrors.c:2:1 error: duplicate object definition for thisIsAnError: signed int 2 scopeErrors.c:20:1 error: duplicate function definition for butThisIsAnError: function 3 3 with parameters 4 4 double 5 returning 5 returning 6 6 _retval_butThisIsAnError: Attribute with name: unused 7 7 double 8 with body 8 with body 9 9 CompoundStmt 10 -
src/tests/div.c
r326338ae rfbcb354 1 // -*- Mode: C -*-2 1 // 3 2 // Cforall Version 1.0.0 Copyright (C) 2016 University of Waterloo … … 11 10 // Created On : Tue Aug 8 16:28:43 2017 12 11 // Last Modified By : Peter A. Buhr 13 // Last Modified On : Wed Aug 9 17:09:40201714 // Update Count : 1 612 // Last Modified On : Wed Aug 30 07:56:28 2017 13 // Update Count : 17 15 14 // 16 15 -
src/tests/ifcond.c
r326338ae rfbcb354 1 // -*- Mode: C -*-2 1 // 3 // Cforall Version 1.0.0 Copyright (C) 201 6University of Waterloo2 // Cforall Version 1.0.0 Copyright (C) 2017 University of Waterloo 4 3 // 5 4 // The contents of this file are covered under the licence agreement in the … … 11 10 // Created On : Sat Aug 26 10:13:11 2017 12 11 // Last Modified By : Peter A. Buhr 13 // Last Modified On : Sat Aug 26 11:13:00201714 // Update Count : 1 112 // Last Modified On : Wed Aug 30 07:55:24 2017 13 // Update Count : 13 15 14 // 16 15 -
tools/prettyprinter/lex.ll
r326338ae rfbcb354 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
r326338ae rfbcb354 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
r326338ae rfbcb354 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.