瀏覽代碼

Merge branch 'master' of github.com:IUCompilerCourse/Essentials-of-Compilation

Jeremy Siek 3 年之前
父節點
當前提交
98d02aa5fa
共有 4 個文件被更改,包括 353 次插入253 次删除
  1. 二進制
      CCBY-logo.pdf
  2. 1 0
      TimesAPriori_MIT.cls
  3. 317 246
      book.tex
  4. 35 7
      defs.tex

二進制
CCBY-logo.pdf


+ 1 - 0
TimesAPriori_MIT.cls

@@ -1823,6 +1823,7 @@ Chapter \arabic{chapter}}%
 \thickmuskip=3mu%
 }%
 
+\RequirePackage{multind} % has to be loaded before hyperref for links in index. -Jeremy
 \RequirePackage[bookmarks=true,bookmarksnumbered=true,bookmarksopenlevel=1,colorlinks=false,breaklinks,linkcolor=black,citecolor=black,urlcolor=black,hidelinks]{hyperref}%
 \ifxetex\relax\else\usepackage{breakurl}\fi%
 %\ifluatex\relax\else\usepackage{breakurl}\fi%

文件差異過大導致無法顯示
+ 317 - 246
book.tex


+ 35 - 7
defs.tex

@@ -71,12 +71,12 @@
 \newcommand{\LangCast}{$\Lang_{\mathsf{Cast}}$} %R9'
 \newcommand{\LangCastM}{\Lang_{\mathsf{Cast}}} %R9'
 \newcommand{\LangProxy}{\ensuremath{\Lang_{\mathsf{Proxy}}}} %R8''
-\newcommand{\LangPVec}{\ensuremath{\Lang_{\mathsf{PVec}}}} %R8''
-\newcommand{\LangPVecFunRef}{\ensuremath{\Lang^{\mathsf{FunRef}}_{\mathsf{PVec}}}} %R8''
-\newcommand{\LangPVecAlloc}{\ensuremath{\Lang^{\mathsf{Alloc}}_{\mathsf{PVec}}}} %R8''
+\newcommand{\LangPVec}{\ensuremath{\Lang_{\mathsf{POr}}}} %R8''
+\newcommand{\LangPVecFunRef}{\ensuremath{\Lang^{\mathsf{FunRef}}_{\mathsf{POr}}}} %R8''
+\newcommand{\LangPVecAlloc}{\ensuremath{\Lang^{\mathsf{Alloc}}_{\mathsf{POr}}}} %R8''
 \newcommand{\LangPoly}{\ensuremath{\Lang_{\mathsf{Poly}}}} %R10
 \newcommand{\LangInst}{\ensuremath{\Lang_{\mathsf{Inst}}}} %R'10
-\newcommand{\LangCLoopPVec}{\ensuremath{\CLang^{\mathsf{PVec}}_{\circlearrowleft}}} %Cp7
+\newcommand{\LangCLoopPVec}{\ensuremath{\CLang^{\mathsf{POr}}_{\circlearrowleft}}} %Cp7
 
 \newcommand{\LangXVar}{$\mathrm{x86}_{\mathsf{Var}}$} % pseudo x86_0
 \newcommand{\LangXASTInt}{\ensuremath{\mathrm{x86}_{\mathsf{Int}}}} % x86_0
