# HG changeset patch # User Kaito Tokumori # Date 1455081151 -32400 # Node ID 7161b80a7e19a7eb323c7157e55bcbf0e78e322f # Parent e9a6d390a4010b90609a9759cc97963f6b177043 冥 ANOTHER diff -r e9a6d390a401 -r 7161b80a7e19 paper/chapter3.tex --- a/paper/chapter3.tex Tue Feb 09 21:25:40 2016 +0900 +++ b/paper/chapter3.tex Wed Feb 10 14:12:31 2016 +0900 @@ -112,7 +112,7 @@ これらの編集により, LLVM 側でも code segment を認識できるようになった. \section{軽量継続} -CbC で軽量継続は goto に code segment 冥を添えることで行う. この新しい goto syntax を追加する. 継続のための goto syntax は, goto の後に関数呼び出しと同じ構文が来る形になる. したがって, goto の構文解析を行う際にこの構文も解析できるように変更を加える必要がある. clang が goto 文の構文解析を行っているのは, Parser クラスの ParseStatementOrDeclarationAfterAttributes 関数であり, この関数は \$(clang)/lib/Parse/ParseStmt.cpp で定義されている. この関数内にも switch 文があり, この中の kw\_goto が来た時の処理に手を加える. 具体的には以下のように変更した. +CbC で軽量継続は goto に code segment 名を添えることで行う. この新しい goto syntax を追加する. 継続のための goto syntax は, goto の後に関数呼び出しと同じ構文が来る形になる. したがって, goto の構文解析を行う際にこの構文も解析できるように変更を加える必要がある. clang が goto 文の構文解析を行っているのは, Parser クラスの ParseStatementOrDeclarationAfterAttributes 関数であり, この関数は \$(clang)/lib/Parse/ParseStmt.cpp で定義されている. この関数内にも switch 文があり, この中の kw\_goto が来た時の処理に手を加える. 具体的には以下のように変更した. \begin{lstlisting}[frame=lrbt,label=ParseStmt,caption={goto 文の構文解析}]