Changes in / [fcc57ba:e523b07]


Ignore:
Files:
3 edited

Legend:

Unmodified
Added
Removed
  • doc/bibliography/pl.bib

    rfcc57ba re523b07  
    701701% B
    702702
    703 @article{Michael13,
    704     contributer = {pabuhr@plg},
    705     author      = {Maged M. Michael},
    706     title       = {The Balancing Act of Choosing Nonblocking Features},
    707     journal     = cacm,
    708     volume      = 56,
    709     number      = 9,
    710     month       = sep,
    711     year        = 2013,
    712     pages       = {46--53},
    713     publisher   = {ACM},
    714     address     = {New York, NY, USA},
    715 }
    716 
    717703@incollection{beta:old,
    718704    keywords    = {beta, patterns, virtual types},
     
    922908
    923909@misc{Cforall,
    924     contributer = {pabuhr@plg},
    925910    key         = {Cforall},
    926     author      = {{\textsf{C}{$\mathbf{\forall}$} Features}},
    927     howpublished= {\href{https://plg.uwaterloo.ca/~cforall/features}{https://\-plg.uwaterloo.ca/\-~cforall/\-features}},
     911    title       = {\textsf{C}{$\mathbf{\forall}$} Features},
     912    howpublished= {\url{https://plg.uwaterloo.ca/~cforall/features}},
    928913    optnote     = {Accessed: 2018-01-01},
    929914}
     
    941926
    942927@misc{CFAStackEvaluation,
    943     contributer = {a3moss@plg},
    944928    author      = {Aaron Moss},
    945929    title       = {\textsf{C}$\mathbf{\forall}$ Stack Evaluation Programs},
     
    950934
    951935@article{Moss18,
    952     keywords    = {type systems, tuples, Cforall},
     936    keywords    = {concurrency, C++},
    953937    contributer = {pabuhr@plg},
    954938    author      = {Aaron Moss and Robert Schluntz and Peter A. Buhr},
     
    957941    month       = aug,
    958942    journal     = spe,
    959     note        = {\href{http://dx.doi.org/10.1002/spe.2624}{http://\-dx.doi.org/\-10.1002/\-spe.2624}},
     943    note        = {http://dx.doi.org/10.1002/spe.2624},
    960944}
    961945
     
    14331417}
    14341418
    1435 @misc{NThreadCode13,
    1436     keywords    = {N-thread software-solution mutual exclusion},
    1437     contributer = {pabuhr@plg},
    1438     key         = {concurrent locking},
    1439     author      = {Peter A. Buhr and David Dice and Wim H. Hesselink},
    1440     title       = {concurrent-locking},
    1441     howpublished= {\href{https://github.com/pabuhr/concurrent-locking}{https://\-github.com/\-pabuhr/\-concurrent-locking}},
    1442     optnote     = {[Accessed April 2017]},
    1443 }
    1444 
    14451419@incollection{Reppy93,
    14461420    keywords    = {ML, concurrency, continuation passing},
     
    15161490    month       = dec,
    15171491    year        = 2017,
    1518     note        = {\href{https://plg.uwaterloo.ca/~usystem/pub/uSystem/uC++.pdf}{https://\-plg.uwaterloo.ca/\-~usystem/\-pub/\-uSystem/uC++.pdf}},
     1492    note        = {\href{http://plg.uwaterloo.ca/~usystem/pub/uSystem/u++-7.0.0.sh}{http://\-plg.\-uwaterloo.\-ca/\-$\sim$usystem/\-pub/\-uSystem/\-u++-7.0.0.sh}},
    15191493}
    15201494
     
    15831557}
    15841558
    1585 @mastersthesis{Sun15,
    1586     author      = {Sun, Xianda},
    1587     title       = {Concurrent High-performance Persistent Hash Table In {J}ava},
    1588     school      = {School of Computer Science, University of Waterloo},
    1589     year        = 2015,
    1590     optaddress  = {Waterloo, Ontario, Canada, N2L 3G1},
    1591     note        = {\href{https://uwspace.uwaterloo.ca/handle/10012/10013}{https://\-uwspace.uwaterloo.ca/\-handle/\-10012/\-10013}},
    1592 }
    1593 
    15941559@book{Andrews91:book,
    15951560    keywords    = {concurrency},
     
    16161581
    16171582@mastersthesis{Delisle18,
    1618     keywords    = {concurrency, Cforall},
    1619     contributer = {pabuhr@plg},
    16201583    author      = {Thierry Delisle},
    16211584    title       = {Concurrency in \textsf{C}$\mathbf{\forall}$},
    16221585    school      = {School of Computer Science, University of Waterloo},
    16231586    year        = 2018,
    1624     optaddress  = {Waterloo, Ontario, Canada, N2L 3G1},
     1587    address     = {Waterloo, Ontario, Canada, N2L 3G1},
    16251588    note        = {\href{https://uwspace.uwaterloo.ca/handle/10012/12888}{https://\-uwspace.uwaterloo.ca/\-handle/\-10012/\-12888}},
    1626 }
    1627 
    1628 @article{Delisle18b,
    1629     keywords    = {concurrency, Cforall},
    1630     contributer = {pabuhr@plg},
    1631     author      = {Thierry Delisle and Peter A. Buhr},
    1632     title       = {Concurrency in \textsf{C}$\mathbf{\forall}$},
    1633     year        = 2018,
    1634     journal     = spe,
    1635     pages       = {1-32},
    1636     note        = {submitted},
    16371589}
    16381590
     
    29132865    keywords    = {concurrency, mutual exclusion, performance experiment, software solutions},
    29142866    title       = {Fast mutual exclusion by the {T}riangle algorithm},
    2915     author      = {Wim H. Hesselink and Peter A. Buhr and David Dice},
     2867    author      = {Wim H. Hesselink and Peter Buhr and David Dice},
    29162868    journal     = ccpe,
    29172869    volume      = 30,
     
    29202872    month       = feb,
    29212873    publisher   = {John Wiley \& Sons},
    2922     note        = {\href{https://doi.org/10.1002/cpe.4183}{https://\-doi.org/\-10.1002/\-cpe.4183}}
     2874    note        = {\url{https://doi.org/10.1002/cpe.4183}}
    29232875}
    29242876
     
    33323284    edition     = {{S}imon {M}arlow},
    33333285    year        = 2010,
    3334     note        = {\href{https://haskell.org/definition/haskell2010.pdf}{https://\-haskell.org/\-definition/\-haskell2010.pdf}},
     3286    note        = {\href{https://haskell.org/definition/haskell2010.pdf}{https://haskell.org/\-definition/\-haskell2010.pdf}},
    33353287}
    33363288
     
    34063358}
    34073359
    3408 @article{Hesselink17b,
     3360@article{Hesselink17,
    34093361    keywords    = {concurrency, mutual exclusion, performance experiment, software solutions},
    34103362    title       = {High-Contention Mutual Exclusion by Elevator Algorithms},
    3411     author      = {Peter A. Buhr and David Dice and Wim H. Hesselink},
     3363    author      = {Peter Buhr and David Dice and Wim H. Hesselink},
    34123364    journal     = ccpe,
    34133365    volume      = 30,
     
    34163368    month       = sep,
    34173369    publisher   = {John Wiley \& Sons},
    3418     note        = {\href{https://doi-org.proxy.lib.uwaterloo.ca/10.1002/cpe.4475}{https://\-doi-org.proxy.lib.uwaterloo.ca/\-10.1002/\-cpe.4475}},
     3370    note        = {\url{https://doi-org.proxy.lib.uwaterloo.ca/10.1002/cpe.4475}}
    34193371}
    34203372
     
    38943846
    38953847% K
    3896 
    3897 @inproceedings{Buhr96b,
    3898     author      = {Peter A. Buhr and Martin Karsten and Jun Shih},
    3899     title       = {{\small\textsf{KDB}}: A Multi-threaded Debugger for Multi-threaded Applications},
    3900     booktitle   = {Proceedings of SPDT'96: SIGMETRICS Symposium on Parallel and Distributed Tools},
    3901     publisher   = {ACM Press},
    3902     address     = {Philadelphia, Pennsylvania, U.S.A.},
    3903     month       = may,
    3904     year        = 1996,
    3905     pages       = {80-87},
    3906 }
    39073848
    39083849@article{Duggan96,
     
    45934534% N
    45944535
    4595 @techreport{Drepper03,
    4596     keywords    = {NPTL, threading, 1:1 model},
    4597     contributer = {pabuhr@plg},
    4598     author      = {Ulrich Drepper and Ingo Molnar},
    4599     title       = {The Native POSIX Thread Library for Linux},
    4600     institution = {Red Hat},
    4601     year        = 2003,
    4602     note        = {\href{http://www.cs.utexas.edu/~witchel/372/lectures/POSIX_Linux_Threading.pdf}{http://www.cs.utexas.edu/\-$\sim$witchel/\-372/\-lectures/\-POSIX\_Linux\_Threading.pdf}},
    4603 }
    4604 
    46054536@article{Haddon77,
    46064537    keywords    = {monitors, nested monitor calls},
     
    47264657    volume      = 9,
    47274658    pages       = {157-164},
    4728 }
    4729 
    4730 @misc{nginx,
    4731     key         = {nginx},
    4732     author      = {{NGINX}},
    4733     howpublished= {\href{https://www.nginx.com}{https://\-www.nginx.com}},
    47344659}
    47354660
     
    48444769@misc{obj-c-book,
    48454770    keywords    = {objective-c},
    4846     contributor = {pabuhr@plg},
     4771    contributor = {a3moss@uwaterloo.ca},
    48474772    key         = {Objective-C},
    4848     author      = {Objective-C},
     4773    title       = {Objective-C},
    48494774    publisher   = {Apple Inc.},
    4850     year        = 2014,
    4851     howpublished= {\href{https://developer.apple.com/library/archive/documentation/Cocoa/Conceptual/ProgrammingWithObjectiveC}{https://\-developer.apple.com/\-library/archive/\-documentation/\-Cocoa/\-Conceptual/\-ProgrammingWithObjectiveC}},
     4775    year        = 2015,
     4776    howpublished= {\href{https://developer.apple.com/library/content/documentation/General/Conceptual/DevPedia-CocoaCore/ObjectiveC.html}{https://developer.apple.com/\-library/\-content/\-documentation/\-General/\-Conceptual/\-DevPedia-\-CocoaCore/\-ObjectiveC.html}},
    48524777    optnote     = {Accessed: 2018-03}
    48534778}
     
    48594784    title       = {{X}code 7 Release Notes},
    48604785    year        = 2015,
    4861     howpublished= {\href{https://developer.apple.com/library/content/documentation/Xcode/Conceptual/RN-Xcode-Archive/Chapters/xc7_release_notes.html}{https://\-developer.apple.com/\-library/\-content/\-documentation/\-Xcode/\-Conceptual/\-RN-Xcode-Archive/\-Chapters/\-xc7\_release\_notes.html}},
     4786    howpublished= {\href{https://developer.apple.com/library/content/documentation/Xcode/Conceptual/RN-Xcode-Archive/Chapters/xc7_release_notes.html}{https://developer.apple.com/\-library/\-content/\-documentation/\-Xcode/\-Conceptual/\-RN-Xcode-Archive/\-Chapters/\-xc7\_release\_notes.html}},
    48624787    optnote     = {Accessed: 2017-04}
    48634788}
     
    53595284}
    53605285
    5361 @misc{perf,
    5362     contributer = {pabuhr@plg},
    5363     key         = {perf},
    5364     author      = {perf},
    5365     howpublished= {\href{https://perf.wiki.kernel.org/index.php/Tutorial}{https://\-perf.wiki.kernel.org/\-index.php/\-Tutorial}},
    5366 }
    5367 
    5368 @misc{Verch12,
    5369     contributer = {pabuhr@plg},
    5370     author      = {Shaun Verch},
    5371     title       = {Performance Analysis of 64-Bit Capriccio},
    5372     month       = may,
    5373     year        = 2012,
    5374     howpublished= {\href{http://cs.brown.edu/research/pubs/theses/masters/2012/verch.pdf}{http://cs.brown.edu/\-research/\-pubs/\-theses/\-masters/\-2012/\-verch.pdf}},
    5375     optnote     = {Accessed: 2013-10-4}
    5376 }
    5377 
    53785286@article{Anderson90,
    53795287    keywords    = {spin locks, back off, performance},
     
    55965504    note        = {Proceedings of the OOPSLA'89 Conference, Oct. 1--6, 1989, New Orleans, Lousiana},
    55975505    abstract    = {},
    5598 }
    5599 
    5600 @inproceedings{Buhr98,
    5601     keywords    = {profiling, monitoring, visualization},
    5602     contributer = {pabuhr@plg},
    5603     author      = {Peter A. Buhr and Robert Denda},
    5604     title       = {{$\mu$Profiler} : Profiling User-Level Threads in a Shared-Memory Programming Environment},
    5605     booktitle   = {Proceedings of the Second International Symposium on Computing in Object-Oriented Parallel Environments (ISCOPE'98)},
    5606     series      = {Lecture Notes in Computer Science},
    5607     publisher   = {Springer-Verlag},
    5608     volume      = 1505,
    5609     opteditor   = {Dennis Caromel and Rodney R. Oldehoeft and Marydell Tholburn},
    5610     address     = {Santa Fe, New Mexico, U.S.A.},
    5611     month       = dec,
    5612     year        = 1998,
    5613     pages       = {159-166},
    56145506}
    56155507
     
    60735965}
    60745966
    6075 @article{Ronsse03,
    6076     keywords    = {profiling, replay},
    6077     contributer = {pabuhr@plg},
    6078     author      = {Michiel Ronsse and De Bosschere, Koen and Mark Christiaens and Jacques Chassin de Kergommeaux and Dieter Kranzlm\"{u}ller},
    6079     title       = {Record/Replay for Nondeterministic Program Executions},
    6080     journal     = cacm,
    6081     month       = sep,
    6082     year        = 2003,
    6083     volume      = 46,
    6084     number      = 9,
    6085     pages       = {62-67},
    6086 }
    6087 
    60885967@article{Robinson48,
    60895968    keywords    = {recursion, Ackermann function},
     
    61246003}
    61256004
    6126 @mastersthesis{Schuster99,
    6127     author      = {Oliver Schuster},
    6128     title       = {Replay of Concurrent Shared-Memory Programs},
    6129     school      = {Universit\"at Mannheim},
    6130     address     = {Mannheim, Deutschland},
    6131     year        = 1999,
    6132     month       = apr,
    6133     type        = {Diplomarbeit},
    6134     note        = {\href{ftp://plg.uwaterloo.ca/pub/theses/SchusterThesis.ps.gz}{ftp://\-plg.uwaterloo.ca/\-pub/\-theses/\-SchusterThesis.ps.gz}},
    6135 }
    6136 
    61376005@article{Euclid,
    61386006    keywords    = {Euclid},
     
    61666034    school      = {School of Computer Science, University of Waterloo},
    61676035    year        = 2017,
    6168     optaddress  = {Waterloo, Ontario, Canada, N2L 3G1},
     6036    address     = {Waterloo, Ontario, Canada, N2L 3G1},
    61696037    note        = {\href{https://uwspace.uwaterloo.ca/handle/10012/11830}{https://\-uwspace.uwaterloo.ca/\-handle/\-10012/\-11830}},
    61706038}
     
    69936861    contributer = {pabuhr@plg},
    69946862    key         = {TIOBE Index},
    6995     author      = {{TIOBE Index}},
     6863    title       = {{TIOBE} Index},
    69966864    howpublished= {\href{http://www.tiobe.com/tiobe_index}{http://\-www.tiobe.com/\-tiobe\_index}},
    69976865    optnote     = {Accessed: 2018-09},
     
    71337001    year        = 1980
    71347002}
    7135 
    7136 @misc{TraceCompass,
    7137     contributer = {pabuhr@plg},
    7138     key         = {Trace Compass},
    7139     author      = {{T}race {C}ompass},
    7140     howpublished= {\href{https://projects.eclipse.org/proposals/trace-compass}{https://\-projects.eclipse.org/\-proposals/\-trace-compass}},
    7141 }
    71427003 
    71437004@article{Leroy00,
     
    72757136    title       = {Usability Challenges in Exception Handling},
    72767137    booktitle   = {5th International Workshop on Exception Handling (WEH)},
    7277     optorganization= {16th International Symposium on the Foundations of Software Engineering (FSE 16)},
     7138    organization= {16th International Symposium on the Foundations of Software Engineering (FSE 16)},
    72787139    address     = {Zurich, Switzerland},
    72797140    month       = jun,
     
    74197280}
    74207281
    7421 @inproceedings{vonBehren03,
    7422     keywords    = {threads, events, web server},
    7423     contributer = {pabuhr@plg},
    7424     author      = {Rob von Behren and Jeremy Condit and Eric Brewer},
    7425     title       = {Why Events Are a Bad Idea (for high-concurrency servers)},
    7426     booktitle   = {HotOS IX: The 9th Workshop on Hot Topics in Operating Systems},
    7427     publisher   = {USENIX Association},
    7428     address     = {Lihue, Hawaii, U.S.A.},
    7429     month       = may,
    7430     year        = 2003,
    7431     pages       = {19-24},
    7432 }
    7433 
    74347282@techreport{Moss90,
    74357283    keywords    = {Swizzling, database},
     
    74967344    year        = 1986,
    74977345    editor      = {Norman Meyrowitz},
    7498     publisher   = sigplan,
     7346    publisher   = sigplan # " 21(11)",
    74997347    organization= {Association for Computing Machinery},
    75007348    address     = {Portland, Oregon},
    7501     month       = sep,
     7349    month       = sep # { 29}
    75027350}
    75037351
     
    75087356    year        = 1987,
    75097357    editor      = {Norman Meyrowitz},
    7510     publisher   = sigplan,
     7358    publisher   = sigplan # " 22(12)",
    75117359    organization= {Association for Computing Machinery},
    75127360    address     = {Orlando, Florida},
    7513     month       = oct,
     7361    month       = oct # { 4--8}
    75147362}
    75157363
     
    75207368    year        = 1988,
    75217369    editor      = {Norman Meyrowitz},
    7522     publisher   = sigplan,
     7370    publisher   = sigplan # " 23(11)",
    75237371    organization= {Association for Computing Machinery},
    75247372    address     = {San Diego, California},
    7525     month       = sep,
     7373    month       = sep # { 25--30}
    75267374}
    75277375
     
    75327380    year        = 1989,
    75337381    editor      = {Norman Meyrowitz},
    7534     publisher   = sigplan,
     7382    publisher   = sigplan # " 24(10)",
    75357383    organization= {Association for Computing Machinery},
    75367384    address     = {New Orleans, Louisiana},
    7537     month       = oct,
     7385    month       = oct # { 1--6}
    75387386}
    75397387
     
    75447392    year        = 1990,
    75457393    editor      = {Norman Meyrowitz},
    7546     publisher   = sigplan,
     7394    publisher   = sigplan # " 25(10)",
    75477395    organization= {Association for Computing Machinery},
    75487396    address     = {Ottawa, Canada},
    7549     month       = oct,
     7397    month       = oct # { 21--25}
    75507398}
    75517399
     
    75567404    year        = 1991,
    75577405    editor      = {Andreas Paepcke},
    7558     publisher   = sigplan,
     7406    publisher   = sigplan # " 26(11)",
    75597407    organization= {Association for Computing Machinery},
    75607408    address     = {Phoenix, Arizona},
    7561     month       = oct,
    7562 }
     7409    month       = oct # { 6--11}
     7410}
  • src/CodeTools/ResolvProtoDump.cc

    rfcc57ba re523b07  
    196196                        }
    197197                       
    198                         // default to just name, with first character in lowercase
    199                         ss << pre
    200                            << (char)std::tolower( static_cast<unsigned char>(name[0]) )
    201                            << (name.c_str() + 1);
     198                        // default to just name
     199                        ss << pre << name;
    202200                }
    203201
    204202                /// ensures type inst names are uppercase
    205203                static void ti_name( const std::string& name, std::stringstream& ss ) {
    206                         unsigned i = 0;
    207                         while ( i < name.size() && name[i] == '_' ) { ++i; }
    208                         if ( i == name.size() ) {
    209                                 ss << "Anon";
    210                                 return;
    211                         }
    212                         ss << (char)std::toupper( static_cast<unsigned char>(name[i]) )
    213                            << (name.c_str() + i + 1);
     204                        ss << (char)std::toupper( static_cast<unsigned char>(name[0]) )
     205                           << (name.c_str() + 1);
    214206                }
    215207
     
    227219                        void previsit( BasicType* bt ) { ss << (int)bt->get_kind(); }
    228220
    229                         // pointers (except function pointers) represented as generic type
    230                         void previsit( PointerType* pt ) {
    231                                 if ( ! dynamic_cast<FunctionType*>(pt->base) ) { ss << "#$ptr<"; ++depth; }
    232                         }
    233                         void postvisit( PointerType* pt ) {
    234                                 if ( ! dynamic_cast<FunctionType*>(pt->base) ) { --depth; ss << '>'; }
    235                         }
    236 
    237                         // arrays represented as generic pointers
     221                        // pointers represented as generic type
     222                        // TODO except pointer to function
     223                        void previsit( PointerType* ) { ss << "#$ptr<"; ++depth; }
     224                        void postvisit( PointerType* ) { --depth; ss << '>'; }
     225
     226                        // arrays represented as generic type
    238227                        void previsit( ArrayType* at ) {
    239                                 ss << "#$ptr<";
     228                                ss << "#$arr<";
    240229                                ++depth;
    241230                                at->base->accept( *visitor );
     
    255244                        }
    256245
    257                         // print function types using prototype syntax
     246                        // encode function type as a 2-param generic type
     247                        // TODO handle forall functions
    258248                        void previsit( FunctionType* ft ) {
    259                                 ss << '[';
     249                                ss << "#$fn<";
    260250                                ++depth;
    261                                 build( *visitor, from_decls( ft->returnVals ), ss, preceded );
    262                                 ss << " : ";
    263                                 build( *visitor, from_decls( ft->parameters ), ss, terminated );
     251                                buildAsTuple( *visitor, from_decls( ft->returnVals ), ss );
     252                                ss << ' ';
     253                                buildAsTuple( *visitor, from_decls( ft->parameters ), ss );
    264254                                --depth;
    265                                 ss << ']';
     255                                ss << '>';
    266256                                visit_children = false;
    267257                        }
     
    351341                        }
    352342
    353                         // print variable declaration in prototype syntax
     343                        // print variable declaration as zero-arg function
    354344                        PassVisitor<TypePrinter> printTy{ closed, ss };
    355345                        norefs->accept( printTy );
    356                         ss << " &";
     346                        ss << ' ';
    357347                        rp_name( name, ss );
    358348                }
     
    391381                                : closed(closed), ss(ss) {}
    392382
    393                         /// Names handled as name expressions
     383                        /// Names handled as nullary function calls
    394384                        void previsit( NameExpr* expr ) {
    395                                 ss << '&';
    396385                                rp_name( expr->name, ss );
     386                                ss << "()";
    397387                        }
    398388
     
    426416                        }
    427417
    428                         /// Already-resolved calls skipped
    429                         void previsit( ApplicationExpr* ) {
    430                                 visit_children = false;
    431                         }
    432 
    433418                        /// Address-of handled as operator
    434419                        void previsit( AddressExpr* expr ) {
     
    600585
    601586                void previsit( FunctionDecl *decl ) {
    602                         // skip decls with ftype parameters
    603                         for ( TypeDecl* tyvar : decl->type->forall ) {
    604                                 if ( tyvar->get_kind() == TypeDecl::Ftype ) {
    605                                         visit_children = false;
    606                                         return;
    607                                 }
    608                         }
    609 
    610587                        // add function as declaration
    611588                        std::stringstream ss;
  • tools/cfa.nanorc

    rfcc57ba re523b07  
    22## WIP
    33
    4 syntax "cfa" "\.(c|h)fa"
     4syntax "cfa" "\.cfa"
    55
    66# Macros
     
    99# Types
    1010color green "\<(forall|trait|(o|d|f|t)type|mutex|_Bool|volatile|virtual)\>"
    11 color green "\<(float|double|bool|char|int|short|long|enum|void|auto)\>"
    12 color green "\<(static|const|extern|(un)?signed|inline)\>" "\<(sizeof)\>"
     11color green "\<(float|double|bool|char|int|short|long|sizeof|enum|void|auto)\>"
     12color green "\<(static|const|struct|union|typedef|extern|(un)?signed|inline)\>"
    1313color green "\<((s?size)|one|zero|((u_?)?int(8|16|32|64|ptr)))_t\>"
    1414
     
    1919# Control Flow Structures
    2020color brightyellow "\<(if|else|while|do|for|switch|choose|case|default)\>"
    21 color brightyellow "\<(disable|enable|waitfor|when|timeout)\>"
    2221color brightyellow "\<(try|catch(Resume)?|finally)\>"
    2322
    2423# Control Flow Statements
    2524color magenta "\<(goto|return|break|continue|fallthr(u|ough)|throw(Resume)?)\>"
    26 
    27 # Escaped Keywords, now Identifiers.
    28 color white "`\w+`"
    2925
    3026# Operator Names
Note: See TracChangeset for help on using the changeset viewer.