@@ -147,9 +147,14 @@
 \newcommand{\CUNIOP}[2]{\LP #1~#2 \RP}
 \newcommand{\BINOP}[3]{\key{(Prim}~#1~\code{(}#2~#3\code{))}}
 \newcommand{\CBINOP}[3]{\LP #1~#2~#3\RP}
+\newcommand{\EQNAME}{\key{eq?}}
 \newcommand{\CEQ}[2]{\LP\key{eq?}~#1~#2\RP}
+\newcommand{\IFNAME}{\key{If}}
 \newcommand{\IF}[3]{\key{(If}\,#1~#2~#3\key{)}}
 \newcommand{\CIF}[3]{\LP\key{if}~#1~#2~#3\RP}
+\newcommand{\ANDNAME}{\key{and}}
+\newcommand{\ORNAME}{\key{or}}
+\newcommand{\NOTNAME}{\key{not}}
 \newcommand{\AND}[2]{\key{(Prim}~\code{'and}~\code{(}#1~#2\code{))}}
 \newcommand{\OR}[2]{\key{(Prim}~\code{'or}~\code{(}#1~#2\code{))}}
 \newcommand{\CAND}[2]{\CBINOP{\key{and}}{#1}{#2}}
@@ -157,11 +162,17 @@
 \newcommand{\INTTY}{{\key{Integer}}}
 \newcommand{\INTTYPE}{{\key{Integer}}}
 \newcommand{\BOOLTY}{{\key{Boolean}}}
+\newcommand{\TUPLETYPENAME}{\key{Vector}}
+\newcommand{\ARRAYTYPENAME}{\key{Vectorof}}
 \newcommand{\VECTY}[1]{\LP\key{Vector}~#1\RP}
 \newcommand{\ARRAYTY}[1]{\LP\key{Vectorof}~#1\RP}
 \newcommand{\CARRAYTY}[1]{\LP\key{Vectorof}~#1\RP}
-\newcommand{\ANYTY}{{\key{Any}}}
-\newcommand{\CANYTY}{{\key{Any}}}
+\newcommand{\ANYTY}{\key{Any}}
+\newcommand{\CANYTY}{\key{Any}}
+\newcommand{\PTUPLETYNAME}{\key{PVector}}
+\newcommand{\PARRAYTYNAME}{\key{PVectorof}}
+\newcommand{\PTUPLETY}[1]{\LP\key{PVector}~#1\RP}
+\newcommand{\CPTUPLETY}[1]{\LP\key{PVector}~#1\RP}
 \newcommand{\CPROGRAM}[2]{\LP\code{CProgram}~#1~#2\RP}
 \newcommand{\CPROGRAMDEFS}[2]{\LP\code{CProgramDefs}~#1~#2\RP}
 \newcommand{\LET}[3]{\key{(Let}~#1~#2~#3\key{)}}
@@ -184,6 +195,12 @@
 %% Use BEGIN instead of LET -Jeremy
 %% \newcommand{\LET}[3]{\key{Let}\LP #1 \key{,} #2 \key{,} #3 \RP}
 %% \newcommand{\CLET}[3]{\key{let}~#1~\key{=}~#2~\key{in}~#3}
+\newcommand{\PTUPLETYNAME}{\key{ProxyOrTupleType}}
+\newcommand{\PARRAYTYNAME}{\key{ProxyOrListType}}
+\newcommand{\PTUPLETY}[1]{\key{ProxyOrTupleType}\LP#1\RP}
+\newcommand{\CPTUPLETY}[1]{\key{ProxyOrTupleType}\LP#1\RP}
+\newcommand{\PARRAYTY}[1]{\key{ProxyOrListType}\LP#1\RP}
+\newcommand{\CPARRAYTY}[1]{\key{ProxyOrListType}\LP#1\RP}
 \newcommand{\QUOTE}[1]{\code{'}#1\code{'}}
 \newcommand{\INT}[1]{{\key{Constant}\LP#1\RP}}
 \newcommand{\READOP}{{\key{input\_int}}}
@@ -205,6 +222,8 @@
 \newcommand{\CUNIOP}[2]{#1~#2}
 \newcommand{\BINOP}[3]{\key{BinOp}\LP #1 \code{,} #2 \code{,} #3 \RP}
 \newcommand{\CBINOP}[3]{#2~#1~#3}
+\newcommand{\EQNAME}{\key{Eq}}
+\newcommand{\NOTEQNAME}{\key{NotEq}}
 \newcommand{\CEQ}[2]{#1~\code{==}~#2}
 \newcommand{\CGET}[2]{#1 \LS #2 \RS}
 \newcommand{\GET}[2]{\key{Subscript}\LP #1 \code{,} #2 \code{,} \code{Load()} \RP}
@@ -218,8 +237,12 @@
 \newcommand{\CCMP}[3]{#2~#1~#3}
 \newcommand{\TRUE}{\key{True}}
 \newcommand{\FALSE}{\key{False}}
+\newcommand{\IFNAME}{\key{IfExp}}
 \newcommand{\IF}[3]{\key{IfExp}\LP #1 \code{,} #2 \code{,} #3 \RP}
 \newcommand{\CIF}[3]{#2~\key{if}~#1~\key{else}~#3}
+\newcommand{\ANDNAME}{\key{and}}
+\newcommand{\ORNAME}{\key{or}}
+\newcommand{\NOTNAME}{\key{not}}
 \newcommand{\AND}[2]{\BOOLOP{\key{And()}}{#1}{#2}}
 \newcommand{\CAND}[2]{#1~\key{and}~#2}
 \newcommand{\OR}[2]{\BOOLOP{\key{Or()}}{#1}{#2}}
@@ -228,6 +251,8 @@
 \newcommand{\BOOLTY}{{\key{bool}}}
 \newcommand{\ANYTY}{{\key{AnyType}}}
 \newcommand{\CANYTY}{{\key{Any}}}
+\newcommand{\TUPLETYPENAME}{\key{TupleType}}
+\newcommand{\ARRAYTYPENAME}{\key{ListType}}
 \newcommand{\VECTY}[1]{{\key{TupleType}\LP\LS #1 \RS\RP}}
 \newcommand{\ARRAYTY}[1]{\key{ListType}\LP#1\RP}
 \newcommand{\CARRAYTY}[1]{\key{list}\LS#1\RS}
@@ -236,7 +261,7 @@
 \newcommand{\CCOLLECT}[1]{\key{collect}\LP#1\RP}
 \newcommand{\ALLOCATE}[2]{\key{Allocate}\LP#1,#2\RP}
 \newcommand{\CALLOCATE}[2]{\key{allocate}\LP#1,#2\RP}
-\newcommand{\ALLOCARRAY}[2]{\key{AllocateArrow}\LP#1,#2\RP}
+\newcommand{\ALLOCARRAY}[2]{\key{AllocateArray}\LP#1\code{, }#2\RP}
 \newcommand{\CALLOCARRAY}[2]{\key{allocate\_arrray}\LP#1,#2\RP}
 \newcommand{\GLOBALVALUE}[1]{\key{GlobalValue}\LP#1\RP}
 \newcommand{\CGLOBALVALUE}[1]{\key{global\_value}\LP#1\RP}
@@ -277,6 +302,7 @@
 \newcommand{\CSUB}[2]{\LP\key{-}~#1~#2\RP}
 \newcommand{\CWHILE}[2]{\LP\key{while}~#1~#2\RP}
 \newcommand{\WHILE}[2]{\LP\key{WhileLoop}~#1~#2\RP}
+\newcommand{\MAKEVEC}[2]{\LP\key{make-vector}~#1~#2\RP}
 \newcommand{\CMAKEVEC}[2]{\LP\key{make-vector}~#1~#2\RP}
 \newcommand{\MAKEVEC}[2]{\LP\key{make-vector}~#1~#2\RP}
 \newcommand{\CSETBANG}[2]{\LP\key{set!}~#1~#2\RP}
@@ -308,6 +334,7 @@
 \newcommand{\TAILCALL}[2]{\key{(TailCall}~#1~#2\code{)}}
 \newcommand{\CASSIGN}[2]{#1~\key{=}~#2\key{;}}
 \newcommand{\ASSIGN}[2]{\key{(Assign}~#1~#2\key{)}}
+\newcommand{\IFSTMTNAME}{\key{IfStmt}}
 \newcommand{\IFSTMT}[3]{\key{(IfStmt}\,#1~#2~#3\key{)}}
 \newcommand{\RETURN}[1]{\key{(Return}~#1\key{)}}
 \newcommand{\CRETURN}[1]{\key{return}~#1\key{;}}
@@ -330,6 +357,7 @@
 \newcommand{\ASSIGN}[2]{\key{Assign}\LP\LS #1\RS\key{, }#2\RP}
 \newcommand{\CANNASSIGN}[3]{#1~\key{:}~#2~\key{=}~#3}
 \newcommand{\ANNASSIGN}[3]{\key{AnnAssign}\LP#1\key{, }#2\key{, }#3\key{, 0}\RP}
+\newcommand{\IFSTMTNAME}{\key{If}}
 \newcommand{\IFSTMT}[3]{\key{If}\LP #1 \code{, } #2 \code{, } #3 \RP}
 \newcommand{\CIFSTMT}[3]{\key{if}~#1\code{:}~#2~\code{else:}~#3}
 \newcommand{\CBEGIN}[2]{\key{begin:}~#1~#2}

部分文件因文件數量過多而無法顯示