Skip to content

Commit

Permalink
Deploying to gh-pages from @ 335a975 🚀
Browse files Browse the repository at this point in the history
  • Loading branch information
ShinobuAmasaki committed Aug 4, 2024
1 parent db3c5ae commit a4c7840
Show file tree
Hide file tree
Showing 181 changed files with 724 additions and 723 deletions.
28 changes: 14 additions & 14 deletions index.html
Original file line number Diff line number Diff line change
Expand Up @@ -80,7 +80,7 @@
<div class=col-md-8>
<h1>Forgex—Fortran Regular Expression</h1>
<p>Forgex is a regular expression engine written entirely in Fortran.</p>
<p>This project is managed by <a href="https://fpm.fortran-lang.org/index.html">Fortran Package Manager (FPM)</a>, providing basic processing of regular expression, and as a freely available under the MIT license.
<p>This project is managed by <a href="https://fpm.fortran-lang.org/index.html">Fortran Package Manager (FPM)</a>, providing basic processing of regular expression, and as a freely available under the MIT license.
The engine's core algorithm uses a deterministic finite automaton (DFA) approach. This choice have been focused on runtime performance.</p>
<h2>Features</h2>
<h4>Metacharacter</h4>
Expand All @@ -96,9 +96,9 @@ <h4>Character class</h4>
<ul>
<li>character class <code>[a-z]</code></li>
<li>inverted character class <code>[^a-z]</code></li>
<li>character class on UTF-8 codeset <code>[α-ωぁ-ん]</code>
Note that inverted class does not match the control characters. </li>
<li>character class on UTF-8 codeset <code>[α-ωぁ-ん]</code></li>
</ul>
<p>Note that inverted class does not match the control characters.</p>
<h4>Range of repetition</h4>
<ul>
<li><code>{num}</code>,</li>
Expand Down Expand Up @@ -173,15 +173,15 @@ <h3>APIs</h3>
<p>The <code>regex</code> is a subroutine that returns the substring of a string that matches pattern as <code>intent(out)</code> argument.</p>
<div class="codehilite"><pre><span></span><code><span class="k">block</span>
<span class="k"> </span><span class="kt">character</span><span class="p">(:),</span><span class="w"> </span><span class="k">allocatable</span><span class="w"> </span><span class="kd">::</span><span class="w"> </span><span class="n">pattern</span><span class="p">,</span><span class="w"> </span><span class="n">str</span><span class="p">,</span><span class="w"> </span><span class="n">res</span>
<span class="w"> </span><span class="kt">integer</span><span class="w"> </span><span class="kd">::</span><span class="w"> </span><span class="n">length</span><span class="w"> </span>
<span class="w"> </span><span class="kt">integer</span><span class="w"> </span><span class="kd">::</span><span class="w"> </span><span class="n">length</span>

<span class="w"> </span><span class="n">pattern</span><span class="w"> </span><span class="o">=</span><span class="w"> </span><span class="s1">&#39;foo(bar|baz)&#39;</span>
<span class="w"> </span><span class="n">str</span><span class="w"> </span><span class="o">=</span><span class="w"> </span><span class="s1">&#39;foobarbaz&#39;</span>

<span class="w"> </span><span class="k">call </span><span class="n">regex</span><span class="p">(</span><span class="n">pattern</span><span class="p">,</span><span class="w"> </span><span class="n">str</span><span class="p">,</span><span class="w"> </span><span class="n">res</span><span class="p">)</span><span class="w"> </span>
<span class="w"> </span><span class="k">call </span><span class="n">regex</span><span class="p">(</span><span class="n">pattern</span><span class="p">,</span><span class="w"> </span><span class="n">str</span><span class="p">,</span><span class="w"> </span><span class="n">res</span><span class="p">)</span>
<span class="w"> </span><span class="k">print</span><span class="w"> </span><span class="o">*</span><span class="p">,</span><span class="w"> </span><span class="n">res</span><span class="w"> </span><span class="c">! foobar</span>

<span class="w"> </span><span class="c">! call regex(pattern, str, res, length) </span>
<span class="w"> </span><span class="c">! call regex(pattern, str, res, length)</span>
<span class="w"> </span><span class="c">! the value 6 stored in optional `length` variable.</span>

