Changeset 13
- Timestamp:
- Nov 22, 2007, 7:23:57 PM (18 years ago)
- Author:
- neil.c.c.brown
- Message:
-
Lots of small spelling/grammar/formatting corrections.
- File:
-
- 1 edited
Legend:
- Unmodified
- Added
- Removed
-
docs/trunk/200711-tock-seminars/200711-tock-slides.tex
r12 r13 132 132 133 133 \begin{frame} 134 \frametitle{Why \occampi (削除) ' (削除ここまで)s interesting}134 \frametitle{Why \occampi(追記) i (追記ここまで)s interesting} 135 135 \begin{itemize} 136 136 \item Parallelism! 137 137 \item Indentation-based syntax 138 138 \item Parser needs lots of lookahead 139 \item Compile (削除) r (削除ここまで)-time usage checks139 \item Compile(追記) (追記ここまで)-time usage checks 140 140 \begin{itemize} 141 141 \item Parallel safety 142 142 \item Definedness 143 143 \end{itemize} 144 \item Abb (削除) (削除ここまで)eviations144 \item Abb(追記) r (追記ここまで)eviations 145 145 \end{itemize} 146 146 \end{frame} … … 177 177 \begin{itemize} 178 178 \item 42 -- Matt, Christian and Damian's experimental Scheme 179 \occam (削除) (削除ここまで)compiler179 \occam(追記) ~ (追記ここまで)compiler 180 180 \begin{itemize} 181 181 \item Based on ideas from nanopass course … … 227 227 \frametitle{Representing the AST} 228 228 \begin{itemize} 229 \item Scheme (削除) ' (削除ここまで)s dynamically-typed\ldots229 \item Scheme(追記) i (追記ここまで)s dynamically-typed\ldots 230 230 \item First attempt had just one data type 231 231 \item Easy to write code to pattern-match over … … 368 368 \item In particular, higher-order types are awkward to work with 369 369 \begin{itemize} 370 \item e.g. (削除) |Rep a = One a || Many [Rep a]| (削除ここまで)371 \end{itemize} (削除) (削除ここまで)372 \item (削除) W (削除ここまで)e haven't found a good workaround!370 \item e.g. (追記) \lstinline#Rep a = One a | Many [Rep a]# (追記ここまで) 371 \end{itemize}(追記) (追記ここまで) 372 \item (追記) Problem -- w (追記ここまで)e haven't found a good workaround! 373 373 \item As a result, the AST types aren't quite as neat as they should be\ldots 374 374 \end{itemize} … … 411 411 \item Generates random input data 412 412 \item Checks that properties hold on the output 413 \item Best for tests where (削除) the (削除ここまで)properties of the output can be413 \item Best for tests where (追記) (追記ここまで)properties of the output can be 414 414 simply expressed 415 415 \end{itemize} … … 444 444 \item e.g. is this variable the same as that variable? 445 445 \end{itemize} 446 \item Want to avoid having (削除) to (削除ここまで)duplicate code446 \item Want to avoid having (追記) (追記ここまで)duplicate code 447 447 \end{itemize} 448 448 \end{itemize} … … 589 589 \end{lstlisting} 590 590 \begin{itemize} 591 \item All (削除) (削除ここまで)items with the same name must match591 \item All (追記) |Named| (追記ここまで)items with the same name must match 592 592 \end{itemize} 593 593 \end{frame} … … 668 668 \item Functions are trickier 669 669 \end{itemize} 670 \item Patterns are type-checked at run (削除) time (削除ここまで)670 \item Patterns are type-checked at run(追記) -time (i.e. test-time) (追記ここまで) 671 671 \end{itemize} 672 672 \end{frame} … … 802 802 \item Productions are monadic operations that return the thing they parsed 803 803 \begin{itemize} 804 \item (削除) |reserved :: String -> Parser String| (削除ここまで)804 \item (追記) \lstinline#reserved :: String -> Parser String# (追記ここまで) 805 805 \end{itemize} 806 806 \item Operators combine productions into bigger productions 807 807 \begin{itemize} 808 \item (削除) |<||> :: Parser a -> Parser a -> Parser a| (削除ここまで)-- choice808 \item (追記) \lstinline#<|> :: Parser a -> Parser a -> Parser a# (追記ここまで) -- choice 809 809 \end{itemize} 810 810 \end{itemize} … … 822 822 \item Can pass state around for awkward languages 823 823 \begin{itemize} 824 \item \occam (削除) (削除ここまで)parser uses this to track types of symbols824 \item \occam(追記) ~ (追記ここまで)parser uses this to track types of symbols 825 825 \begin{itemize} 826 826 \item e.g. "expected integer constant" … … 894 894 \frametitle{Usage checking} 895 895 \begin{itemize} 896 \item As in other \occam (削除) (削除ここまで)compilers, array indexing makes usage checking hard896 \item As in other \occam(追記) ~ (追記ここまで)compilers, array indexing makes usage checking hard 897 897 \item For now, this problem has been skipped 898 898 \end{itemize} … … 939 939 \item Must support recursion 940 940 \begin{itemize} 941 \item e.g. |genWhile -> genProcess -> cppGenCall| 941 \item e.g. |genWhile| -> |genProcess| -> |cppGenCall| 942 %Note: don't want the above -> arrows to be highlighted as 943 %if they were Haskell code! 942 944 \end{itemize} 943 945 \item Use "virtual function tables" … … 1000 1002 \item Can't tell directly, because we're not doing the code generation 1001 1003 \item Could use a size that's ``always big enough'' -- but that's inefficient 1004 (追記) \begin{itemize} (追記ここまで) 1005 (追記) \item C++CSP has to do this (追記ここまで) 1006 (追記) \end{itemize} (追記ここまで) 1002 1007 \end{itemize} 1003 1008 \end{itemize} … … 1016 1021 \begin{itemize} 1017 1022 \item Recursion, alloca, exceptions, virtual functions\ldots 1018 \item But we can be careful not to generate these! 1023 \item But we can be careful not to generate these (for C)! 1024 %Note: we can't avoid exceptions or virtual functions in C++, 1025 %because they are part of C++CSP itself! 1019 1026 \end{itemize} 1020 1027 \end{itemize} … … 1025 1032 \section{Language features} 1026 1033 1034 (追記) %TODO define a syntax-highlighting mode for occam, and change the occam (追記ここまで) 1035 (追記) %code fragments to use it (追記ここまで) 1036 (追記) (追記ここまで) 1027 1037 \begin{frame}[fragile] 1028 1038 \frametitle{Abbreviations} 1029 1039 \begin{itemize} 1030 \item \occam (削除) (削除ここまで)doesn't have pointers1040 \item \occam(追記) ~ (追記ここまで)doesn't have pointers 1031 1041 \item Instead, it has a very powerful reference (``abbreviation'') system 1032 1042 \end{itemize} … … 1079 1089 \begin{itemize} 1080 1090 \item Can't just use the STL vector class -- no slicing! 1081 \item Wrote our own class to provide the \occam (削除) (削除ここまで)array semantics1091 \item Wrote our own class to provide the \occam(追記) ~ (追記ここまで)array semantics 1082 1092 \end{itemize} 1083 1093 \end{itemize}
Note:
See TracChangeset
for help on using the changeset viewer.