# HG changeset patch # User Masataka Kohagura # Date 1455799173 -32400 # Node ID f58bbc4a42f8146b99b1e93d89c64e0dd5da1fbe # Parent a099b533af0ef51b983c8c150b2cdf8b312db5c5 fix diff -r a099b533af0e -r f58bbc4a42f8 paper/c4.tex --- a/paper/c4.tex Thu Feb 18 21:13:37 2016 +0900 +++ b/paper/c4.tex Thu Feb 18 21:39:33 2016 +0900 @@ -258,11 +258,6 @@ \label{fig:iodivsuc} \end{figure} -Boyer-Moore String Search は文字列処理の Task を生成する前に、Skip Table を生成している。 -そして Boyer-Moore String Search に必要な情報を bm という構造体にまとめ、この構造体をそれぞれの Task に送信している。 -(ソースコード\ref{src:bmTMmain}) -%check global の説明 - \begin{lstlisting}[frame=lrbt,label=src:bmTMmain,caption=Boyer-Moore String Search の TMmain,numbers=left] typedef struct bm { int* skip_table; @@ -305,6 +300,15 @@ } \end{lstlisting} +ソースコード\ref{src:bmTMmain} 27 行目で検索する文字列を取得する。 +その後、検索文字列と文字列の長さを取り、それに基いて \verb+skip_table+ を生成する。 +そして Boyer-Moore String Search に必要な情報を bm という構造体にまとめ、この構造体をそれぞれの Task に送信している。 + +%check global の説明 IJ +33行目 \verb+w->global+ で検索時に必要な情報を渡している。 +\verb+w->global+で設定されたデータは、計算する Task や Print する Task でも利用することが可能になる。 + +ソースコード\ref{src:bmexec}の 28 行目にて、TMmain で設定した \verb+bmp+ を受け取っている。 \begin{lstlisting}[frame=lrbt,label=src:bmexec,caption=Boyer-Moore String Search の記述,numbers=left] static int BM_method(unsigned char *text,int text_len, @@ -342,6 +346,10 @@ return 0; } \end{lstlisting} +ソースコード\ref{src:bmexec} の3-20行目は Boyer-Moore String Search のメインルーチンである。 +pattern の末尾から比較していき、pattern の先頭までマッチしたら、カウンターを 1 増やす。 + +17行目は比較して一致しなかった場合であり、ミスマッチを起こしたファイルの文字を見て pattern を後ろにいくつずらすか決定される。 \begin{lstlisting}[frame=lrbt,label=src:bmprint,caption=Boyer-Moore String Search の Print Task,numbers=left] static int @@ -356,6 +364,7 @@ return 0; } \end{lstlisting} +ソースコード\ref{src:bmprint} で \section{正規表現} % 正規表現の話を 2 ページずつぐらいで diff -r a099b533af0e -r f58bbc4a42f8 paper/master_paper.pdf Binary file paper/master_paper.pdf has changed