<span class="k">end block</span>
Expand All @@ -190,7 +190,7 @@ <h3>APIs</h3>
<p>By using the <code>from</code>/<code>to</code> arugments, you can extract substrings from the given string.</p>
<div class="codehilite"><pre><span></span><code><span class="k">block</span>
<span class="k"> </span><span class="kt">character</span><span class="p">(:),</span><span class="w"> </span><span class="k">allocatable</span><span class="w"> </span><span class="kd">::</span><span class="w"> </span><span class="n">pattern</span><span class="p">,</span><span class="w"> </span><span class="n">str</span><span class="p">,</span><span class="w"> </span><span class="n">res</span>
<span class="w"> </span><span class="kt">integer</span><span class="w"> </span><span class="kd">::</span><span class="w"> </span><span class="n">from</span><span class="p">,</span><span class="w"> </span><span class="n">to</span><span class="w"> </span>
<span class="w"> </span><span class="kt">integer</span><span class="w"> </span><span class="kd">::</span><span class="w"> </span><span class="n">from</span><span class="p">,</span><span class="w"> </span><span class="n">to</span>

<span class="w"> </span><span class="n">pattern</span><span class="w"> </span><span class="o">=</span><span class="w"> </span><span class="s1">&#39;[d-f]{3}&#39;</span>
<span class="w"> </span><span class="n">str</span><span class="w"> </span><span class="o">=</span><span class="w"> </span><span class="s1">&#39;abcdefghi&#39;</span>
Expand All @@ -204,10 +204,10 @@ <h3>APIs</h3>
<span class="w"> </span><span class="c">! Cut out before the matched part.</span>
<span class="w"> </span><span class="k">print</span><span class="w"> </span><span class="o">*</span><span class="p">,</span><span class="w"> </span><span class="n">str</span><span class="p">(</span><span class="mi">1</span><span class="p">:</span><span class="n">from</span><span class="o">-</span><span class="mi">1</span><span class="p">)</span><span class="w"> </span><span class="c">! abc</span>

<span class="w"> </span><span class="c">! Cut out the matched part that equivalent to the result argument of the `regex` subrouine. </span>
<span class="w"> </span><span class="k">print</span><span class="w"> </span><span class="o">*</span><span class="p">,</span><span class="w"> </span><span class="n">str</span><span class="p">(</span><span class="n">from</span><span class="p">:</span><span class="n">to</span><span class="p">)</span><span class="w"> </span><span class="c">! def </span>
<span class="w"> </span><span class="c">! Cut out the matched part that equivalent to the result argument of the `regex` subrouine.</span>
<span class="w"> </span><span class="k">print</span><span class="w"> </span><span class="o">*</span><span class="p">,</span><span class="w"> </span><span class="n">str</span><span class="p">(</span><span class="n">from</span><span class="p">:</span><span class="n">to</span><span class="p">)</span><span class="w"> </span><span class="c">! def</span>

<span class="w"> </span><span class="c">! Cut out after the matched part. </span>
<span class="w"> </span><span class="c">! Cut out after the matched part.</span>
<span class="w"> </span><span class="k">print</span><span class="w"> </span><span class="o">*</span><span class="p">,</span><span class="w"> </span><span class="n">str</span><span class="p">(</span><span class="n">to</span><span class="o">+</span><span class="mi">1</span><span class="p">:</span><span class="nb">len</span><span class="p">(</span><span class="n">str</span><span class="p">))</span><span class="w"> </span><span class="c">! ghi</span>

<span class="k">end block</span>
Expand All @@ -226,7 +226,7 @@ <h3>APIs</h3>
</code></pre></div>

