# HG changeset patch # User atton # Date 1484792953 -32400 # Node ID 6bf2e0196a1e24761fe9388092c9fd9b52412968 # Parent 99a9be7e6bc98689f3b0652db3f2510aa7ed82df Add goto.cbc and goto.pdf diff -r 99a9be7e6bc9 -r 6bf2e0196a1e .hgignore --- a/.hgignore Wed Jan 18 17:09:21 2017 +0900 +++ b/.hgignore Thu Jan 19 11:29:13 2017 +0900 @@ -21,3 +21,4 @@ *.agdai *.agda~ +*.xbb diff -r 99a9be7e6bc9 -r 6bf2e0196a1e paper/atton-master.tex --- a/paper/atton-master.tex Wed Jan 18 17:09:21 2017 +0900 +++ b/paper/atton-master.tex Thu Jan 19 11:29:13 2017 +0900 @@ -60,6 +60,8 @@ lineskip=-0.5zw, escapechar={@}, } +\def\lstlistingname{リスト} +\def\lstlistlistingname{リスト目次} %%% 索引のために以下の2行を追加 \usepackage{makeidx,multicol} @@ -87,6 +89,10 @@ %表目次 \listoftables +%リスト目次 +\lstlistoflistings + + %arabic \mainmatter diff -r 99a9be7e6bc9 -r 6bf2e0196a1e paper/cbc.tex --- a/paper/cbc.tex Wed Jan 18 17:09:21 2017 +0900 +++ b/paper/cbc.tex Thu Jan 19 11:29:13 2017 +0900 @@ -27,22 +27,29 @@ % }}} \section{Continuation based C における CodeSegment と DataSegment} -最も基本的な CbC のソースコードをリスト\ref{cbc:cs.cbc}に、ソースコードが実行される流れを図\ref{fig:cs.cbc}に示す。 +最も基本的な CbC のソースコードをリスト\ref{src:goto}に、ソースコードが実行される流れを図\ref{fig:goto}に示す。 Continuation based C における CodeSegment は返り値を持たない関数として表現される。 CodeSegment を定義するためには、C言語の関数を定義する構文の返り値の型部分に \verb/__code/ キーワードを指定する。 Input DataSegment は関数の引数として定義される。 次の CodeSegment へ処理を移す際には \verb/goto/ キーワードの後に CodeSegment 名と Input DataSegment を指定する。 -処理の移動を軽量継続と呼び、リスト\ref{cbc:cs.cbc}内の \verb/goto cs1(a+b);/ がこれにあたる。 -この時の \verb/(a+b)/ が次の CodeSegment の Input DataSegment となる Output DataSegment である。 +処理の移動を軽量継続と呼び、リスト\ref{src:goto}内の \verb/goto cs1(a+b);/ がこれにあたる。 +この時の \verb/(a+b)/ が次の CodeSegment である cs1 の Input DataSegment となる cs0 の Output DataSegment である。 + +\lstinputlisting[label=src:goto, caption=CodeSegment の軽量継続] {src/goto.cbc} -% TODO: cs の source(goto 付き) -% TODO: cs のfigure(goto 付き) +\begin{figure}[htbp] + \begin{center} + \includegraphics[scale=1.0]{fig/goto.pdf} + \caption{CodeSegment の軽量継続} + \label{fig:goto} + \end{center} +\end{figure} % TODO: scheme ref? Scheme などの call/cc といった継続はトップレベルから現在までの位置を環境として保持する。 通常環境とは関数の呼び出しスタックの状態である。 CbC の軽量継続は呼び出し元の情報を持たないため、スタックを破棄しながら処理を続けていく。 -よって、リスト\ref{cbc:cs.cbc} のプログラムでは cs0 から cs1 へと継続した後にcs0 へ戻ることはできない。 +よって、リスト\ref{src:goto} のプログラムでは cs0 から cs1 へと継続した後にcs0 へ戻ることはできない。 % TODO: factorial diff -r 99a9be7e6bc9 -r 6bf2e0196a1e paper/fig/goto.graffle --- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/paper/fig/goto.graffle Thu Jan 19 11:29:13 2017 +0900 @@ -0,0 +1,445 @@ + + + + + ActiveLayerIndex + 0 + ApplicationVersion + + com.omnigroup.OmniGraffle6 + 169.5.0.253125 + + AutoAdjust + + BackgroundGraphic + + Bounds + {{0, 0}, {559.20001220703125, 782.79998779296875}} + Class + SolidGraphic + ID + 2 + Style + + stroke + + Draws + NO + + + + BaseZoom + 0 + CanvasOrigin + {0, 0} + ColumnAlign + 1 + ColumnSpacing + 36 + CreationDate + 2011-11-12 11:03:25 +0000 + Creator + Nobuyasu Oshiro + DisplayScale + 1 in = 1.00000 in + GraphDocumentVersion + 12 + GraphicsList + + + Bounds + {{366.49999356269836, 106.55999761819839}, {65, 24}} + Class + ShapedGraphic + FitText + YES + Flow + Resize + FontInfo + + Size + 11 + + ID + 37 + Style + + fill + + Draws + NO + + shadow + + Draws + NO + + stroke + + Draws + NO + + + Text + + Text + {\rtf1\ansi\ansicpg1252\cocoartf1404\cocoasubrtf340 +{\fonttbl\f0\fnil\fcharset0 HelveticaNeue;} +{\colortbl;\red255\green255\blue255;} +\deftab720 +\pard\pardeftab720\qc\partightenfactor0 + +\f0\fs22 \cf0 goto cs2(c)} + + Wrap + NO + + + Bounds + {{209.99999356269836, 106.55999761819839}, {78, 24}} + Class + ShapedGraphic + FitText + YES + Flow + Resize + FontInfo + + Size + 11 + + ID + 36 + Style + + fill + + Draws + NO + + shadow + + Draws + NO + + stroke + + Draws + NO + + + Text + + Text + {\rtf1\ansi\ansicpg1252\cocoartf1404\cocoasubrtf340 +{\fonttbl\f0\fnil\fcharset0 HelveticaNeue;} +{\colortbl;\red255\green255\blue255;} +\deftab720 +\pard\pardeftab720\qc\partightenfactor0 + +\f0\fs22 \cf0 goto cs1(a+b)} + + Wrap + NO + + + Class + LineGraphic + FontInfo + + Font + Helvetica + Size + 12 + + ID + 35 + Points + + {323.99999356269836, 144} + {426.68373636901379, 143.8290591686964} + + Style + + shadow + + Draws + NO + + stroke + + HeadArrow + FilledArrow + Legacy + + LineType + 1 + TailArrow + 0 + + + Tail + + ID + 33 + + + + Class + LineGraphic + FontInfo + + Font + Helvetica + Size + 12 + + Head + + ID + 33 + + ID + 34 + Points + + {183, 144} + {323.99999356269836, 144} + + Style + + shadow + + Draws + NO + + stroke + + HeadArrow + FilledArrow + Legacy + + LineType + 1 + TailArrow + 0 + + + Tail + + ID + 3 + + + + Bounds + {{287.99999356269836, 117}, {72, 54}} + Class + ShapedGraphic + ID + 33 + Shape + Circle + Style + + shadow + + Draws + NO + + + Text + + Text + {\rtf1\ansi\ansicpg1252\cocoartf1404\cocoasubrtf340 +{\fonttbl\f0\fswiss\fcharset0 Helvetica;} +{\colortbl;\red255\green255\blue255;} +\pard\tx560\tx1120\tx1680\tx2240\tx2800\tx3360\tx3920\tx4480\tx5040\tx5600\tx6160\tx6720\qc\partightenfactor0 + +\f0\fs24 \cf0 cs1} + VerticalPad + 0.0 + + + + Bounds + {{147, 117}, {72, 54}} + Class + ShapedGraphic + ID + 3 + Shape + Circle + Style + + shadow + + Draws + NO + + + Text + + Text + {\rtf1\ansi\ansicpg1252\cocoartf1404\cocoasubrtf340 +{\fonttbl\f0\fswiss\fcharset0 Helvetica;} +{\colortbl;\red255\green255\blue255;} +\pard\tx560\tx1120\tx1680\tx2240\tx2800\tx3360\tx3920\tx4480\tx5040\tx5600\tx6160\tx6720\qc\partightenfactor0 + +\f0\fs24 \cf0 cs0} + VerticalPad + 0.0 + + + + GridInfo + + GuidesLocked + NO + GuidesVisible + YES + HPages + 1 + ImageCounter + 1 + KeepToScale + + Layers + + + Lock + NO + Name + Layer 1 + Print + YES + View + YES + + + LayoutInfo + + Animate + NO + circoMinDist + 18 + circoSeparation + 0.0 + layoutEngine + dot + neatoLineLength + 0.20000000298023224 + neatoSeparation + 0.0 + twopiSeparation + 0.0 + + LinksVisible + NO + MagnetsVisible + NO + MasterSheets + + ModificationDate + 2016-02-14 19:41:55 +0000 + Modifier + utah + NotesVisible + NO + Orientation + 2 + OriginVisible + NO + PageBreaks + YES + PrintInfo + + NSBottomMargin + + float + 41 + + NSHorizonalPagination + + coded + BAtzdHJlYW10eXBlZIHoA4QBQISEhAhOU051bWJlcgCEhAdOU1ZhbHVlAISECE5TT2JqZWN0AIWEASqEhAFxlwCG + + NSLeftMargin + + float + 18 + + NSPaperSize + + size + {595.20001220703125, 841.79998779296875} + + NSPrintReverseOrientation + + coded + BAtzdHJlYW10eXBlZIHoA4QBQISEhAhOU051bWJlcgCEhAdOU1ZhbHVlAISECE5TT2JqZWN0AIWEASqEhAFxlwCG + + NSRightMargin + + float + 18 + + NSTopMargin + + float + 18 + + + PrintOnePage + + ReadOnly + NO + RowAlign + 1 + RowSpacing + 36 + SheetTitle + Canvas 1 + SmartAlignmentGuidesActive + YES + SmartDistanceGuidesActive + YES + UniqueID + 1 + UseEntirePage + + VPages + 1 + WindowInfo + + CurrentSheet + 0 + Expanded_Canvases + + Frame + {{507, -237}, {989, 938}} + ShowInfo + + ShowRuler + + Sidebar + + SidebarWidth + 200 + TopSlabHeight + 250 + VisibleRegion + {{0, 0}, {475, 780}} + Zoom + 1 + ZoomValues + + + Canvas 1 + 1 + 1 + + + + + diff -r 99a9be7e6bc9 -r 6bf2e0196a1e paper/fig/goto.pdf Binary file paper/fig/goto.pdf has changed diff -r 99a9be7e6bc9 -r 6bf2e0196a1e paper/src/goto.cbc --- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/paper/src/goto.cbc Thu Jan 19 11:29:13 2017 +0900 @@ -0,0 +1,7 @@ +__code cs0(int a, int b){ + goto cs1(a+b); +} + +__code cs1(int c){ + goto cs2(c); +}