Changeset 9d84a88


Ignore:
Timestamp:
Mar 17, 2023, 2:34:03 PM (20 months ago)
Author:
caparsons <caparson@…>
Branches:
ADT, ast-experimental, master
Children:
ac26347
Parents:
6e6989c (diff), 5717495 (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:
14 added
6 edited

Legend:

Unmodified
Added
Removed
  • doc/theses/mike_brooks_MMath/Makefile

    r6e6989c r9d84a88  
    88PicSRC = ${notdir ${wildcard ${Pictures}/*.png}}
    99DemoSRC = ${notdir ${wildcard ${Programs}/*-demo.cfa}}
    10 PgmSRC = ${notdir ${wildcard ${Programs}/*.cfa}}
     10PgmSRC = ${notdir ${wildcard ${Programs}/*}}
     11RunPgmSRC = ${notdir ${wildcard ${Programs}/*.run.*}}
    1112BibSRC = ${wildcard *.bib}
    1213
     
    1415BibLIB = .:../../bibliography                   # common citation repository
    1516
    16 MAKEFLAGS = --no-print-directory # --silent
     17#MAKEFLAGS = --no-print-directory # --silent
    1718VPATH = ${Build} ${Pictures} ${Programs} # extra search path for file names used in document
    1819
     
    2021BASE = ${basename ${DOCUMENT}}                  # remove suffix
    2122
     23DemoTex = ${DemoSRC:%.cfa=${Build}/%.tex}
     24RunPgmExe = ${addprefix ${Build}/,${basename ${basename ${RunPgmSRC}}}}
     25RunPgmOut = ${RunPgmExe:%=%.out}
     26
    2227# Commands
    2328
    2429LaTeX = TEXINPUTS=${TeXLIB} && export TEXINPUTS && pdflatex -halt-on-error -output-directory=${Build}
    2530BibTeX = BIBINPUTS=${BibLIB} && export BIBINPUTS && bibtex
    26 CFA = cfa
     31CFA = cfa -O0 -g
     32CC  = gcc -O0 -g
     33CXX = g++-11 --std=c++20 -O0 -g
    2734
    2835# Rules and Recipes
    2936
    30 .PHONY : all clean                              # not file names
     37.PHONY : all fragments_ran clean                        # not file names
     38.PRECIOUS : ${Build}/% ${Build}/%-demo      # don't delete intermediates
    3139.ONESHELL :
    3240
    33 all : ${DOCUMENT}
     41all : fragments_ran ${DOCUMENT}
     42
     43fragments_ran : $(RunPgmOut)
    3444
    3545clean :
     
    3848# File Dependencies
    3949
    40 %.pdf : ${TeXSRC} ${DemoSRC:%.cfa=%.tex} ${PicSRC} ${PgmSRC} ${BibSRC} Makefile | ${Build}
     50%.pdf : ${TeXSRC} ${DemoTex} ${PicSRC} ${PgmSRC} ${BibSRC} Makefile | ${Build}
    4151        ${LaTeX} ${BASE}
    4252        ${BibTeX} ${Build}/${BASE}
     
    5262
    5363%-demo.tex: %-demo | ${Build}
    54         ${Build}/$< > ${Build}/$@
     64        $< > $@
    5565
    56 %-demo: %-demo.cfa
    57         ${CFA} $< -o ${Build}/$@
     66${Build}/%-demo: ${Programs}/%-demo.cfa | ${Build}
     67        ${CFA} $< -o $@
    5868
     69${Build}/%: ${Programs}/%.run.cfa | ${Build}
     70        ${CFA} $< -o $@
     71
     72${Build}/%: ${Programs}/%.run.c | ${Build}
     73        ${CC}  $< -o $@
     74
     75${Build}/%: ${Programs}/%.run.cpp | ${Build}
     76        ${CXX} -MMD $< -o $@
     77
     78${Build}/%.out: ${Build}/% | ${Build}
     79        $< > $@
     80
     81-include ${Build}/*.d
  • doc/theses/mike_brooks_MMath/uw-ethesis.bib

    r6e6989c r9d84a88  
    6565  bibsource = {dblp computer science bibliography, https://dblp.org}
    6666}
     67
     68% --------------------------------------------------
     69% Linked-list prior work
     70
     71@misc{CFAStackEvaluation,
     72    contributer = {a3moss@plg},
     73    author      = {Aaron Moss},
     74    title       = {\textsf{C}$\mathbf{\forall}$ Stack Evaluation Programs},
     75    year        = 2018,
     76    howpublished= {\href{https://cforall.uwaterloo.ca/CFAStackEvaluation.zip}{https://cforall.uwaterloo.ca/\-CFAStackEvaluation.zip}},
     77}
     78
     79@misc{lst:linuxq,
     80  title     = {queue(7) — Linux manual page},
     81  howpublished= {\href{https://man7.org/linux/man-pages/man3/queue.3.html}{https://man7.org/linux/man-pages/man3/queue.3.html}},
     82}
     83  % see also https://man7.org/linux/man-pages/man7/queue.7.license.html
     84  %          https://man7.org/tlpi/
     85  %          https://www.kernel.org/doc/man-pages/
     86
     87@misc{lst:stl,
     88  title     = {std::list},
     89  howpublished= {\href{https://en.cppreference.com/w/cpp/container/list}{https://en.cppreference.com/w/cpp/container/list}},
     90}
     91
  • doc/theses/mike_brooks_MMath/uw-ethesis.tex

    r6e6989c r9d84a88  
    9191\usepackage{algorithm}
    9292\usepackage{algpseudocode}
     93
     94\usepackage{pbox}
    9395
    9496% Hyperlinks make it very easy to navigate an electronic document.
     
    130132% installation instructions there.
    131133
     134% Customizing tabularx
     135\newcolumntype{Y}{>{\centering\arraybackslash}X}
     136
    132137% Setting up the page margins...
    133138\setlength{\textheight}{9in}
     
    179184\newcommand{\PAB}[1]{{\color{red}PAB: #1}}
    180185
     186
     187\newcommand{\uCpp}{$\mu${C}{\kern-.1em\hbox{\large\texttt{+\kern-.25em+}}}}
     188
    181189%======================================================================
    182190%   L O G I C A L    D O C U M E N T
     
    201209%----------------------------------------------------------------------
    202210\begin{sloppypar}
    203 
    204211\input{intro}
    205212\input{background}
     213\input{list}
    206214\input{array}
    207215\input{string}
  • libcfa/src/Makefile.am

    r6e6989c r9d84a88  
    4848        math.hfa \
    4949        time_t.hfa \
    50     virtual_dtor.hfa \
     50        virtual_dtor.hfa \
    5151        bits/algorithm.hfa \
    5252        bits/align.hfa \
     
    6969        vec/vec2.hfa \
    7070        vec/vec3.hfa \
    71         vec/vec4.hfa 
     71        vec/vec4.hfa
    7272
    7373inst_headers_src = \
  • libcfa/src/containers/list.hfa

    r6e6989c r9d84a88  
    3232static inline tytagref(void, T) ?`inner ( T & this ) { tytagref( void, T ) ret = {this}; return ret; }
    3333
    34 // use this on every case of plan-9 inheritance, to make embedded a closure of plan-9 inheritance
    35 #define P9_EMBEDDED( derived, immedBase ) \
    36 forall( Tbase &, TdiscardPath & | { tytagref( TdiscardPath, Tbase ) ?`inner( immedBase & ); } ) \
    37     static inline tytagref(immedBase, Tbase) ?`inner( derived & this ) { \
     34
     35//
     36// P9_EMBEDDED: Use on every case of plan-9 inheritance, to make "implements embedded" be a closure of plan-9 inheritance.
     37//
     38// struct foo {
     39//    int a, b, c;
     40//    inline (bar);
     41// };
     42// P9_EMBEDDED( foo, bar )
     43//
     44
     45// usual version, for structs that are top-level declarations
     46#define P9_EMBEDDED(        derived, immedBase ) P9_EMBEDDED_DECL_( derived, immedBase, static ) P9_EMBEDDED_BDY_( immedBase )
     47
     48// special version, for structs that are declared in functions
     49#define P9_EMBEDDED_INFUNC( derived, immedBase ) P9_EMBEDDED_DECL_( derived, immedBase,        ) P9_EMBEDDED_BDY_( immedBase )
     50
     51// forward declarations of both the above; generally not needed
     52// may help you control where the P9_EMBEEDED cruft goes, in case "right after the stuct" isn't where you want it
     53#define P9_EMBEDDED_FWD(        derived, immedBase )      P9_EMBEDDED_DECL_( derived, immedBase, static ) ;
     54#define P9_EMBEDDED_FWD_INFUNC( derived, immedBase ) auto P9_EMBEDDED_DECL_( derived, immedBase,        ) ;
     55
     56// private helpers
     57#define P9_EMBEDDED_DECL_( derived, immedBase, STORAGE ) \
     58    forall( Tbase &, TdiscardPath & | { tytagref( TdiscardPath, Tbase ) ?`inner( immedBase & ); } ) \
     59    STORAGE inline tytagref(immedBase, Tbase) ?`inner( derived & this )
     60   
     61#define P9_EMBEDDED_BDY_( immedBase ) { \
    3862        immedBase & ib = this; \
    3963        Tbase & b = ib`inner; \
  • src/Parser/ExpressionNode.cc

    r6e6989c r9d84a88  
    164164        } else {
    165165                // At least one digit in integer constant, so safe to backup while looking for suffix.
     166                // This declaration and the comma expressions in the conditions mimic
     167                // the declare and check pattern allowed in later compiler versions.
     168                // (Only some early compilers/C++ standards do not support it.)
    166169                string::size_type posn;
    167170                // pointer value
    168                 if ( posn = str.find_last_of( "pP" ); posn != string::npos ) {
     171                if ( posn = str.find_last_of( "pP" ), posn != string::npos ) {
    169172                        ltype = 5; str.erase( posn, 1 );
    170173                // size_t
    171                 } else if ( posn = str.find_last_of( "zZ" ); posn != string::npos ) {
     174                } else if ( posn = str.find_last_of( "zZ" ), posn != string::npos ) {
    172175                        Unsigned = true; type = 2; ltype = 4; str.erase( posn, 1 );
    173176                // signed char
    174                 } else if ( posn = str.rfind( "hh" ); posn != string::npos ) {
     177                } else if ( posn = str.rfind( "hh" ), posn != string::npos ) {
    175178                        type = 1; str.erase( posn, 2 );
    176179                // signed char
    177                 } else if ( posn = str.rfind( "HH" ); posn != string::npos ) {
     180                } else if ( posn = str.rfind( "HH" ), posn != string::npos ) {
    178181                        type = 1; str.erase( posn, 2 );
    179182                // short
    180                 } else if ( posn = str.find_last_of( "hH" ); posn != string::npos ) {
     183                } else if ( posn = str.find_last_of( "hH" ), posn != string::npos ) {
    181184                        type = 0; str.erase( posn, 1 );
    182185                // int (natural number)
    183                 } else if ( posn = str.find_last_of( "nN" ); posn != string::npos ) {
     186                } else if ( posn = str.find_last_of( "nN" ), posn != string::npos ) {
    184187                        type = 2; str.erase( posn, 1 );
    185188                } else if ( str.rfind( "ll" ) != string::npos || str.rfind( "LL" ) != string::npos ) {
Note: See TracChangeset for help on using the changeset viewer.