Changeset fba51ab


Ignore:
Timestamp:
Feb 15, 2019, 9:59:48 AM (3 years ago)
Author:
Peter A. Buhr <pabuhr@…>
Branches:
aaron-thesis, arm-eh, cleanup-dtors, jacob/cs343-translation, jenkins-sandbox, master, new-ast, new-ast-unique-expr, persistent-indexer
Children:
ada4575
Parents:
70a3e16 (diff), 85d44c6 (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.
Message:

Merge branch 'master' of plg.uwaterloo.ca:software/cfa/cfa-cc

Files:
3 edited

Legend:

Unmodified
Added
Removed
  • doc/LaTeXmacros/lstlang.sty

    r70a3e16 rfba51ab  
    88%% Created On       : Sat May 13 16:34:42 2017
    99%% Last Modified By : Peter A. Buhr
    10 %% Last Modified On : Fri Apr  6 23:44:50 2018
    11 %% Update Count     : 20
     10%% Last Modified On : Tue Jan  8 14:40:33 2019
     11%% Update Count     : 21
    1212%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
    1313
     
    114114                _Alignas, _Alignof, __alignof, __alignof__, asm, __asm, __asm__, __attribute, __attribute__,
    115115                auto, _Bool, catch, catchResume, choose, _Complex, __complex, __complex__, __const, __const__,
    116                 coroutine, disable, dtype, enable, __extension__, exception, fallthrough, fallthru, finally,
     116                coroutine, disable, dtype, enable, exception, __extension__, fallthrough, fallthru, finally,
    117117                __float80, float80, __float128, float128, forall, ftype, _Generic, _Imaginary, __imag, __imag__,
    118118                inline, __inline, __inline__, __int128, int128, __label__, monitor, mutex, _Noreturn, one_t, or,
  • doc/bibliography/pl.bib

    r70a3e16 rfba51ab  
    330330    contributer = {pabuhr@plg},
    331331    author      = {Nissim Francez},
    332     title       = {Another Advantage of Key word Notation for Parameter Communication with Subprograms},
     332    title       = {Another Advantage of Keyword Notation for Parameter Communication with Subprograms},
    333333    journal     = cacm,
    334334    volume      = 20,
     
    831831    year        = 2015,
    832832    howpublished= {\href{http://www.boost.org/doc/libs/1_61_0/libs/coroutine/doc/html/index.html}
    833                   {{http://www.boost.org/\-doc/\-libs/1\_61\_0/\-libs/\-coroutine/\-doc/\-html/\-index.html}}},
     833                  {http://www.boost.org/\-doc/\-libs/1\_61\_0/\-libs/\-coroutine/\-doc/\-html/\-index.html}},
     834    optnote     = {Accessed: 2016-09},
     835}
     836
     837@misc{BoostThreads,
     838    keywords    = {Boost Thread Library},
     839    contributer = {pabuhr@plg},
     840    author      = {Anthony Williams and Vicente J. Botet Escriba},
     841    title       = {Boost Thread Library},
     842    year        = 2015,
     843    howpublished= {\href{https://www.boost.org/doc/libs/1_61_0/doc/html/thread.html}
     844                  {https://\-www.boost.org/\-doc/\-libs/\-1\_61\_0/\-doc/\-html/\-thread.html}},
    834845    optnote     = {Accessed: 2016-09},
    835846}
     
    29903001}
    29913002
     3003@manual{WindowsFibers,
     3004    keywords    = {threads, fibers},
     3005    contributer = {pabuhr@plg},
     3006    author      = {Windows},
     3007    title       = {Fibers},
     3008    organization= {Microsoft, Windows Development Center},
     3009    address     = {\href{https://docs.microsoft.com/en-us/windows/desktop/ProcThread/fibers}{https://\-docs.microsoft.com/\-en-us/\-windows/\-desktop/\-ProcThread/\-fibers}},
     3010    year        = 2018,
     3011}
     3012
    29923013@inproceedings{F-bound,
    29933014    keywords    = {},
     
    30373058}
    30383059
     3060@manual{Folly,
     3061    keywords    = {Folly},
     3062    contributer = {pabuhr@plg},
     3063    author      = {Folly},
     3064    title       = {Facebook Open-source Library},
     3065    organization= {Facebook},
     3066    address     = {\href{https://github.com/facebook/folly}{https://\-github.com/\-facebook/\-folly}},
     3067    year        = 2018,
     3068}
     3069
    30393070@manual{Fortran95,
    30403071    keywords    = {Fortran 95},
     
    30573088    address     = {\href{https://www.iso.org/standard/50459.html}{https://\-www.iso.org/\-standard/\-50459.html}},
    30583089    year        = 2010,
     3090}
     3091
     3092@manual{Fortran18,
     3093    keywords    = {ISO/IEC Fortran 10},
     3094    contributer = {pabuhr@plg},
     3095    author      = {Fortran18},
     3096    title       = {Programming Languages -- {Fortran} Part 1:Base Language ISO/IEC 1539-1:2018},
     3097    edition     = {4rd},
     3098    publisher   = {International Standard Organization},
     3099    address     = {\href{https://www.iso.org/standard/72320.html}{https://\-www.iso.org/\-standard/\-72320.html}},
     3100    year        = 2018,
    30593101}
    30603102
     
    36213663    year        = {1964},
    36223664    publisher   = {ACM}
     3665}
     3666
     3667@phdthesis{Barghi18,
     3668    keywords    = {concurrency, user threads, actors},
     3669    contributer = {pabuhr@plg},
     3670    author      = {Saman Barghi},
     3671    title       = {Improving the Performance of User-level Runtime Systems for Concurrent Applications},
     3672    school      = {School of Computer Science, University of Waterloo},
     3673    year        = 2018,
     3674    month       = sep,
     3675    optaddress  = {Waterloo, Ontario, Canada, N2L 3G1},
     3676    note        = {\href{https://uwspace.uwaterloo.ca/handle/10012/13935}{https://\-uwspace.uwaterloo.ca/\-handle/\-10012/\-13935}},
    36233677}
    36243678
     
    39484002    year        = 2015,
    39494003    edition     = {{J}ava {SE} 8},
     4004}
     4005
     4006@manual{Java11,
     4007    keywords    = {Java SE 11},
     4008    contributer = {pabuhr@plg},
     4009    author      = {James Gosling and Bill Joy and Guy Steele and Gilad Bracha and Alex Buckley and Daniel Smith},
     4010    title       = {{Java} Language Specification},
     4011    publisher   = {Oracle},
     4012    month       = sep,
     4013    year        = 2018,
     4014    edition     = {{J}ava {SE} 11},
     4015}
     4016
     4017@manual{JDK1.1,
     4018    keywords    = {JDK 1.1},
     4019    contributer = {pabuhr@plg},
     4020    author      = {{Multithreading Models}},
     4021    title       = {JDK 1.1 for Solaris Developer's Guide},
     4022    publisher   = {Oracle},
     4023    address     = {\href{https://docs.oracle.com/cd/E19455-01/806-3461/6jck06gqk/index.html#ch2mt-41}{https://\-docs.oracle.com/\-cd/\-E19455-01/\-806-3461/\-6jck06gqk/\-index.html\#ch2mt-41}},
     4024    year        = 2010,
    39504025}
    39514026
     
    41294204}
    41304205
     4206@manual{libmill,
     4207    keywords    = {libmill},
     4208    contributer = {pabuhr@plg},
     4209    author      = {libmill},
     4210    title       = {{G}o-style concurrency in {C}, Version 1.18},
     4211    organization= {libmill},
     4212    address     = {\href{http://libmill.org/documentation.html}{http://\-libmill.org/\-documentation.html}},
     4213    month       = jan,
     4214    year        = 2017,
     4215}
     4216
    41314217@book{Weissman67,
    41324218    keywords    = {lisp},
     
    41624248    pages       = {161-169},
    41634249    note        = {Proceedings of the {SIGPLAN}~'89 Conference on Programming Language Design and Implementation}
     4250}
     4251
     4252@manual{Lua,
     4253    keywords    = {Lua},
     4254    contributer = {pabuhr@plg},
     4255    author      = {Lua},
     4256    title       = {Lua 5.3 Reference Manual},
     4257    address     = {\href{https://www.lua.org/manual/5.3}{https://\-www.lua.org/\-manual/\-5.3}},
     4258    year        = 2018,
    41644259}
    41654260
     
    44914586}
    44924587%    editor     = {Allen Kent and James G. Williams},
     4588
     4589@incollection{MPC,
     4590    keywords    = {user-level threading},
     4591    contributer = {pabuhr@plg},
     4592    author      = {Marc P\'erache and Herv\'e Jourdren and Raymond Namyst},
     4593    title       = {MPC: A Unified Parallel Runtime for Clusters of {NUMA} Machines},
     4594    booktitle   = {Euro-Par 2008},
     4595    pages       = {329-342},
     4596    publisher   = {Springer},
     4597    address     = {Berlin, Heidelberg},
     4598    year        = 2008,
     4599    volume      = 5168,
     4600    series      = {Lecture Notes in Computer Science},
     4601}
    44934602
    44944603@manual{MPI,
     
    57645873    address     = {\href{https://www.iso.org/standard/64029.html}{https://\-www.iso.org/\-standard/\-64029.html}},
    57655874    year        = 2014,
     5875}
     5876
     5877@manual{C++17,
     5878    keywords    = {ISO/IEC C++ 17},
     5879    contributer = {pabuhr@plg},
     5880    key         = {C++17},
     5881    title       = {{C}{\kern-.1em\hbox{\large\texttt{+\kern-.25em+}}} Programming Language ISO/IEC 14882:2017},
     5882    edition     = {5th},
     5883    publisher   = {International Standard Organization},
     5884    address     = {\href{https://www.iso.org/standard/68564.html}{https://\-www.iso.org/\-standard/\-68564.html}},
     5885    year        = 2017,
    57665886}
    57675887
     
    60296149    keywords    = {Python},
    60306150    contributer = {pabuhr@plg},
    6031     title       = {Python Reference Manual, Release 2.5},
    6032     author      = {Guido van Rossum},
     6151    author      = {Python},
     6152    title       = {Python Language Reference, Release 3.7.2},
    60336153    organization= {Python Software Foundation},
    6034     month       = sep,
    6035     year        = 2006,
    6036     note        = {Fred L. Drake, Jr., editor},
     6154    address     = {\href{https://docs.python.org/3/reference/index.html}{https://\-docs.python.org/\-3/\-reference/\-index.html}},
     6155    year        = 2018,
    60376156}
    60386157
    60396158% Q
     6159
     6160@inproceedings{Qthreads,
     6161    keywords    = {user-level threading},
     6162    author      = {Kyle B. Wheeler and Richard C. Murphy and Douglas Thain},
     6163    title       = {Qthreads: An API for Programming with Millions of Lightweight Threads},
     6164    booktitle   = {International Symposium on Parallel and Distributed Processing},
     6165    organization= {IEEE},
     6166    address     = {Miami, FL, USA},
     6167    month       = apr,
     6168    year        = 2008,
     6169}
    60406170
    60416171@article{Grossman06,
     
    60726202    publisher   = {ACM},
    60736203    address     = {New York, NY, USA},
     6204}
     6205
     6206@manual{Quasar,
     6207    keywords    = {Quasar},
     6208    contributer = {pabuhr@plg},
     6209    author      = {Quasar},
     6210    title       = {Quasar Documentation, Release 0.8.0},
     6211    organization= {Parallel Universe},
     6212    address     = {\href{http://docs.paralleluniverse.co/quasar}{http://\-docs.paralleluniverse.co/\-quasar}},
     6213    year        = 2018,
    60746214}
    60756215
     
    63236463    year        = 2015,
    63246464    note        = {\href{https://doc.rust-lang.org/reference.html}{https://\-doc.rust-lang\-.org/\-reference.html}},
     6465}
     6466
     6467@manual{Ruby,
     6468    keywords    = {Ruby},
     6469    contributer = {pabuhr@plg},
     6470    author      = {Ruby},
     6471    title       = {Ruby Documentation, Release 2.6.0},
     6472    organization= {Python Software Foundation},
     6473    address     = {\href{https://www.ruby-lang.org/en/documentation}{https://\-www.ruby-lang.org/\-en/\-documentation}},
     6474    year        = 2018,
    63256475}
    63266476
  • src/Parser/parser.yy

    r70a3e16 rfba51ab  
    1010// Created On       : Sat Sep  1 20:22:55 2001
    1111// Last Modified By : Peter A. Buhr
    12 // Last Modified On : Wed Feb 13 17:56:23 2019
    13 // Update Count     : 4064
     12// Last Modified On : Thu Feb 14 22:23:13 2019
     13// Update Count     : 4217
    1414//
    1515
     
    9999        // distribute declaration_specifier across all declared variables, e.g., static, const, __attribute__.
    100100        DeclarationNode * cur = declList, * cl = (new DeclarationNode)->addType( specifier );
    101         //cur->addType( specifier );
    102         for ( cur = dynamic_cast< DeclarationNode * >( cur->get_next() ); cur != nullptr; cur = dynamic_cast< DeclarationNode * >( cur->get_next() ) ) {
     101        for ( cur = dynamic_cast<DeclarationNode *>( cur->get_next() ); cur != nullptr; cur = dynamic_cast<DeclarationNode *>( cur->get_next() ) ) {
    103102                cl->cloneBaseType( cur );
    104103        } // for
    105104        declList->addType( cl );
    106 //      delete cl;
    107105        return declList;
    108106} // distAttr
     
    201199        if ( NameExpr * identifier = dynamic_cast<NameExpr *>(index->get_expr()) ) {
    202200                return forCtrl( type, new string( identifier->name ), start, compop, comp, inc );
     201        } else if ( CommaExpr * commaExpr = dynamic_cast<CommaExpr *>(index->get_expr()) ) {
     202                if ( NameExpr * identifier = dynamic_cast<NameExpr *>(commaExpr->arg1 ) ) {
     203                        return forCtrl( type, new string( identifier->name ), start, compop, comp, inc );
     204                } else {
     205                        SemanticError( yylloc, "Expression disallowed. Only loop-index name allowed" ); return nullptr;
     206                } // if
    203207        } else {
    204208                SemanticError( yylloc, "Expression disallowed. Only loop-index name allowed" ); return nullptr;
     
    325329%type<en> argument_expression_list              argument_expression                     default_initialize_opt
    326330%type<ifctl> if_control_expression
    327 %type<fctl> for_control_expression
     331%type<fctl> for_control_expression              for_control_expression_list
    328332%type<compop> inclexcl
    329333%type<en> subrange
     
    985989                // labels cannot be identifiers 0 or 1 or ATTR_IDENTIFIER
    986990        identifier_or_type_name ':' attribute_list_opt statement
    987                 {
    988                         $$ = $4->add_label( $1, $3 );
    989                 }
     991                { $$ = $4->add_label( $1, $3 ); }
    990992        ;
    991993
     
    10031005        statement_decl
    10041006        | statement_decl_list statement_decl
    1005                 { if ( $1 != 0 ) { $1->set_last( $2 ); $$ = $1; } }
     1007                { assert( $1 ); $1->set_last( $2 ); $$ = $1; }
    10061008        ;
    10071009
     
    10101012                { $$ = new StatementNode( $1 ); }
    10111013        | EXTENSION declaration                                                         // GCC
    1012                 {
    1013                         distExt( $2 );
    1014                         $$ = new StatementNode( $2 );
    1015                 }
     1014                { distExt( $2 ); $$ = new StatementNode( $2 ); }
    10161015        | function_definition
    10171016                { $$ = new StatementNode( $1 ); }
    10181017        | EXTENSION function_definition                                         // GCC
    1019                 {
    1020                         distExt( $2 );
    1021                         $$ = new StatementNode( $2 );
    1022                 }
     1018                { distExt( $2 ); $$ = new StatementNode( $2 ); }
    10231019        | statement
    10241020        ;
     
    10271023        statement
    10281024        | statement_list_nodecl statement
    1029                 { if ( $1 != 0 ) { $1->set_last( $2 ); $$ = $1; } }
     1025                { assert( $1 ); $1->set_last( $2 ); $$ = $1; }
    10301026        ;
    10311027
     
    11391135        | DO statement WHILE '(' ')' ';'                                        // CFA => do while( 1 )
    11401136                { $$ = new StatementNode( build_do_while( new ExpressionNode( build_constantInteger( *new string( "1" ) ) ), $2 ) ); }
    1141         | FOR '(' push for_control_expression ')' statement pop
     1137        | FOR '(' push for_control_expression_list ')' statement pop
    11421138                { $$ = new StatementNode( build_for( $4, $6 ) ); }
    11431139        | FOR '(' ')' statement                                                         // CFA => for ( ;; )
     
    11451141        ;
    11461142
     1143for_control_expression_list:
     1144        for_control_expression
     1145        | for_control_expression_list ':' for_control_expression
     1146                { $$ = $3; }
     1147        ;
     1148
    11471149for_control_expression:
    1148         comma_expression                                                                        // CFA
     1150        ';' comma_expression_opt ';' comma_expression_opt
     1151                { $$ = new ForCtrl( (ExpressionNode * )nullptr, $2, $4 ); }
     1152        | comma_expression ';' comma_expression_opt ';' comma_expression_opt
     1153                { $$ = new ForCtrl( $1, $3, $5 ); }
     1154        | declaration comma_expression_opt ';' comma_expression_opt // C99, declaration has ';'
     1155                { $$ = new ForCtrl( $1, $2, $4 ); }
     1156        | comma_expression                                                                      // CFA
    11491157                { $$ = forCtrl( $1, new string( DeclarationNode::anonymous.newName() ), new ExpressionNode( build_constantInteger( *new string( "0" ) ) ),
    11501158                                                OperKinds::LThan, $1->clone(), new ExpressionNode( build_constantInteger( *new string( "1" ) ) ) ); }
    1151         | constant_expression inclexcl constant_expression      // CFA
     1159        | comma_expression inclexcl comma_expression            // CFA
    11521160                { $$ = forCtrl( $1, new string( DeclarationNode::anonymous.newName() ), $1->clone(), $2, $3, new ExpressionNode( build_constantInteger( *new string( "1" ) ) ) ); }
    1153         | constant_expression inclexcl constant_expression '~' constant_expression // CFA
     1161        | comma_expression inclexcl comma_expression '~' comma_expression // CFA
    11541162                { $$ = forCtrl( $1, new string( DeclarationNode::anonymous.newName() ), $1->clone(), $2, $3, $5 ); }
    11551163        | comma_expression ';' comma_expression                         // CFA
    11561164                { $$ = forCtrl( $3, $1, new ExpressionNode( build_constantInteger( *new string( "0" ) ) ),
    11571165                                                OperKinds::LThan, $3->clone(), new ExpressionNode( build_constantInteger( *new string( "1" ) ) ) ); }
    1158         | comma_expression ';' constant_expression inclexcl constant_expression // CFA
     1166        | comma_expression ';' comma_expression inclexcl comma_expression // CFA
    11591167                { $$ = forCtrl( $3, $1, $3->clone(), $4, $5, new ExpressionNode( build_constantInteger( *new string( "1" ) ) ) ); }
    1160         | comma_expression ';' constant_expression inclexcl constant_expression '~' constant_expression // CFA
     1168        | comma_expression ';' comma_expression inclexcl comma_expression '~' comma_expression // CFA
    11611169                { $$ = forCtrl( $3, $1, $3->clone(), $4, $5, $7 ); }
    1162         | comma_expression ';' comma_expression_opt ';' comma_expression_opt
    1163                 { $$ = new ForCtrl( $1, $3, $5 ); }
    1164         | ';' comma_expression_opt ';' comma_expression_opt
    1165                 { $$ = new ForCtrl( (ExpressionNode * )nullptr, $2, $4 ); }
    1166         | declaration comma_expression_opt ';' comma_expression_opt // C99, declaration has ';'
    1167                 { $$ = new ForCtrl( $1, $2, $4 ); }
    11681170        ;
    11691171
Note: See TracChangeset for help on using the changeset viewer.