Changeset 8e90fd6 for doc/uC++toCFA
- Timestamp:
- Jan 18, 2025, 3:46:06 PM (14 months ago)
- Branches:
- master, stuck-waitfor-destruct
- Children:
- d0b6712
- Parents:
- fa59c40 (diff), df56e25 (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. - File:
-
- 1 edited
-
doc/uC++toCFA/uC++toCFA.tex (modified) (13 diffs)
Legend:
- Unmodified
- Added
- Removed
-
doc/uC++toCFA/uC++toCFA.tex
rfa59c40 r8e90fd6 11 11 %% Created On : Wed Apr 6 14:53:29 2016 12 12 %% Last Modified By : Peter A. Buhr 13 %% Last Modified On : Fri Nov 15 09:55:34 202414 %% Update Count : 62 4913 %% Last Modified On : Fri Jan 17 07:39:09 2025 14 %% Update Count : 6284 15 15 %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% 16 16 … … 197 197 198 198 199 \section{Stream I/O}200 201 \CFA output streams automatically separate values and insert a newline at the end of the print.202 \begin{cquote}203 \begin{tabular}{@{}l|l@{}}204 \begin{uC++}205 #include <@iostream@>206 using namespace std;207 int i; double d; char c;208 cin >> i >> d >> c;209 cout << i << ' ' << d << ' ' << c | endl;210 \end{uC++}211 &212 \begin{cfa}213 #include <@fstream.hfa@>214 215 int i; double d; char c;216 sin | i | d | c;217 sout | i | d | c218 \end{cfa}219 \end{tabular}220 \end{cquote}221 222 223 199 \section{Looping} 224 200 … … 240 216 for ( i; 0 @-@~ 10 ) { ... } 241 217 \end{cfa} 242 \\ 243 \hline 218 \end{tabular} 219 \end{cquote} 220 221 \begin{cquote} 222 \begin{tabular}{@{}l|l@{}} 244 223 \begin{uC++} 245 224 int i = 0 … … 253 232 @else@ { ... } // i == 10 254 233 \end{cfa} 255 \\ 256 \hline 234 \end{tabular} 235 \end{cquote} 236 237 \begin{cquote} 238 \begin{tabular}{@{}l|l@{}} 257 239 \begin{uC++} 258 240 @L1:@ for ( ;; ) { … … 271 253 } 272 254 } 255 \end{cfa} 256 \end{tabular} 257 \end{cquote} 258 259 260 \section{Stream I/O} 261 262 \CFA output streams automatically separate values and insert a newline at the end of the print. 263 \begin{cquote} 264 \begin{tabular}{@{}l|l@{}} 265 \begin{uC++} 266 #include <@iostream@> 267 using namespace std; 268 int i; double d; char c; 269 cin >> i >> d >> c; 270 cout << i << ' ' << d << ' ' << c << endl; 271 \end{uC++} 272 & 273 \begin{cfa} 274 #include <@fstream.hfa@> 275 276 int i; double d; char c; 277 sin | i | d | c; 278 sout | i | d | c 279 \end{cfa} 280 \end{tabular} 281 \end{cquote} 282 To disable/enable automatic newline at the end of printing, use @nlOff@/@nlOn@ and @nl@. 283 \begin{cquote} 284 \begin{tabular}{@{}l|l@{}} 285 \begin{uC++} 286 287 for ( int i = 0; i < 5; i += 1 ) cout << i << ' '; 288 cout << @endl@; 289 290 0 1 2 3 4 291 \end{uC++} 292 & 293 \begin{cfa} 294 sout | @nlOff@; // disable auto nl 295 for ( i; 5 ) sout | i; 296 sout | @nl@; 297 sout | @nlOn@; // reenable auto nl 298 0 1 2 3 4 299 \end{cfa} 300 \end{tabular} 301 \end{cquote} 302 Floating-point numbers without a fraction print with a decimal point, which can be disabled with @nodp@. 303 \begin{cquote} 304 \begin{tabular}{@{}l|l@{}} 305 \begin{uC++} 306 cout << 3.0 << ' ' << showpoint << setprecision(0) << 3.0 << endl; 307 3 3. 308 \end{uC++} 309 & 310 \begin{cfa} 311 sout | @nodp( 3.0 )@ | 3.0; 312 3 3. 273 313 \end{cfa} 274 314 \end{tabular} … … 291 331 if ( ... ) @_Throw@ E( /* initialization */ ); 292 332 ... 293 } @_CatchResume@( E & ) { ... // reference 294 } catch( E & ) { ... 295 } catch( ... ) { ... // catch any 296 } _Finally { ... 297 } 333 } @_CatchResume@( E & /* reference */ ) { ... } 334 catch( E & ) { ... } 335 catch( ... /* catch any */ ) { ... } 336 _Finally { ... } 298 337 \end{uC++} 299 338 & … … 308 347 if ( ... ) @throw@ @ExceptionInst@( E, /* intialization */ ); 309 348 ... 310 } @catchResume@( E * ) { ... // pointer 311 } catch( E * ) { ... 312 } catch( exception_t * ) { ... // catch any 313 } finally { ... 314 } 349 } @catchResume@( E @*@ /* pointer */ ) { ... } 350 catch( E * ) { ... } 351 catch( exception_t @*@ /* catch any */ ) { ... } 352 finally { ... } 315 353 \end{cfa} 316 354 \end{tabular} … … 330 368 ... suspend(); ... 331 369 } 332 } @_CatchResume@( E & ) { // reference 333 ... 334 } catch( E & ) { 335 ... 336 } 370 } @_CatchResume@( E & /* reference */ ) { ... } 371 catch( E & ) { ... } 337 372 } 338 373 \end{uC++} … … 346 381 ... suspendPoll ... 347 382 disable_ehm(); 348 } @catchResume@( E * ) { // pointer 349 ... 350 } catch( E & ) { 351 ... 352 } 383 } @catchResume@( E * ) { ... } 384 catch( E & ) { ... } 353 385 } 354 386 \end{cfa} … … 556 588 557 589 558 \section{Thread}559 560 \begin{cquote}561 \begin{tabular}{@{}l|ll@{}}562 \begin{uC++}563 564 @_Task@ T {565 // private task fields566 void main() {567 ... @_Resume E( ... ) _At partner@;568 ... @uThisTask();@ ...569 }570 public:571 };572 \end{uC++}573 &574 \begin{cfa}575 #include <$thread$.hfa>576 @thread@ T {577 // private task fields578 579 };580 void main( @T & t@ ) {581 ... @resumeAt( partner, ExceptionInst( E, ... )@ );582 ... @active_thread();@ ...583 }584 \end{cfa}585 \\586 \multicolumn{2}{@{}l@{}}{\lstinline{T t; // start thread in main routine}}587 \end{tabular}588 \end{cquote}589 590 591 590 \section{\lstinline{COBEGIN}/\lstinline{COFOR}} 592 591 … … 602 601 BEGIN osacquire( cout ) << "C" << endl; END 603 602 BEGIN osacquire( cout ) << "D" << endl; END 604 BEGIN osacquire( cout ) << "E" << endl; END605 603 @COEND@ 606 604 @COFOR@( i, 1, 10, … … 619 617 corun { mutex( sout ) sout | "C"; } 620 618 corun { mutex( sout ) sout | "D"; } 621 corun { mutex( sout ) sout | "E"; }622 619 } 623 620 @cofor@( i; 10 ) { … … 703 700 } 704 701 \end{cfa} 702 \end{tabular} 703 \end{cquote} 704 705 706 \section{Thread} 707 708 \begin{cquote} 709 \begin{tabular}{@{}l|ll@{}} 710 \begin{uC++} 711 712 @_Task@ T { 713 // private task fields 714 void main() { 715 ... @_Resume E( ... ) _At partner@; 716 ... @uThisTask();@ ... 717 } 718 public: 719 }; 720 \end{uC++} 721 & 722 \begin{cfa} 723 #include <$thread$.hfa> 724 @thread@ T { 725 // private task fields 726 727 }; 728 void main( @T & t@ ) { 729 ... @resumeAt( partner, ExceptionInst( E, ... )@ ); 730 ... @active_thread();@ ... 731 } 732 \end{cfa} 733 \\ 734 \multicolumn{2}{@{}l@{}}{\lstinline{T t; // start thread in main routine}} 705 735 \end{tabular} 706 736 \end{cquote}
Note:
See TracChangeset
for help on using the changeset viewer.