<p>If you want to the matched character string as the return value of the function,
consider using <code>regex_f</code> defined in the <code>forgex</code> module. </p>
consider using <code>regex_f</code> defined in the <code>forgex</code> module.</p>
<div class="codehilite"><pre><span></span><code><span class="k">interface </span><span class="n">regex_f</span>
<span class="w"> </span><span class="k">module procedure</span><span class="w"> </span><span class="kd">::</span><span class="w"> </span><span class="n">function__regex</span>
<span class="k">end interface </span><span class="n">regex_f</span>
Expand All @@ -241,7 +241,7 @@ <h2>Examples</h2>
<p>Note that in the current version, these APIs can be used in <code>do</code> loops and <code>do concurrent</code> loops, but not in OpenMP parallel blocks.</p>
<h3>UTF-8 String matching</h3>
<p>UTF-8 string can be matched using regular expression patterns just like ASCII strings.
The following example demonstrates matching Chinese characters.
The following example demonstrates matching Chinese characters.
In this example, the <code>length</code> variable stores the byte length, and in this case there 10 3-byte characters, so the length is 30.</p>
<div class="codehilite"><pre><span></span><code><span class="k">block</span>
<span class="k"> </span><span class="kt">character</span><span class="p">(:),</span><span class="w"> </span><span class="k">allocatable</span><span class="w"> </span><span class="kd">::</span><span class="w"> </span><span class="n">pattern</span><span class="p">,</span><span class="w"> </span><span class="n">str</span>
Expand Down Expand Up @@ -277,7 +277,7 @@ <h2>Acknowledgements</h2>
The idea of applying the <code>.in.</code> operator to strings was inspired by kazulagi's one.</p>
<h2>References</h2>
<ol>
<li>Russ Cox <a href="https://swtch.com/~rsc/regexp/regexp1.html">"Regular Expression Matching Can Be Simple And Fast"</a>, 2007 </li>
<li>Russ Cox <a href="https://swtch.com/~rsc/regexp/regexp1.html">"Regular Expression Matching Can Be Simple And Fast"</a>, 2007</li>
<li>近藤嘉雪 (Yoshiyuki Kondo), "定本 Cプログラマのためのアルゴリズムとデータ構造", 1998, SB Creative.</li>
<li><a href="https://github.com/ue1221/fortran-utilities">ue1221/fortran-utilities</a></li>
<li>Haruka Tomobe (kazulagi), <a href="https://github.com/kazulagi">https://github.com/kazulagi</a>, <a href="https://qiita.com/soybean/items/7cdd2156a9d8843c0d91">his article in Japanese</a></li>
Expand Down Expand Up @@ -366,7 +366,7 @@ <h3>Derived Types</h3>
<p class="text-end">
Documentation generated by
<a href="https://github.com/Fortran-FOSS-Programmers/ford">FORD</a>
on 2024-08-04 06:24 </p>
on 2024-08-04 06:32 </p>
</div>
</div>
<br>
Expand Down
2 changes: 1 addition & 1 deletion interface/disjoin.html
Original file line number Diff line number Diff line change
Expand Up @@ -209,7 +209,7 @@ <h4>Arguments</h4>
<p class="text-end">
Documentation generated by
<a href="https://github.com/Fortran-FOSS-Programmers/ford">FORD</a>
on 2024-08-04 06:24 </p>
on 2024-08-04 06:32 </p>
</div>
</div>
<br>
Expand Down
8 changes: 4 additions & 4 deletions interface/operator(.in.).html
Original file line number Diff line number Diff line change
Expand Up @@ -192,7 +192,7 @@ <h4>Arguments</h4>
</tr>
<tr>
<td>
<span class="anchor" id="variable-seg"></span>
<span class="anchor" id="variable-seg~3"></span>
type(<a href='../type/segment_t.html'>segment_t</a>),
</td>
<td>intent(in)</td>
Expand Down Expand Up @@ -252,7 +252,7 @@ <h4>Arguments</h4>
</tr>
<tr>
<td>
<span class="anchor" id="variable-seg_list~3"></span>
<span class="anchor" id="variable-seg_list"></span>
type(<a href='../type/segment_t.html'>segment_t</a>),
</td>
<td>intent(in)</td>
Expand Down Expand Up @@ -357,7 +357,7 @@ <h4>Arguments</h4>
<tbody>
<tr>
<td>
<span class="anchor" id="variable-seg~2"></span>
<span class="anchor" id="variable-seg~4"></span>
type(<a href='../type/segment_t.html'>segment_t</a>),
</td>
<td>intent(in)</td>
Expand Down Expand Up @@ -414,7 +414,7 @@ <h4>
<p class="text-end">
Documentation generated by
<a href="https://github.com/Fortran-FOSS-Programmers/ford">FORD</a>
on 2024-08-04 06:24 </p>
on 2024-08-04 06:32 </p>
</div>
</div>
<br>
Expand Down
6 changes: 3 additions & 3 deletions interface/operator(.in.)~2.html
Original file line number Diff line number Diff line change
Expand Up @@ -172,7 +172,7 @@ <h4>Arguments</h4>
<tbody>
<tr>
<td>
<span class="anchor" id="variable-pattern"></span>
<span class="anchor" id="variable-pattern~7"></span>
character(len=*),
</td>
<td>intent(in)</td>
Expand All @@ -187,7 +187,7 @@ <h4>Arguments</h4>
</tr>
<tr>
<td>
<span class="anchor" id="variable-str~3"></span>
<span class="anchor" id="variable-str~8"></span>
character(len=*),
</td>
<td>intent(in)</td>
Expand Down Expand Up @@ -229,7 +229,7 @@ <h4>
<p class="text-end">
Documentation generated by
<a href="https://github.com/Fortran-FOSS-Programmers/ford">FORD</a>
on 2024-08-04 06:24 </p>
on 2024-08-04 06:32 </p>
</div>
</div>
<br>
Expand Down
6 changes: 3 additions & 3 deletions interface/operator(.match.).html
Original file line number Diff line number Diff line change
Expand Up @@ -172,7 +172,7 @@ <h4>Arguments</h4>
<tbody>
<tr>
<td>
<span class="anchor" id="variable-pattern~2"></span>
<span class="anchor" id="variable-pattern~8"></span>
character(len=*),
</td>
<td>intent(in)</td>
Expand All @@ -187,7 +187,7 @@ <h4>Arguments</h4>
</tr>
<tr>
<td>
<span class="anchor" id="variable-str~4"></span>
<span class="anchor" id="variable-str~9"></span>
character(len=*),
</td>
<td>intent(in)</td>
Expand Down Expand Up @@ -229,7 +229,7 @@ <h4>
<p class="text-end">
Documentation generated by
<a href="https://github.com/Fortran-FOSS-Programmers/ford">FORD</a>
on 2024-08-04 06:24 </p>
on 2024-08-04 06:32 </p>
</div>
</div>
<br>
Expand Down
2 changes: 1 addition & 1 deletion interface/operator(==).html
Original file line number Diff line number Diff line change
Expand Up @@ -229,7 +229,7 @@ <h4>
<p class="text-end">
Documentation generated by
<a href="https://github.com/Fortran-FOSS-Programmers/ford">FORD</a>
on 2024-08-04 06:24 </p>
on 2024-08-04 06:32 </p>
</div>
</div>
<br>
Expand Down
2 changes: 1 addition & 1 deletion interface/operator(SLASH=).html
Original file line number Diff line number Diff line change
Expand Up @@ -229,7 +229,7 @@ <h4>
<p class="text-end">
Documentation generated by
<a href="https://github.com/Fortran-FOSS-Programmers/ford">FORD</a>
on 2024-08-04 06:24 </p>
on 2024-08-04 06:32 </p>
</div>
</div>
<br>
Expand Down
12 changes: 6 additions & 6 deletions interface/regex.html
Original file line number Diff line number Diff line change
Expand Up @@ -172,7 +172,7 @@ <h4>Arguments</h4>
<tbody>
<tr>
<td>
<span class="anchor" id="variable-pattern~3"></span>
<span class="anchor" id="variable-pattern~9"></span>
character(len=*),
</td>
<td>intent(in)</td>
Expand Down Expand Up @@ -202,7 +202,7 @@ <h4>Arguments</h4>
</tr>
<tr>
<td>
<span class="anchor" id="variable-res~14"></span>
<span class="anchor" id="variable-res~23"></span>
character(len=:),
</td>
<td>intent(inout),</td>
Expand All @@ -217,7 +217,7 @@ <h4>Arguments</h4>
</tr>
<tr>
<td>
<span class="anchor" id="variable-length"></span>
<span class="anchor" id="variable-length~2"></span>
integer,
</td>
<td>intent(inout),</td>
Expand All @@ -232,7 +232,7 @@ <h4>Arguments</h4>
</tr>
<tr>
<td>
<span class="anchor" id="variable-from~2"></span>
<span class="anchor" id="variable-from~3"></span>
integer,
</td>
<td>intent(inout),</td>
Expand All @@ -247,7 +247,7 @@ <h4>Arguments</h4>
</tr>
<tr>
<td>
<span class="anchor" id="variable-to~2"></span>
<span class="anchor" id="variable-to~3"></span>
integer,
</td>
<td>intent(inout),</td>
Expand Down Expand Up @@ -284,7 +284,7 @@ <h4>Arguments</h4>
<p class="text-end">
Documentation generated by
<a href="https://github.com/Fortran-FOSS-Programmers/ford">FORD</a>
on 2024-08-04 06:24 </p>
on 2024-08-04 06:32 </p>
</div>
</div>
<br>
Expand Down
4 changes: 2 additions & 2 deletions interface/regex_f.html
Original file line number Diff line number Diff line change
Expand Up @@ -172,7 +172,7 @@ <h4>Arguments</h4>
<tbody>
<tr>
<td>
<span class="anchor" id="variable-pattern~4"></span>
<span class="anchor" id="variable-pattern~10"></span>
character(len=*),
</td>
<td>intent(in)</td>
Expand Down Expand Up @@ -229,7 +229,7 @@ <h4>
<p class="text-end">
Documentation generated by
<a href="https://github.com/Fortran-FOSS-Programmers/ford">FORD</a>
on 2024-08-04 06:24 </p>
on 2024-08-04 06:32 </p>
</div>
</div>
<br>
Expand Down
2 changes: 1 addition & 1 deletion lists/files.html
Original file line number Diff line number Diff line change
Expand Up @@ -163,7 +163,7 @@ <h1>Source Files</h1>
<p class="text-end">
Documentation generated by
<a href="https://github.com/Fortran-FOSS-Programmers/ford">FORD</a>
on 2024-08-04 06:24 </p>
on 2024-08-04 06:32 </p>
</div>
</div>
<br>
Expand Down
2 changes: 1 addition & 1 deletion lists/modules.html
Original file line number Diff line number Diff line change
Expand Up @@ -186,7 +186,7 @@ <h1>Modules</h1>
<p class="text-end">
Documentation generated by
<a href="https://github.com/Fortran-FOSS-Programmers/ford">FORD</a>
on 2024-08-04 06:24 </p>
on 2024-08-04 06:32 </p>
</div>
</div>
<br>
Expand Down
14 changes: 7 additions & 7 deletions lists/procedures.html
Original file line number Diff line number Diff line change
Expand Up @@ -673,18 +673,18 @@ <h1>Procedures</h1>
<td><a href='../module/forgex_syntax_tree_m.html'>forgex_syntax_tree_m</a></td>
<td>Subroutine</td>
<td></td>
</tr>
<tr>
<td><a href='../proc/regex.html'>regex</a></td>
<td><a href='../module/forgex_syntax_tree_m.html'>forgex_syntax_tree_m</a></td>
<td>Subroutine</td>
<td></td>
</tr>
<tr>
<td><a href='../interface/regex.html'>regex</a></td>
<td><a href='../module/forgex.html'>forgex</a></td>
<td>Interface</td>
<td><p>The generic name for the <code>regex</code> subroutine implemented as <code>procedure__regex</code>.</p></td>
</tr>
<tr>
<td><a href='../proc/regex.html'>regex</a></td>
<td><a href='../module/forgex_syntax_tree_m.html'>forgex_syntax_tree_m</a></td>
<td>Subroutine</td>
<td></td>
</tr>
<tr>
<td><a href='../interface/regex_f.html'>regex_f</a></td>
Expand Down Expand Up @@ -847,7 +847,7 @@ <h1>Procedures</h1>
<p class="text-end">
Documentation generated by
<a href="https://github.com/Fortran-FOSS-Programmers/ford">FORD</a>
on 2024-08-04 06:24 </p>
on 2024-08-04 06:32 </p>
</div>
</div>
<br>
Expand Down
2 changes: 1 addition & 1 deletion lists/types.html
Original file line number Diff line number Diff line change
Expand Up @@ -173,7 +173,7 @@ <h1>Derived Types</h1>
<p class="text-end">
Documentation generated by
<a href="https://github.com/Fortran-FOSS-Programmers/ford">FORD</a>
on 2024-08-04 06:24 </p>
on 2024-08-04 06:32 </p>
</div>
</div>
<br>
Expand Down
Loading

0 comments on commit a4c7840

Please sign in to comment.