Changes in / [fbcb354:326338ae]
- Files:
-
- 3 deleted
- 29 edited
-
doc/LaTeXmacros/common.tex (modified) (2 diffs)
-
doc/LaTeXmacros/lstlang.sty (modified) (2 diffs)
-
doc/refrat/keywords.tex (modified) (2 diffs)
-
src/Common/CodeLocation.h (modified) (2 diffs)
-
src/Common/PassVisitor.h (modified) (2 diffs)
-
src/Common/PassVisitor.impl.h (modified) (6 diffs)
-
src/Common/SemanticError.cc (modified) (2 diffs)
-
src/Common/SemanticError.h (modified) (4 diffs)
-
src/Concurrency/Keywords.cc (modified) (16 diffs)
-
src/InitTweak/InitTweak.cc (modified) (2 diffs)
-
src/Parser/StatementNode.cc (modified) (2 diffs)
-
src/Parser/lex.ll (modified) (8 diffs)
-
src/Parser/parser.yy (modified) (3 diffs)
-
src/ResolvExpr/AlternativeFinder.cc (modified) (2 diffs)
-
src/SymTab/Validate.cc (modified) (2 diffs)
-
src/libcfa/concurrency/coroutine (modified) (2 diffs)
-
src/prelude/prelude.cf (modified) (2 diffs)
-
src/tests/.expect/castError.txt (modified) (1 diff)
-
src/tests/.expect/completeTypeError.txt (modified) (7 diffs)
-
src/tests/.expect/declarationErrors.txt (modified) (1 diff)
-
src/tests/.expect/dtor-early-exit-ERR1.txt (modified) (1 diff)
-
src/tests/.expect/dtor-early-exit-ERR2.txt (modified) (1 diff)
-
src/tests/.expect/memberCtors-ERR1.txt (modified) (1 diff)
-
src/tests/.expect/scopeErrors.txt (modified) (1 diff)
-
src/tests/.expect/stdincludes.txt (deleted)
-
src/tests/div.c (modified) (2 diffs)
-
src/tests/ifcond.c (modified) (2 diffs)
-
src/tests/stdincludes.c (deleted)
-
src/tests/waitfor.c (deleted)
-
tools/prettyprinter/lex.ll (modified) (3 diffs)
-
tools/prettyprinter/parser.hh (modified) (3 diffs)
-
tools/prettyprinter/parser.yy (modified) (3 diffs)
Legend:
- Unmodified
- Added
- Removed
-
doc/LaTeXmacros/common.tex
rfbcb354 r326338ae 11 11 %% Created On : Sat Apr 9 10:06:17 2016 12 12 %% Last Modified By : Peter A. Buhr 13 %% Last Modified On : Mon Aug 28 20:18:42201714 %% Update Count : 35 513 %% Last Modified On : Mon Jul 24 21:02:14 2017 14 %% Update Count : 352 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}.}151 150 \newcommand*{\eg}{% 152 \@ifnextchar{,}{\EG}% 153 {\@ifnextchar{:}{\EG}% 154 {\EG,\xspace}}% 155 }% 156 \newcommand{\IE}{\abbrevFont{i}.\abbrevFont{e}.} 151 \@ifnextchar{,}{\abbrevFont{e}.\abbrevFont{g}.}% 152 {\@ifnextchar{:}{\abbrevFont{e}.\abbrevFont{g}.}% 153 {\abbrevFont{e}.\abbrevFont{g}.,\xspace}}% 154 }% 157 155 \newcommand*{\ie}{% 158 \@ifnextchar{,}{\IE}% 159 {\@ifnextchar{:}{\IE}% 160 {\IE,\xspace}}% 161 }% 162 \newcommand{\ETC}{\abbrevFont{etc}} 156 \@ifnextchar{,}{\abbrevFont{i}.\abbrevFont{e}.}% 157 {\@ifnextchar{:}{\abbrevFont{i}.\abbrevFont{e}.}% 158 {\abbrevFont{i}.\abbrevFont{e}.,\xspace}}% 159 }% 163 160 \newcommand*{\etc}{% 164 \@ifnextchar{.}{\ETC}% 165 {\ETC\xspace}% 166 }% 167 \newcommand{\ETAL}{\abbrevFont{et\:al}} 161 \@ifnextchar{.}{\abbrevFont{etc}}% 162 {\abbrevFont{etc}.\xspace}% 163 }% 168 164 \newcommand{\etal}{% 169 \@ifnextchar{.}{\ETAL}% 170 {\abbrevFont{\ETAL}.\xspace}% 171 }% 172 \newcommand{\VIZ}{\abbrevFont{viz}} 173 \newcommand{\viz}{% 174 \@ifnextchar{.}{\VIZ}% 175 {\abbrevFont{\VIZ}.\xspace}% 165 \@ifnextchar{.}{\abbrevFont{et~al}}% 166 {\abbrevFont{et al}.\xspace}% 176 167 }% 177 168 \makeatother -
doc/LaTeXmacros/lstlang.sty
rfbcb354 r326338ae 8 8 %% Created On : Sat May 13 16:34:42 2017 9 9 %% Last Modified By : Peter A. Buhr 10 %% Last Modified On : Wed Aug 30 22:11:14201711 %% Update Count : 1 410 %% Last Modified On : Mon Jul 24 20:40:37 2017 11 %% Update Count : 13 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 aitfor, when, with, zero_t},114 __typeof__, virtual, with, zero_t}, 115 115 morekeywords=[2]{ 116 116 _Atomic, coroutine, is_coroutine, is_monitor, is_thread, monitor, mutex, nomutex, -
doc/refrat/keywords.tex
rfbcb354 r326338ae 11 11 %% Created On : Sun Aug 6 08:17:27 2017 12 12 %% Last Modified By : Peter A. Buhr 13 %% Last Modified On : Wed Aug 30 22:10:10201714 %% Update Count : 513 %% Last Modified On : Sun Aug 6 08:31:42 2017 14 %% Update Count : 4 15 15 %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% 16 16 \begin{tabular}{@{}llllll@{}} … … 52 52 ©ttype© \\ 53 53 ©virtual© \\ 54 ©w aitfor©\\54 ©with© \\ 55 55 \end{tabular} 56 56 & 57 57 \begin{tabular}{@{}l@{}} 58 ©when© \\59 ©with© \\60 58 ©zero_t© \\ 59 \\ 60 \\ 61 61 \\ 62 62 \\ -
src/Common/CodeLocation.h
rfbcb354 r326338ae 9 9 // Author : Andrew Beach 10 10 // Created On : Thr Aug 17 11:23:00 2017 11 // Last Modified By : Peter A. Buhr12 // Last Modified On : Mon Aug 28 12:46:01201713 // Update Count : 211 // Last Modified By : Andrew Beach 12 // Last Modified On : Thr Aug 17 14:07:00 2017 13 // Update Count : 0 14 14 // 15 15 … … 66 66 67 67 inline std::string to_string( const CodeLocation& location ) { 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 " : ""; 68 return location.isSet() ? location.filename + ":" + std::to_string(location.linenumber) + " " : ""; 70 69 } 71 70 -
src/Common/PassVisitor.h
rfbcb354 r326338ae 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;78 77 virtual void visit( NullStmt *nullStmt ) override final; 79 78 virtual void visit( DeclStmt *declStmt ) override final; … … 160 159 virtual Statement* mutate( ReturnStmt *returnStmt ) override final; 161 160 virtual Statement* mutate( ThrowStmt *throwStmt ) override final; 162 virtual Statement* mutate( TryStmt * tryStmt ) override final;161 virtual Statement* mutate( TryStmt *returnStmt ) override final; 163 162 virtual Statement* mutate( CatchStmt *catchStmt ) override final; 164 virtual Statement* mutate( FinallyStmt *finallyStmt ) override final; 165 virtual Statement* mutate( WaitForStmt *waitforStmt ) override final; 163 virtual Statement* mutate( FinallyStmt *catchStmt ) override final; 166 164 virtual NullStmt* mutate( NullStmt *nullStmt ) override final; 167 165 virtual Statement* mutate( DeclStmt *declStmt ) override final; -
src/Common/PassVisitor.impl.h
rfbcb354 r326338ae 541 541 } 542 542 543 //--------------------------------------------------------------------------544 // FinallyStmt545 543 template< typename pass_type > 546 544 void PassVisitor< pass_type >::visit( FinallyStmt * node ) { … … 549 547 550 548 template< typename pass_type > 551 Statement * PassVisitor< pass_type >::mutate( FinallyStmt * node ) {552 MUTATE_BODY( Statement, node );553 }554 555 //--------------------------------------------------------------------------556 // WaitForStmt557 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 // NullStmt569 template< typename pass_type >570 549 void PassVisitor< pass_type >::visit( NullStmt * node ) { 571 550 VISIT_BODY( node ); … … 573 552 574 553 template< typename pass_type > 575 NullStmt * PassVisitor< pass_type >::mutate( NullStmt * node ) {576 MUTATE_BODY( NullStmt, node );577 }578 579 //--------------------------------------------------------------------------580 // DeclStmt581 template< typename pass_type >582 554 void PassVisitor< pass_type >::visit( DeclStmt * node ) { 583 555 VISIT_BODY( node ); … … 585 557 586 558 template< typename pass_type > 587 Statement * PassVisitor< pass_type >::mutate( DeclStmt * node ) {588 MUTATE_BODY( Statement, node );589 }590 591 //--------------------------------------------------------------------------592 // ImplicitCtorDtorStmt593 template< typename pass_type >594 559 void PassVisitor< pass_type >::visit( ImplicitCtorDtorStmt * node ) { 595 560 VISIT_BODY( node ); … … 597 562 598 563 template< typename pass_type > 599 Statement * PassVisitor< pass_type >::mutate( ImplicitCtorDtorStmt * node ) {600 MUTATE_BODY( Statement, node );601 }602 603 //--------------------------------------------------------------------------604 // ApplicationExpr605 template< typename pass_type >606 564 void PassVisitor< pass_type >::visit( ApplicationExpr * node ) { 607 565 VISIT_BODY( node ); 608 }609 610 template< typename pass_type >611 Expression * PassVisitor< pass_type >::mutate( ApplicationExpr * node ) {612 MUTATE_BODY( Expression, node );613 566 } 614 567 … … 991 944 992 945 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 > 993 971 Expression * PassVisitor< pass_type >::mutate( NameExpr * node ) { 994 972 MUTATE_BODY( Expression, node ); -
src/Common/SemanticError.cc
rfbcb354 r326338ae 10 10 // Created On : Mon May 18 07:44:20 2015 11 11 // Last Modified By : Peter A. Buhr 12 // Last Modified On : Tue Aug 29 18:17:35 201713 // Update Count : 312 // Last Modified On : Tue May 19 07:21:25 2015 13 // Update Count : 1 14 14 // 15 15 16 #include <cstdio> // for fileno, stderr17 #include <unistd.h> // for isatty18 #include <iostream> // for basic_ostream, operator<<, ostream19 #include <list> // for list, _List_iterator20 #include <string> // for string, operator<<, operator+, to_string16 #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" // for to_string, CodeLocation (ptr only)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 } 24 29 25 30 SemanticError::SemanticError() { … … 44 49 void SemanticError::print( std::ostream &os ) { 45 50 using std::to_string; 46 for( auto err : errors) {47 os << to_string( err.location ) << err.description << std::endl;51 for(auto err : errors) { 52 os << to_string( err.location ) << err.description << '\n'; 48 53 } 49 54 } -
src/Common/SemanticError.h
rfbcb354 r326338ae 9 9 // Author : Richard C. Bilson 10 10 // Created On : Mon May 18 07:44:20 2015 11 // Last Modified By : Peter A. Buhr12 // Last Modified On : T ue Aug 29 22:03:36201713 // Update Count : 1711 // Last Modified By : Andrew Beach 12 // Last Modified On : Thr Aug 17 14:01:00 2017 13 // Update Count : 7 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 22 #include <unistd.h> // for isatty 18 #include <exception> // for exception 19 #include <iostream> // for ostream 20 #include <list> // for list 21 #include <string> // for string 23 22 24 #include "CodeLocation.h" // for CodeLocation, toString23 #include "CodeLocation.h" // for CodeLocation, toString 25 24 26 25 struct error { … … 29 28 30 29 error() = default; 31 error( const std::string & str ) : description( str ) {}30 error( const std::string& str ) : description( str ) {} 32 31 33 void maybeSet( const CodeLocation & location ) {32 void maybeSet( const CodeLocation& location ) { 34 33 if( this->location.linenumber < 0 ) { 35 34 this->location = location; … … 42 41 SemanticError(); 43 42 SemanticError( std::string error ); 44 template< typename T > SemanticError( const std::string & error, const T *obj );43 template< typename T > SemanticError( const std::string &error, const T *obj ); 45 44 ~SemanticError() throw() {} 46 45 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 ); 46 void append( SemanticError &other ); 53 47 void append( const std::string & ); 54 48 bool isEmpty() const; 55 void print( std::ostream & os );49 void print( std::ostream &os ); 56 50 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 print59 // method)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 print method) 60 54 private: 61 55 std::list< error > errors; … … 63 57 64 58 template< typename T > 65 SemanticError::SemanticError( const std::string & error, const T *obj ) {59 SemanticError::SemanticError( const std::string &error, const T *obj ) { 66 60 append( toString( error, obj ) ); 67 61 } -
src/Concurrency/Keywords.cc
rfbcb354 r326338ae 19 19 #include <string> // for string, operator== 20 20 21 #include "Common/PassVisitor.h" // for PassVisitor22 21 #include "Common/SemanticError.h" // for SemanticError 23 22 #include "Common/utility.h" // for deleteAll, map_range … … 47 46 48 47 //============================================================================================= 49 // Pass declarations48 // Visitors declaration 50 49 //============================================================================================= 51 50 … … 59 58 // static inline NewField_t * getter_name( MyType * this ) { return &this->newField; } 60 59 // 61 class ConcurrentSueKeyword : public WithDeclsToAdd { 60 class ConcurrentSueKeyword : public Visitor { 61 protected: 62 template< typename Visitor > 63 friend void SymTab::acceptAndAdd( std::list< Declaration * > &translationUnit, Visitor &visitor ); 62 64 public: 63 65 … … 67 69 virtual ~ConcurrentSueKeyword() {} 68 70 69 void postvisit( StructDecl * decl ); 71 using Visitor::visit; 72 virtual void visit( StructDecl * decl ) override final; 70 73 71 74 void handle( StructDecl * ); … … 83 86 bool needs_main; 84 87 88 std::list< Declaration * > declsToAdd, declsToAddAfter; 85 89 StructDecl* type_decl = nullptr; 86 90 }; … … 113 117 114 118 static void implement( std::list< Declaration * > & translationUnit ) { 115 PassVisitor< ThreadKeyword >impl;116 acceptAll( translationUnit, impl );119 ThreadKeyword impl; 120 SymTab::acceptAndAdd( translationUnit, impl ); 117 121 } 118 122 }; … … 144 148 145 149 static void implement( std::list< Declaration * > & translationUnit ) { 146 PassVisitor< CoroutineKeyword >impl;147 acceptAll( translationUnit, impl );150 CoroutineKeyword impl; 151 SymTab::acceptAndAdd( translationUnit, impl ); 148 152 } 149 153 }; … … 175 179 176 180 static void implement( std::list< Declaration * > & translationUnit ) { 177 PassVisitor< MonitorKeyword >impl;178 acceptAll( translationUnit, impl );181 MonitorKeyword impl; 182 SymTab::acceptAndAdd( translationUnit, impl ); 179 183 } 180 184 }; … … 188 192 // } } 189 193 // 190 class MutexKeyword final {194 class MutexKeyword final : public Visitor { 191 195 public: 192 196 193 void postvisit( FunctionDecl * decl ); 194 void postvisit( StructDecl * decl ); 197 using Visitor::visit; 198 virtual void visit( FunctionDecl * decl ) override final; 199 virtual void visit( StructDecl * decl ) override final; 195 200 196 201 std::list<DeclarationWithType*> findMutexArgs( FunctionDecl* ); … … 199 204 200 205 static void implement( std::list< Declaration * > & translationUnit ) { 201 PassVisitor< MutexKeyword >impl;206 MutexKeyword impl; 202 207 acceptAll( translationUnit, impl ); 203 208 } … … 225 230 // } } 226 231 // 227 class ThreadStarter final {232 class ThreadStarter final : public Visitor { 228 233 public: 229 234 230 void postvisit( FunctionDecl * decl ); 235 using Visitor::visit; 236 virtual void visit( FunctionDecl * decl ) override final; 231 237 232 238 void addStartStatement( FunctionDecl * decl, DeclarationWithType * param ); 233 239 234 240 static void implement( std::list< Declaration * > & translationUnit ) { 235 PassVisitor< ThreadStarter >impl;241 ThreadStarter impl; 236 242 acceptAll( translationUnit, impl ); 237 243 } … … 258 264 // Generic keyword implementation 259 265 //============================================================================================= 260 void ConcurrentSueKeyword::postvisit(StructDecl * decl) { 266 void ConcurrentSueKeyword::visit(StructDecl * decl) { 267 Visitor::visit(decl); 261 268 if( decl->get_name() == type_name && decl->has_body() ) { 262 269 assert( !type_decl ); … … 346 353 } 347 354 348 declsToAdd Before.push_back( forward );349 if( needs_main ) declsToAdd Before.push_back( main_decl );350 declsToAdd Before.push_back( get_decl );355 declsToAdd.push_back( forward ); 356 if( needs_main ) declsToAdd.push_back( main_decl ); 357 declsToAdd.push_back( get_decl ); 351 358 352 359 return get_decl; … … 398 405 //============================================================================================= 399 406 400 void MutexKeyword::postvisit(FunctionDecl* decl) { 407 void MutexKeyword::visit(FunctionDecl* decl) { 408 Visitor::visit(decl); 401 409 402 410 std::list<DeclarationWithType*> mutexArgs = findMutexArgs( decl ); … … 416 424 } 417 425 418 void MutexKeyword::postvisit(StructDecl* decl) { 426 void MutexKeyword::visit(StructDecl* decl) { 427 Visitor::visit(decl); 419 428 420 429 if( decl->get_name() == "monitor_desc" ) { … … 523 532 // General entry routine 524 533 //============================================================================================= 525 void ThreadStarter::postvisit(FunctionDecl * decl) { 534 void ThreadStarter::visit(FunctionDecl * decl) { 535 Visitor::visit(decl); 536 526 537 if( ! CodeGen::isConstructor(decl->get_name()) ) return; 527 538 -
src/InitTweak/InitTweak.cc
rfbcb354 r326338ae 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 not get called function from dereference with no arguments" );327 assertf( ! expr->get_args().empty(), "Can't 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 not get function name from dereference with no arguments" );435 assertf( ! expr->get_args().empty(), "Can't get function name from dereference with no arguments" ); 436 436 return funcName( expr->get_args().front() ); 437 437 } -
src/Parser/StatementNode.cc
rfbcb354 r326338ae 212 212 WaitForStmt::Target target; 213 213 target.function = maybeBuild<Expression>( targetExpr ); 214 215 ExpressionNode * next = dynamic_cast<ExpressionNode *>( targetExpr->get_next() ); 216 targetExpr->set_next( nullptr ); 217 buildMoveList< Expression >( next, target.arguments ); 218 214 buildMoveList< Expression >( targetExpr, target.arguments ); 219 215 delete targetExpr; 220 216 … … 230 226 WaitForStmt * build_waitfor( ExpressionNode * targetExpr, StatementNode * stmt, ExpressionNode * when, WaitForStmt * node ) { 231 227 WaitForStmt::Target target; 228 232 229 target.function = maybeBuild<Expression>( targetExpr ); 233 234 ExpressionNode * next = dynamic_cast<ExpressionNode *>( targetExpr->get_next() ); 235 targetExpr->set_next( nullptr ); 236 buildMoveList< Expression >( next, target.arguments ); 237 230 buildMoveList< Expression >( targetExpr, target.arguments ); 238 231 delete targetExpr; 239 232 -
src/Parser/lex.ll
rfbcb354 r326338ae 10 10 * Created On : Sat Sep 22 08:58:10 2001 11 11 * Last Modified By : Peter A. Buhr 12 * Last Modified On : Wed Aug 30 17:35:21201713 * Update Count : 5 8412 * Last Modified On : Tue Aug 22 22:43:39 2017 13 * Update Count : 558 14 14 */ 15 15 … … 19 19 20 20 %{ 21 // Th elexer assumes the program has been preprocessed by cpp. Hence, all user level preprocessor directive have been21 // This 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 parsed28 #define YY_USER_ACTION column += yyleng; // trigger before each matching rule's action29 30 27 #include <string> 31 28 #include <cstdio> // FILENAME_MAX 32 using namespace std;33 29 34 30 #include "ParseNode.h" … … 36 32 37 33 char *yyfilename; 38 st ring *strtext;// accumulate parts of character and string constant value34 std::string *strtext; // accumulate parts of character and string constant value 39 35 40 36 #define RETURN_LOCN(x) yylval.tok.loc.file = yyfilename; yylval.tok.loc.line = yylineno; return( x ) 41 #define RETURN_VAL(x) yylval.tok.str = new st ring( yytext ); RETURN_LOCN( x )37 #define RETURN_VAL(x) yylval.tok.str = new std::string( yytext ); RETURN_LOCN( x ) 42 38 #define RETURN_CHAR(x) yylval.tok.str = nullptr; RETURN_LOCN( x ) 43 39 #define RETURN_STR(x) yylval.tok.str = strtext; RETURN_LOCN( x ) 44 40 45 41 #define WHITE_RETURN(x) // do nothing 46 #define NEWLINE_RETURN() column = 0;WHITE_RETURN( '\n' )42 #define NEWLINE_RETURN() WHITE_RETURN( '\n' ) 47 43 #define ASCIIOP_RETURN() RETURN_CHAR( (int)yytext[0] ) // single character operator 48 44 #define NAMEDOP_RETURN(x) RETURN_CHAR( x ) // multichar operator, with a name … … 158 154 memcpy( &filename, begin_string + 1, length ); // copy file name from yytext 159 155 filename[ length ] = '\0'; // terminate string with sentinel 160 // cout << "file " << filename << " line " << lineno <<endl;156 //std::cout << "file " << filename << " line " << lineno << std::endl; 161 157 yylineno = lineno; 162 158 yyfilename = filename; … … 306 302 307 303 /* character constant, allows empty value */ 308 ({cwide_prefix}[_]?)?['] { BEGIN QUOTE; rm_underscore(); strtext = new st ring( yytext, yyleng ); }304 ({cwide_prefix}[_]?)?['] { BEGIN QUOTE; rm_underscore(); strtext = new std::string( yytext, yyleng ); } 309 305 <QUOTE>[^'\\\n]* { strtext->append( yytext, yyleng ); } 310 306 <QUOTE>['\n] { BEGIN 0; strtext->append( yytext, yyleng ); RETURN_STR(CHARACTERconstant); } … … 312 308 313 309 /* string constant */ 314 ({swide_prefix}[_]?)?["] { BEGIN STRING; rm_underscore(); strtext = new st ring( yytext, yyleng ); }310 ({swide_prefix}[_]?)?["] { BEGIN STRING; rm_underscore(); strtext = new std::string( yytext, yyleng ); } 315 311 <STRING>[^"\\\n]* { strtext->append( yytext, yyleng ); } 316 312 <STRING>["\n] { BEGIN 0; strtext->append( yytext, yyleng ); RETURN_STR(STRINGliteral); } … … 426 422 } 427 423 428 /* unknown character */429 . { yyerror( "unknown character"); }424 /* unknown characters */ 425 . { printf("unknown character(s):\"%s\" on line %d\n", yytext, yylineno); } 430 426 431 427 %% 432 // ----end of lexer----433 434 void yyerror( const char * errmsg ) {435 cout << (yyfilename ? yyfilename : "*unknown file*") << ':' << yylineno << ':' << column - yyleng + 1436 << ": " << SemanticError::error_str() << errmsg << " at token \"" << (yytext[0] == '\0' ? "EOF" : yytext) << '"' << endl;437 }438 428 439 429 // Local Variables: // -
src/Parser/parser.yy
rfbcb354 r326338ae 10 10 // Created On : Sat Sep 1 20:22:55 2001 11 11 // Last Modified By : Peter A. Buhr 12 // Last Modified On : Wed Aug 30 07:04:19 201713 // Update Count : 27 4012 // Last Modified On : Sat Aug 26 17:50:19 2017 13 // Update Count : 2712 14 14 // 15 15 … … 48 48 #include <cstdio> 49 49 #include <stack> 50 using namespace std;51 52 50 #include "ParseNode.h" 53 51 #include "TypedefTable.h" 54 52 #include "TypeData.h" 55 53 #include "LinkageSpec.h" 56 #include "Common/SemanticError.h" // error_str 54 using namespace std; 57 55 58 56 extern DeclarationNode * parseTree; … … 3135 3133 // ----end of grammar---- 3136 3134 3135 extern char *yytext; 3136 3137 void yyerror( const char * ) { 3138 cout << "Error "; 3139 if ( yyfilename ) { 3140 cout << "in file " << yyfilename << " "; 3141 } // if 3142 cout << "at line " << yylineno << " reading token \"" << (yytext[0] == '\0' ? "EOF" : yytext) << "\"" << endl; 3143 } 3144 3137 3145 // Local Variables: // 3138 3146 // mode: c++ // -
src/ResolvExpr/AlternativeFinder.cc
rfbcb354 r326338ae 9 9 // Author : Richard C. Bilson 10 10 // Created On : Sat May 16 23:52:08 2015 11 // Last Modified By : Peter A. Buhr12 // Last Modified On : Mon Aug 28 13:47:24201713 // Update Count : 3 211 // Last Modified By : Andrew Beach 12 // Last Modified On : Wed Jul 26 11:33:00 2017 13 // Update Count : 31 14 14 // 15 15 … … 195 195 AltList winners; 196 196 findMinCost( alternatives.begin(), alternatives.end(), back_inserter( winners ) ); 197 stream << "Can not choose between " << winners.size() << " alternatives for expression ";197 stream << "Can't choose between " << winners.size() << " alternatives for expression "; 198 198 expr->print( stream ); 199 199 stream << "Alternatives are:"; -
src/SymTab/Validate.cc
rfbcb354 r326338ae 9 9 // Author : Richard C. Bilson 10 10 // Created On : Sun May 17 21:50:04 2015 11 // Last Modified By : Peter A. Buhr12 // Last Modified On : Mon Aug 28 13:47:23201713 // Update Count : 35 911 // Last Modified By : Andrew Beach 12 // Last Modified On : Tus Aug 8 13:27:00 2017 13 // Update Count : 358 14 14 // 15 15 … … 709 709 } else { 710 710 TypeDeclMap::const_iterator base = typedeclNames.find( typeInst->get_name() ); 711 assertf( base != typedeclNames.end(), "Can not find typedecl name %s", typeInst->get_name().c_str() );711 assertf( base != typedeclNames.end(), "Can't find typedecl name %s", typeInst->get_name().c_str() ); 712 712 typeInst->set_baseType( base->second ); 713 713 } // if -
src/libcfa/concurrency/coroutine
rfbcb354 r326338ae 1 // - *- Mode: CFA - *- 1 2 // 2 3 // Cforall Version 1.0.0 Copyright (C) 2016 University of Waterloo … … 10 11 // Created On : Mon Nov 28 12:27:26 2016 11 12 // Last Modified By : Peter A. Buhr 12 // Last Modified On : Wed Aug 30 07:58:29201713 // Update Count : 313 // Last Modified On : Sat Jul 22 09:57:17 2017 14 // Update Count : 2 14 15 // 15 16 -
src/prelude/prelude.cf
rfbcb354 r326338ae 1 // -*- Mode: C -*- 1 2 // 2 3 // Copyright (C) Glen Ditchfield 1994, 1999 … … 7 8 // Created On : Sat Nov 29 07:23:41 2014 8 9 // Last Modified By : Peter A. Buhr 9 // Last Modified On : Wed Aug 30 07:56:07 201710 // Update Count : 9 310 // Last Modified On : Tue Jul 5 18:04:40 2016 11 // Update Count : 92 11 12 // 12 13 -
src/tests/.expect/castError.txt
rfbcb354 r326338ae 1 castError.c:7 :1 error: Cannot choose between 3 alternatives for expression Cast of:1 castError.c:7 error: Can't choose between 3 alternatives for expression Cast of: 2 2 Name: f 3 3 -
src/tests/.expect/completeTypeError.txt
rfbcb354 r326338ae 1 completeTypeError.c:34 :1error: No reasonable alternatives for expression Applying untyped:1 completeTypeError.c:34 error: No reasonable alternatives for expression Applying untyped: 2 2 Name: *? 3 3 ...to: … … 5 5 6 6 7 completeTypeError.c:36 :1error: No reasonable alternatives for expression Applying untyped:7 completeTypeError.c:36 error: No reasonable alternatives for expression Applying untyped: 8 8 Name: baz 9 9 ...to: … … 11 11 12 12 13 completeTypeError.c:37 :1error: No reasonable alternatives for expression Applying untyped:13 completeTypeError.c:37 error: No reasonable alternatives for expression Applying untyped: 14 14 Name: quux 15 15 ...to: … … 17 17 18 18 19 completeTypeError.c:58 :1error: No reasonable alternatives for expression Applying untyped:19 completeTypeError.c:58 error: No reasonable alternatives for expression Applying untyped: 20 20 Name: baz 21 21 ...to: … … 23 23 24 24 25 completeTypeError.c:59 :1error: No reasonable alternatives for expression Applying untyped:25 completeTypeError.c:59 error: No reasonable alternatives for expression Applying untyped: 26 26 Name: quux 27 27 ...to: … … 29 29 30 30 31 completeTypeError.c:60 :1error: No reasonable alternatives for expression Applying untyped:31 completeTypeError.c:60 error: No reasonable alternatives for expression Applying untyped: 32 32 Name: *? 33 33 ...to: … … 35 35 36 36 37 completeTypeError.c:72 :1error: No reasonable alternatives for expression Applying untyped:37 completeTypeError.c:72 error: No reasonable alternatives for expression Applying untyped: 38 38 Name: baz 39 39 ...to: -
src/tests/.expect/declarationErrors.txt
rfbcb354 r326338ae 1 declarationErrors.c:16 :1error: duplicate static in declaration of x1: static const volatile short int1 declarationErrors.c:16 error: duplicate static in declaration of x1: static const volatile short int 2 2 3 declarationErrors.c:17 :1error: conflicting extern & static in declaration of x2: extern const volatile short int3 declarationErrors.c:17 error: conflicting extern & static in declaration of x2: extern const volatile short int 4 4 5 declarationErrors.c:18 :1error: conflicting extern & auto, conflicting extern & static, conflicting extern & static, duplicate extern in declaration of x3: extern const volatile short int5 declarationErrors.c:18 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 :1error: duplicate static in declaration of x4: static const volatile instance of const volatile struct __anonymous07 declarationErrors.c:19 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 :1error: duplicate const, duplicate static, duplicate volatile in declaration of x5: static const volatile instance of const volatile struct __anonymous112 declarationErrors.c:20 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 :1error: duplicate static in declaration of x6: static const volatile instance of type Int17 declarationErrors.c:22 error: duplicate static in declaration of x6: static const volatile instance of type Int 18 18 19 declarationErrors.c:24 :1error: duplicate const in declaration of f01: static inline function19 declarationErrors.c:24 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 :1error: duplicate volatile in declaration of f02: static inline function24 declarationErrors.c:25 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 :1error: duplicate const in declaration of f03: static inline function29 declarationErrors.c:26 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 :1error: duplicate volatile in declaration of f04: static inline function34 declarationErrors.c:27 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 :1error: duplicate const in declaration of f05: static inline function39 declarationErrors.c:28 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 :1error: duplicate volatile in declaration of f06: static inline function44 declarationErrors.c:29 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 :1error: duplicate const in declaration of f07: static inline function49 declarationErrors.c:30 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 :1error: duplicate const, duplicate volatile in declaration of f08: static inline function54 declarationErrors.c:31 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 :1error: duplicate const, duplicate volatile in declaration of f09: static inline function59 declarationErrors.c:33 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 :1error: duplicate const, duplicate _Atomic, duplicate _Atomic, duplicate const, duplicate restrict, duplicate volatile in declaration of f09: static inline function64 declarationErrors.c:34 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
rfbcb354 r326338ae 1 dtor-early-exit.c:142:1 error: jump to label 'L1' crosses initialization of y Branch (Goto) 2 1 dtor-early-exit.c:142 error: jump to label 'L1' crosses initialization of y Branch (Goto) -
src/tests/.expect/dtor-early-exit-ERR2.txt
rfbcb354 r326338ae 1 dtor-early-exit.c:142:1 error: jump to label 'L2' crosses initialization of y Branch (Goto) 2 1 dtor-early-exit.c:142 error: jump to label 'L2' crosses initialization of y Branch (Goto) -
src/tests/.expect/memberCtors-ERR1.txt
rfbcb354 r326338ae 1 memberCtors.c:71 :1error: in void ?{}(B &b), field a2 used before being constructed1 memberCtors.c:71 error: in void ?{}(B &b), field a2 used before being constructed -
src/tests/.expect/scopeErrors.txt
rfbcb354 r326338ae 1 scopeErrors.c:2 :1error: duplicate object definition for thisIsAnError: signed int2 scopeErrors.c:20 :1error: duplicate function definition for butThisIsAnError: function1 scopeErrors.c:2 error: duplicate object definition for thisIsAnError: signed int 2 scopeErrors.c:20 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
rfbcb354 r326338ae 1 // -*- Mode: C -*- 1 2 // 2 3 // Cforall Version 1.0.0 Copyright (C) 2016 University of Waterloo … … 10 11 // Created On : Tue Aug 8 16:28:43 2017 11 12 // Last Modified By : Peter A. Buhr 12 // Last Modified On : Wed Aug 30 07:56:28201713 // Update Count : 1 713 // Last Modified On : Wed Aug 9 17:09:40 2017 14 // Update Count : 16 14 15 // 15 16 -
src/tests/ifcond.c
rfbcb354 r326338ae 1 // -*- Mode: C -*- 1 2 // 2 // Cforall Version 1.0.0 Copyright (C) 201 7University of Waterloo3 // Cforall Version 1.0.0 Copyright (C) 2016 University of Waterloo 3 4 // 4 5 // The contents of this file are covered under the licence agreement in the … … 10 11 // Created On : Sat Aug 26 10:13:11 2017 11 12 // Last Modified By : Peter A. Buhr 12 // Last Modified On : Wed Aug 30 07:55:24201713 // Update Count : 1 313 // Last Modified On : Sat Aug 26 11:13:00 2017 14 // Update Count : 11 14 15 // 15 16 -
tools/prettyprinter/lex.ll
rfbcb354 r326338ae 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) { -
tools/prettyprinter/parser.hh
rfbcb354 r326338ae 59 59 RIGHT = 269, 60 60 NONASSOC = 270, 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 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 84 83 }; 85 84 #endif … … 98 97 #define RIGHT 269 99 98 #define NONASSOC 270 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 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 123 121 124 122 /* Value type. */ … … 131 129 Token *tokenp; 132 130 133 #line 13 4"parser.hh" /* yacc.c:1909 */131 #line 132 "parser.hh" /* yacc.c:1909 */ 134 132 }; 135 133 -
tools/prettyprinter/parser.yy
rfbcb354 r326338ae 10 10 // Created On : Sat Dec 15 13:44:21 2001 11 11 // Last Modified By : Peter A. Buhr 12 // Last Modified On : T ue Aug 29 16:34:10201713 // Update Count : 104 712 // Last Modified On : Thu Jun 29 09:26:47 2017 13 // Update Count : 1045 14 14 // 15 15 … … 67 67 %token<tokenp> RIGHT // %right 68 68 %token<tokenp> NONASSOC // %nonassoc 69 %token<tokenp> PRECEDENCE // %precedence70 69 %token<tokenp> TYPE // %type 71 70 %token<tokenp> PURE_PARSER // %pure_parser … … 260 259 | RIGHT 261 260 | NONASSOC 262 | PRECEDENCE263 261 ; 264 262
Note:
See TracChangeset
for help on using the changeset viewer.