<?xml version="1.0" encoding="utf-8"?>
<rss version="2.0" xmlns:atom="http://www.w3.org/2005/Atom"><channel><title>Recent changes to Home</title><link>https://sourceforge.net/p/bnfa/home/Home/</link><description>Recent changes to Home</description><atom:link href="https://sourceforge.net/p/bnfa/home/Home/feed" rel="self"/><language>en</language><lastBuildDate>Sun, 05 Feb 2012 10:59:17 -0000</lastBuildDate><atom:link href="https://sourceforge.net/p/bnfa/home/Home/feed" rel="self" type="application/rss+xml"/><item><title>WikiPage Home modified by Bjorn Reese</title><link>https://sourceforge.net/p/bnfa/home/Home/</link><description>&lt;pre&gt;--- v19 
+++ v20 
@@ -34,10 +34,16 @@
 
 #### Examples ####
 
-* Match a vowel:
-&lt;p&gt;
-&lt;code&gt;
+* Match a single vowel:
+&lt;p&gt;
+&lt;code&gt;
 rule vowel = group("AEIOUYaeiouy");
+&lt;/code&gt;
+&lt;/p&gt;
+* Match a one or more vowels:
+&lt;p&gt;
+&lt;code&gt;
+rule vowels = +vowel;
 &lt;/code&gt;
 &lt;/p&gt;
 * Match identifier (alphabetic character followed by zero or more alphanumeric characters):
&lt;/pre&gt;</description><dc:creator xmlns:dc="http://purl.org/dc/elements/1.1/">Bjorn Reese</dc:creator><pubDate>Sun, 05 Feb 2012 10:59:17 -0000</pubDate><guid>https://sourceforge.net6cb28a027666272e31d0b620531d7af9341d5dfe</guid></item><item><title>WikiPage Home modified by Bjorn Reese</title><link>https://sourceforge.net/p/bnfa/home/Home/</link><description>&lt;pre&gt;--- v18 
+++ v19 
@@ -1,59 +1,61 @@
 BNFA is C++ regular expression matcher based on [non-deterministic finite automata](http://en.wikipedia.org/wiki/Nondeterministic_finite-state_machine) (NFA).
 
+BNFA provides a way to construct the regular expression rules, and an engine for comparing input against the regular expressions.
+
 ### Rules ###
 BNFA uses overloaded operators for writing regular expressions. This syntax was inspired by [Boost.Spirit](http://www.boost.org/doc/libs/).
 
 &lt;table&gt;
 &lt;thead&gt;
 &lt;tr&gt;&lt;th&gt;Element&lt;/th&gt;&lt;th&gt;Regular expression&lt;/th&gt;&lt;th&gt;BNFA&lt;/th&gt;&lt;/tr&gt;
 &lt;/thead&gt;
 &lt;tbody&gt;
 &lt;tr&gt;&lt;td&gt;Optional&lt;/td&gt;&lt;td&gt;A?&lt;/td&gt;&lt;td&gt;&lt;code&gt;-A&lt;/code&gt;&lt;/td&gt;&lt;/tr&gt;
 &lt;tr&gt;&lt;td&gt;One-or-more&lt;/td&gt;&lt;td&gt;A+&lt;/td&gt;&lt;td&gt;&lt;code&gt;+A&lt;/code&gt;&lt;/td&gt;&lt;/tr&gt;
 &lt;tr&gt;&lt;td&gt;Zero-or-more&lt;/td&gt;&lt;td&gt;A*&lt;/td&gt;&lt;td&gt;&lt;code&gt;*A&lt;/code&gt;&lt;/td&gt;&lt;/tr&gt;
 &lt;tr&gt;&lt;td&gt;Exactly N times&lt;/td&gt;&lt;td&gt;A{N}&lt;/td&gt;&lt;td&gt;&lt;code&gt;A(N)&lt;/code&gt;&lt;/td&gt;&lt;/tr&gt;
 &lt;tr&gt;&lt;td&gt;At least N times&lt;/td&gt;&lt;td&gt;A{N,}&lt;/td&gt;&lt;td&gt;&lt;code&gt;A(N,infinity)&lt;/code&gt;&lt;/td&gt;&lt;/tr&gt;
 &lt;tr&gt;&lt;td&gt;Between M and N times&lt;/td&gt;&lt;td&gt;A{M,N}&lt;/td&gt;&lt;td&gt;&lt;code&gt;A(M,N)&lt;/code&gt;&lt;/td&gt;&lt;/tr&gt;
 &lt;tr&gt;&lt;td&gt;Concatenation&lt;/td&gt;&lt;td&gt;AB&lt;/td&gt;&lt;td&gt;&lt;code&gt;A &gt;&gt; B&lt;code&gt;&lt;/td&gt;&lt;/tr&gt;
 &lt;tr&gt;&lt;td&gt;Alternation&lt;/td&gt;&lt;td&gt;A | B&lt;/td&gt;&lt;td&gt;&lt;code&gt;A | B&lt;/code&gt;&lt;/td&gt;&lt;/tr&gt;
 &lt;tr&gt;&lt;td&gt;Separated list&lt;/td&gt;&lt;td&gt;A(?:BA)*&lt;/td&gt;&lt;td&gt;&lt;code&gt;A % B&lt;/code&gt;&lt;/td&gt;&lt;/tr&gt;
 &lt;tr&gt;&lt;td&gt;&lt;a href="Capture"&gt;Capture&lt;/a&gt;&lt;/td&gt;&lt;td&gt;(A)&lt;/td&gt;&lt;td&gt;&lt;code&gt;capture(A)&lt;/code&gt;&lt;/td&gt;&lt;/tr&gt;
 &lt;tr&gt;&lt;td&gt;&lt;a href="Assertion"&gt;Positive lookahead&lt;/a&gt;&lt;/td&gt;&lt;td&gt;(?=A)&lt;/td&gt;&lt;td&gt;&lt;code&gt;&amp;A&lt;/code&gt;&lt;/td&gt;&lt;/tr&gt;
 &lt;tr&gt;&lt;td&gt;&lt;a href="Assertion"&gt;Negative lookahead&lt;/a&gt;&lt;/td&gt;&lt;td&gt;(?!A)&lt;/td&gt;&lt;td&gt;&lt;code&gt;!A&lt;/code&gt;&lt;/td&gt;&lt;/tr&gt;
 &lt;tr&gt;&lt;td&gt;Character&lt;/td&gt;&lt;td&gt;a&lt;/td&gt;&lt;td&gt;&lt;code&gt;text("a")&lt;/code&gt;&lt;/td&gt;&lt;/tr&gt;
 &lt;tr&gt;&lt;td&gt;Any character&lt;/td&gt;&lt;td&gt;.&lt;/td&gt;&lt;td&gt;&lt;code&gt;any()&lt;/code&gt;&lt;/td&gt;&lt;/tr&gt;
 &lt;tr&gt;&lt;td&gt;Character sequence&lt;/td&gt;&lt;td&gt;abc&lt;/td&gt;&lt;td&gt;&lt;code&gt;text("abc")&lt;/code&gt;&lt;/td&gt;&lt;/tr&gt;
 &lt;tr&gt;&lt;td&gt;Character group&lt;/td&gt;&lt;td&gt;[abc]&lt;/td&gt;&lt;td&gt;&lt;code&gt;group("abc")&lt;/code&gt;&lt;/td&gt;&lt;/tr&gt;
 &lt;tr&gt;&lt;td&gt;Character range&lt;/td&gt;&lt;td&gt;[a-z]&lt;/td&gt;&lt;td&gt;&lt;code&gt;range('a', 'z')&lt;/code&gt;&lt;/td&gt;&lt;/tr&gt;
 &lt;tr&gt;&lt;td&gt;Character class&lt;/td&gt;&lt;td&gt;[:alnum:]&lt;br/&gt;[:alpha:]&lt;br/&gt;...&lt;/td&gt;&lt;td&gt;&lt;code&gt;alnum()&lt;br/&gt;alpha()&lt;/code&gt;&lt;br/&gt;...&lt;/td&gt;&lt;/tr&gt;
 &lt;/td&gt;&lt;/tr&gt;
 &lt;/tbody&gt;
 &lt;/table&gt;
 
 #### Examples ####
 
 * Match a vowel:
 &lt;p&gt;
 &lt;code&gt;
 rule vowel = group("AEIOUYaeiouy");
 &lt;/code&gt;
 &lt;/p&gt;
 * Match identifier (alphabetic character followed by zero or more alphanumeric characters):
 &lt;p&gt;
 &lt;code&gt;
 rule identifier1 = alpha() &gt;&gt; *alnum(); // Alternative #1&lt;br/&gt;
 rule identifier2 = !digit() &gt;&gt; +alnum(); // Alternative #2
 &lt;/code&gt;
 &lt;/p&gt;
 * Matching a floating point number can be done with the regular expression [\[+-\]?(\[0-9\]*\\.\[0-9\]+|\[0-9\]+)](http://www.regular-expressions.info/floatingpoint.html):
 &lt;p&gt;
 &lt;code&gt;
 rule floating = -group("+-") &gt;&gt; ( ( *digit() &gt;&gt; text(".") &gt;&gt; +digit() ) | +digit() );
 &lt;/code&gt;
 &lt;p/&gt;
 
 ### Matching Policies ###
-BNFA has three different matching policies:
+The BNFA engine supports three different matching policies:
 
 * Match - Examines if the input matched the rule.
 * Capture - Returns a list with parts of the input that matches the captures specified in the rule.
&lt;/pre&gt;</description><dc:creator xmlns:dc="http://purl.org/dc/elements/1.1/">Bjorn Reese</dc:creator><pubDate>Sun, 18 Sep 2011 09:16:57 -0000</pubDate><guid>https://sourceforge.net0835f9de977c562aa46eae6abe9f488fbd4e0c8f</guid></item><item><title>WikiPage Home modified by Bjorn Reese</title><link>https://sourceforge.net/p/bnfa/home/Home/</link><description>&lt;pre&gt;--- v17 
+++ v18 
@@ -51,3 +51,10 @@
 rule floating = -group("+-") &gt;&gt; ( ( *digit() &gt;&gt; text(".") &gt;&gt; +digit() ) | +digit() );
 &lt;/code&gt;
 &lt;p/&gt;
+
+### Matching Policies ###
+BNFA has three different matching policies:
+
+* Match - Examines if the input matched the rule.
+* Capture - Returns a list with parts of the input that matches the captures specified in the rule.
+* Lookup - Look up data that matches the input. This works like a radix tree, but where the radix tree only handles prefixes, this matcher handles arbitrary regular expressions.
&lt;/pre&gt;</description><dc:creator xmlns:dc="http://purl.org/dc/elements/1.1/">Bjorn Reese</dc:creator><pubDate>Sun, 18 Sep 2011 09:12:46 -0000</pubDate><guid>https://sourceforge.net193ec316300ef00fa775c026a0598cd7768a3a0c</guid></item><item><title>WikiPage Home modified by Bjorn Reese</title><link>https://sourceforge.net/p/bnfa/home/Home/</link><description>&lt;pre&gt;--- v16 
+++ v17 
@@ -1,4 +1,4 @@
-BNFA is C++ regular expression matcher based on non-deterministic finite automata (NFA).
+BNFA is C++ regular expression matcher based on [non-deterministic finite automata](http://en.wikipedia.org/wiki/Nondeterministic_finite-state_machine) (NFA).
 
 ### Rules ###
 BNFA uses overloaded operators for writing regular expressions. This syntax was inspired by [Boost.Spirit](http://www.boost.org/doc/libs/).
&lt;/pre&gt;</description><dc:creator xmlns:dc="http://purl.org/dc/elements/1.1/">Bjorn Reese</dc:creator><pubDate>Sun, 18 Sep 2011 08:59:37 -0000</pubDate><guid>https://sourceforge.netd90f1b1ff4dd906dbeca91e300dcf8f205386bf9</guid></item><item><title>WikiPage Home modified by Bjorn Reese</title><link>https://sourceforge.net/p/bnfa/home/Home/</link><description>&lt;pre&gt;--- v15 
+++ v16 
@@ -17,9 +17,9 @@
 &lt;tr&gt;&lt;td&gt;Concatenation&lt;/td&gt;&lt;td&gt;AB&lt;/td&gt;&lt;td&gt;&lt;code&gt;A &gt;&gt; B&lt;code&gt;&lt;/td&gt;&lt;/tr&gt;
 &lt;tr&gt;&lt;td&gt;Alternation&lt;/td&gt;&lt;td&gt;A | B&lt;/td&gt;&lt;td&gt;&lt;code&gt;A | B&lt;/code&gt;&lt;/td&gt;&lt;/tr&gt;
 &lt;tr&gt;&lt;td&gt;Separated list&lt;/td&gt;&lt;td&gt;A(?:BA)*&lt;/td&gt;&lt;td&gt;&lt;code&gt;A % B&lt;/code&gt;&lt;/td&gt;&lt;/tr&gt;
-&lt;tr&gt;&lt;td&gt;Capture&lt;/td&gt;&lt;td&gt;(A)&lt;/td&gt;&lt;td&gt;&lt;code&gt;capture(A)&lt;/code&gt;&lt;/td&gt;&lt;/tr&gt;
-&lt;tr&gt;&lt;td&gt;Positive lookahead&lt;/td&gt;&lt;td&gt;(?=A)&lt;/td&gt;&lt;td&gt;&lt;code&gt;&amp;A&lt;/code&gt;&lt;/td&gt;&lt;/tr&gt;
-&lt;tr&gt;&lt;td&gt;Negative lookahead&lt;/td&gt;&lt;td&gt;(?!A)&lt;/td&gt;&lt;td&gt;&lt;code&gt;!A&lt;/code&gt;&lt;/td&gt;&lt;/tr&gt;
+&lt;tr&gt;&lt;td&gt;&lt;a href="Capture"&gt;Capture&lt;/a&gt;&lt;/td&gt;&lt;td&gt;(A)&lt;/td&gt;&lt;td&gt;&lt;code&gt;capture(A)&lt;/code&gt;&lt;/td&gt;&lt;/tr&gt;
+&lt;tr&gt;&lt;td&gt;&lt;a href="Assertion"&gt;Positive lookahead&lt;/a&gt;&lt;/td&gt;&lt;td&gt;(?=A)&lt;/td&gt;&lt;td&gt;&lt;code&gt;&amp;A&lt;/code&gt;&lt;/td&gt;&lt;/tr&gt;
+&lt;tr&gt;&lt;td&gt;&lt;a href="Assertion"&gt;Negative lookahead&lt;/a&gt;&lt;/td&gt;&lt;td&gt;(?!A)&lt;/td&gt;&lt;td&gt;&lt;code&gt;!A&lt;/code&gt;&lt;/td&gt;&lt;/tr&gt;
 &lt;tr&gt;&lt;td&gt;Character&lt;/td&gt;&lt;td&gt;a&lt;/td&gt;&lt;td&gt;&lt;code&gt;text("a")&lt;/code&gt;&lt;/td&gt;&lt;/tr&gt;
 &lt;tr&gt;&lt;td&gt;Any character&lt;/td&gt;&lt;td&gt;.&lt;/td&gt;&lt;td&gt;&lt;code&gt;any()&lt;/code&gt;&lt;/td&gt;&lt;/tr&gt;
 &lt;tr&gt;&lt;td&gt;Character sequence&lt;/td&gt;&lt;td&gt;abc&lt;/td&gt;&lt;td&gt;&lt;code&gt;text("abc")&lt;/code&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;/pre&gt;</description><dc:creator xmlns:dc="http://purl.org/dc/elements/1.1/">Bjorn Reese</dc:creator><pubDate>Thu, 18 Aug 2011 17:54:08 -0000</pubDate><guid>https://sourceforge.net0a75683d0fdfdf48655fba149576f0be2ef88e57</guid></item><item><title>WikiPage Home modified by Bjorn Reese</title><link>https://sourceforge.net/p/bnfa/home/Home/</link><description>&lt;pre&gt;--- v14 
+++ v15 
@@ -16,7 +16,8 @@
 &lt;tr&gt;&lt;td&gt;Between M and N times&lt;/td&gt;&lt;td&gt;A{M,N}&lt;/td&gt;&lt;td&gt;&lt;code&gt;A(M,N)&lt;/code&gt;&lt;/td&gt;&lt;/tr&gt;
 &lt;tr&gt;&lt;td&gt;Concatenation&lt;/td&gt;&lt;td&gt;AB&lt;/td&gt;&lt;td&gt;&lt;code&gt;A &gt;&gt; B&lt;code&gt;&lt;/td&gt;&lt;/tr&gt;
 &lt;tr&gt;&lt;td&gt;Alternation&lt;/td&gt;&lt;td&gt;A | B&lt;/td&gt;&lt;td&gt;&lt;code&gt;A | B&lt;/code&gt;&lt;/td&gt;&lt;/tr&gt;
-&lt;tr&gt;&lt;td&gt;Separated list&lt;/td&gt;&lt;td&gt;A(BA)*&lt;/td&gt;&lt;td&gt;&lt;code&gt;A % B&lt;/code&gt;&lt;/td&gt;&lt;/tr&gt;
+&lt;tr&gt;&lt;td&gt;Separated list&lt;/td&gt;&lt;td&gt;A(?:BA)*&lt;/td&gt;&lt;td&gt;&lt;code&gt;A % B&lt;/code&gt;&lt;/td&gt;&lt;/tr&gt;
+&lt;tr&gt;&lt;td&gt;Capture&lt;/td&gt;&lt;td&gt;(A)&lt;/td&gt;&lt;td&gt;&lt;code&gt;capture(A)&lt;/code&gt;&lt;/td&gt;&lt;/tr&gt;
 &lt;tr&gt;&lt;td&gt;Positive lookahead&lt;/td&gt;&lt;td&gt;(?=A)&lt;/td&gt;&lt;td&gt;&lt;code&gt;&amp;A&lt;/code&gt;&lt;/td&gt;&lt;/tr&gt;
 &lt;tr&gt;&lt;td&gt;Negative lookahead&lt;/td&gt;&lt;td&gt;(?!A)&lt;/td&gt;&lt;td&gt;&lt;code&gt;!A&lt;/code&gt;&lt;/td&gt;&lt;/tr&gt;
 &lt;tr&gt;&lt;td&gt;Character&lt;/td&gt;&lt;td&gt;a&lt;/td&gt;&lt;td&gt;&lt;code&gt;text("a")&lt;/code&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;/pre&gt;</description><dc:creator xmlns:dc="http://purl.org/dc/elements/1.1/">Bjorn Reese</dc:creator><pubDate>Thu, 18 Aug 2011 17:38:48 -0000</pubDate><guid>https://sourceforge.net3b82dd4a44d989d9ce3108222b3add5a45311a1b</guid></item><item><title>WikiPage Home modified by Bjorn Reese</title><link>https://sourceforge.net/p/bnfa/home/Home/</link><description>&lt;pre&gt;--- v13 
+++ v14 
@@ -31,24 +31,22 @@
 
 #### Examples ####
 
-* Match alphabetic letters with \[A-Za-z\]:
-&lt;p&gt;
-&lt;code&gt;
-rule alpha = range('A', 'Z') | range('a', 'z');
-&lt;/code&gt;
-&lt;/p&gt;
+* Match a vowel:
+&lt;p&gt;
+&lt;code&gt;
+rule vowel = group("AEIOUYaeiouy");
+&lt;/code&gt;
+&lt;/p&gt;
 * Match identifier (alphabetic character followed by zero or more alphanumeric characters):
 &lt;p&gt;
 &lt;code&gt;
-rule digit = range('0', '9');&lt;br/&gt;
-rule alnum = digit | alpha;&lt;br/&gt;
-rule identifier1 = alpha &gt;&gt; *alnum; // Alternative #1&lt;br/&gt;
-rule identifier2 = !digit &gt;&gt; +alnum; // Alternative #2
+rule identifier1 = alpha() &gt;&gt; *alnum(); // Alternative #1&lt;br/&gt;
+rule identifier2 = !digit() &gt;&gt; +alnum(); // Alternative #2
 &lt;/code&gt;
 &lt;/p&gt;
 * Matching a floating point number can be done with the regular expression [\[+-\]?(\[0-9\]*\\.\[0-9\]+|\[0-9\]+)](http://www.regular-expressions.info/floatingpoint.html):
 &lt;p&gt;
 &lt;code&gt;
-rule floating = -group("+-") &gt;&gt; ( ( *digit &gt;&gt; text(".") &gt;&gt; +digit ) | +digit );
+rule floating = -group("+-") &gt;&gt; ( ( *digit() &gt;&gt; text(".") &gt;&gt; +digit() ) | +digit() );
 &lt;/code&gt;
 &lt;p/&gt;
&lt;/pre&gt;</description><dc:creator xmlns:dc="http://purl.org/dc/elements/1.1/">Bjorn Reese</dc:creator><pubDate>Mon, 15 Aug 2011 17:52:32 -0000</pubDate><guid>https://sourceforge.net782a48f50d2c1b0e99e28402fe3c9e7a49d6c225</guid></item><item><title>WikiPage Home modified by Bjorn Reese</title><link>https://sourceforge.net/p/bnfa/home/Home/</link><description>&lt;pre&gt;--- v12 
+++ v13 
@@ -24,6 +24,7 @@
 &lt;tr&gt;&lt;td&gt;Character sequence&lt;/td&gt;&lt;td&gt;abc&lt;/td&gt;&lt;td&gt;&lt;code&gt;text("abc")&lt;/code&gt;&lt;/td&gt;&lt;/tr&gt;
 &lt;tr&gt;&lt;td&gt;Character group&lt;/td&gt;&lt;td&gt;[abc]&lt;/td&gt;&lt;td&gt;&lt;code&gt;group("abc")&lt;/code&gt;&lt;/td&gt;&lt;/tr&gt;
 &lt;tr&gt;&lt;td&gt;Character range&lt;/td&gt;&lt;td&gt;[a-z]&lt;/td&gt;&lt;td&gt;&lt;code&gt;range('a', 'z')&lt;/code&gt;&lt;/td&gt;&lt;/tr&gt;
+&lt;tr&gt;&lt;td&gt;Character class&lt;/td&gt;&lt;td&gt;[:alnum:]&lt;br/&gt;[:alpha:]&lt;br/&gt;...&lt;/td&gt;&lt;td&gt;&lt;code&gt;alnum()&lt;br/&gt;alpha()&lt;/code&gt;&lt;br/&gt;...&lt;/td&gt;&lt;/tr&gt;
 &lt;/td&gt;&lt;/tr&gt;
 &lt;/tbody&gt;
 &lt;/table&gt;
&lt;/pre&gt;</description><dc:creator xmlns:dc="http://purl.org/dc/elements/1.1/">Bjorn Reese</dc:creator><pubDate>Mon, 15 Aug 2011 17:48:49 -0000</pubDate><guid>https://sourceforge.net8015f0164d5a8936321b26e6319d8276c0237143</guid></item><item><title>WikiPage Home modified by Bjorn Reese</title><link>https://sourceforge.net/p/bnfa/home/Home/</link><description>&lt;pre&gt;--- v11 
+++ v12 
@@ -33,13 +33,21 @@
 * Match alphabetic letters with \[A-Za-z\]:
 &lt;p&gt;
 &lt;code&gt;
-rule alphabetic = range('A', 'Z') | range('a', 'z');
-&lt;/code&gt;
-&lt;/p&gt;
+rule alpha = range('A', 'Z') | range('a', 'z');
+&lt;/code&gt;
+&lt;/p&gt;
+* Match identifier (alphabetic character followed by zero or more alphanumeric characters):
+&lt;p&gt;
+&lt;code&gt;
+rule digit = range('0', '9');&lt;br/&gt;
+rule alnum = digit | alpha;&lt;br/&gt;
+rule identifier1 = alpha &gt;&gt; *alnum; // Alternative #1&lt;br/&gt;
+rule identifier2 = !digit &gt;&gt; +alnum; // Alternative #2
+&lt;/code&gt;
+&lt;/p&gt;
 * Matching a floating point number can be done with the regular expression [\[+-\]?(\[0-9\]*\\.\[0-9\]+|\[0-9\]+)](http://www.regular-expressions.info/floatingpoint.html):
 &lt;p&gt;
 &lt;code&gt;
-rule digit = range('0', '9');&lt;br/&gt;
 rule floating = -group("+-") &gt;&gt; ( ( *digit &gt;&gt; text(".") &gt;&gt; +digit ) | +digit );
 &lt;/code&gt;
 &lt;p/&gt;
&lt;/pre&gt;</description><dc:creator xmlns:dc="http://purl.org/dc/elements/1.1/">Bjorn Reese</dc:creator><pubDate>Mon, 15 Aug 2011 16:47:55 -0000</pubDate><guid>https://sourceforge.netb02bf53fbf19e910b52c004e142310c3940d2fe2</guid></item><item><title>WikiPage Home modified by Bjorn Reese</title><link>https://sourceforge.net/p/bnfa/home/Home/</link><description>&lt;pre&gt;--- v10 
+++ v11 
@@ -12,6 +12,7 @@
 &lt;tr&gt;&lt;td&gt;One-or-more&lt;/td&gt;&lt;td&gt;A+&lt;/td&gt;&lt;td&gt;&lt;code&gt;+A&lt;/code&gt;&lt;/td&gt;&lt;/tr&gt;
 &lt;tr&gt;&lt;td&gt;Zero-or-more&lt;/td&gt;&lt;td&gt;A*&lt;/td&gt;&lt;td&gt;&lt;code&gt;*A&lt;/code&gt;&lt;/td&gt;&lt;/tr&gt;
 &lt;tr&gt;&lt;td&gt;Exactly N times&lt;/td&gt;&lt;td&gt;A{N}&lt;/td&gt;&lt;td&gt;&lt;code&gt;A(N)&lt;/code&gt;&lt;/td&gt;&lt;/tr&gt;
+&lt;tr&gt;&lt;td&gt;At least N times&lt;/td&gt;&lt;td&gt;A{N,}&lt;/td&gt;&lt;td&gt;&lt;code&gt;A(N,infinity)&lt;/code&gt;&lt;/td&gt;&lt;/tr&gt;
 &lt;tr&gt;&lt;td&gt;Between M and N times&lt;/td&gt;&lt;td&gt;A{M,N}&lt;/td&gt;&lt;td&gt;&lt;code&gt;A(M,N)&lt;/code&gt;&lt;/td&gt;&lt;/tr&gt;
 &lt;tr&gt;&lt;td&gt;Concatenation&lt;/td&gt;&lt;td&gt;AB&lt;/td&gt;&lt;td&gt;&lt;code&gt;A &gt;&gt; B&lt;code&gt;&lt;/td&gt;&lt;/tr&gt;
 &lt;tr&gt;&lt;td&gt;Alternation&lt;/td&gt;&lt;td&gt;A | B&lt;/td&gt;&lt;td&gt;&lt;code&gt;A | B&lt;/code&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;/pre&gt;</description><dc:creator xmlns:dc="http://purl.org/dc/elements/1.1/">Bjorn Reese</dc:creator><pubDate>Sun, 14 Aug 2011 16:11:23 -0000</pubDate><guid>https://sourceforge.net69ea9fc4ca5759207baab9070bc0a5eb8ae86939</guid></item></channel></rss>