<?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/anyparser/wiki/Home/</link><description>Recent changes to Home</description><atom:link href="https://sourceforge.net/p/anyparser/wiki/Home/feed" rel="self"/><language>en</language><lastBuildDate>Tue, 27 Sep 2016 20:15:38 -0000</lastBuildDate><atom:link href="https://sourceforge.net/p/anyparser/wiki/Home/feed" rel="self" type="application/rss+xml"/><item><title>Home modified by Joop Eggen</title><link>https://sourceforge.net/p/anyparser/wiki/Home/</link><description>&lt;div class="markdown_content"&gt;&lt;pre&gt;--- v6
+++ v7
@@ -5,6 +5,8 @@
 I for once wanted to have unproblematic easy tool, at which anything can be thrown, and wich works.
 Unproblematic grammars, simple parsing, understandable process,
 A very elegant parsing of even ambiguous grammars. And the code must be short and readable.
+
+Notice that the git version is most recent by far.

             Joop  Eggen, 2016-09-18

&lt;/pre&gt;
&lt;/div&gt;</description><dc:creator xmlns:dc="http://purl.org/dc/elements/1.1/">Joop Eggen</dc:creator><pubDate>Tue, 27 Sep 2016 20:15:38 -0000</pubDate><guid>https://sourceforge.netd52d52fc9af906bdfb489fb684aa6dc8775c3501</guid></item><item><title>Home modified by Joop Eggen</title><link>https://sourceforge.net/p/anyparser/wiki/Home/</link><description>&lt;div class="markdown_content"&gt;&lt;pre&gt;--- v5
+++ v6
@@ -8,7 +8,7 @@

             Joop  Eggen, 2016-09-18

-!! Hello, World!
+## Hello, World!

 So let us start with a demo. First a simple expression grammar. For the following:

@@ -20,16 +20,16 @@
     :::java
         Grammar exprGrammar = new Grammar() {

-            Symbol NUMBER = regex("NUMBER", "\\d+");
-            Symbol IDENT = regex("IDENT", "\\p{L}[_\\p{L}\\p{M}\\d]*");
-            Symbol LBRACE = regex("LBRACE", "\\(");
-            Symbol RBRACE = regex("RBRACE", "\\)");
-            Symbol ADDOP = regex("ADDOP", "\\+|-");
-            Symbol MULOP = regex("MULOP", "\\*|/|%|\\^");
+            Symbol NUMBER = regex("\\d+");
+            Symbol IDENT = regex "\\p{L}[_\\p{L}\\p{M}\\d]*");
+            Symbol LBRACE = regex("\\(");
+            Symbol RBRACE = regex("\\)");
+            Symbol ADDOP = regex("\\+|-");
+            Symbol MULOP = regex "\\*|/|%|\\^");

-            Symbol factor = nonterminal("factor");
-            Symbol term = nonterminal("term");
-            Symbol expr = nonterminal("expr");
+            Symbol factor = nonterminal();
+            Symbol term = nonterminal();
+            Symbol expr = nonterminal();

             {
                 define(start,
&lt;/pre&gt;
&lt;/div&gt;</description><dc:creator xmlns:dc="http://purl.org/dc/elements/1.1/">Joop Eggen</dc:creator><pubDate>Tue, 20 Sep 2016 19:40:18 -0000</pubDate><guid>https://sourceforge.net8d84df55b94be7023866248812324135b8a80fd4</guid></item><item><title>Home modified by Joop Eggen</title><link>https://sourceforge.net/p/anyparser/wiki/Home/</link><description>&lt;div class="markdown_content"&gt;&lt;pre&gt;--- v4
+++ v5
@@ -37,16 +37,16 @@

                 define(factor,
                         or( NUMBER,
-                                IDENT,
-                                seq(LBRACE, expr, RBRACE) ));
+                            IDENT,
+                            seq(LBRACE, expr, RBRACE) ));

                 define(term,
                         or( seq(factor, MULOP, term),
-                                factor ));
+                            factor ));

                 define(expr,
                         or( seq(term, ADDOP, expr),
-                                term ));
+                            term ));
             }
         };

&lt;/pre&gt;
&lt;/div&gt;</description><dc:creator xmlns:dc="http://purl.org/dc/elements/1.1/">Joop Eggen</dc:creator><pubDate>Sun, 18 Sep 2016 17:29:16 -0000</pubDate><guid>https://sourceforge.neta8f422bd28421df72a8d8bafc21bfbe849883174</guid></item><item><title>Home modified by Joop Eggen</title><link>https://sourceforge.net/p/anyparser/wiki/Home/</link><description>&lt;div class="markdown_content"&gt;&lt;pre&gt;--- v3
+++ v4
@@ -7,8 +7,7 @@
 A very elegant parsing of even ambiguous grammars. And the code must be short and readable.

             Joop  Eggen, 2016-09-18
-            joop_eggen@yahoo.de
-
+ 
 !! Hello, World!

 So let us start with a demo. First a simple expression grammar. For the following:
&lt;/pre&gt;
&lt;/div&gt;</description><dc:creator xmlns:dc="http://purl.org/dc/elements/1.1/">Joop Eggen</dc:creator><pubDate>Sun, 18 Sep 2016 17:28:26 -0000</pubDate><guid>https://sourceforge.net168d9652d44fbd5b66b1b1af6feb6aee22fc7efc</guid></item><item><title>Home modified by Joop Eggen</title><link>https://sourceforge.net/p/anyparser/wiki/Home/</link><description>&lt;div class="markdown_content"&gt;&lt;pre&gt;--- v2
+++ v3
@@ -1,4 +1,5 @@
-!!! Grammar and Parser - the AnyParser library 1.0
+# Grammar and Parser
+## - the AnyParser library 1.0

 Having a background in programming languages, grammars, parsers, compiler construction
 I for once wanted to have unproblematic easy tool, at which anything can be thrown, and wich works.
@@ -12,10 +13,12 @@

 So let us start with a demo. First a simple expression grammar. For the following:

+    :::java
     10 + xscale * (6 - diff) + 30

 The resulting grammar is unsurprising:

+    :::java
         Grammar exprGrammar = new Grammar() {

             Symbol NUMBER = regex("NUMBER", "\\d+");
@@ -31,36 +34,27 @@

             {
                 define(start,
-                        seq(
-                                expr,
-                                END
-                        ));
+                        seq( expr, END ));

                 define(factor,
-                        or(
-                                NUMBER,
+                        or( NUMBER,
                                 IDENT,
-                                seq(LBRACE, expr, RBRACE)
-                        ));
+                                seq(LBRACE, expr, RBRACE) ));

                 define(term,
-                        or(
-                                seq(factor, MULOP, term),
-                                factor
-                        ));
+                        or( seq(factor, MULOP, term),
+                                factor ));

                 define(expr,
-                        or(
-                                seq(term, ADDOP, expr),
-                                term
-                        ));
+                        or( seq(term, ADDOP, expr),
+                                term ));
             }
         };

-&lt;var&gt;start&lt;/var&gt; is default start rule of the grammar, in the literature
-often an S. &lt;var&gt;seq&lt;/var&gt; stands for &lt;i&gt;sequence&lt;/i&gt;.
-There is a redundance of variable name, &lt;var&gt;NUMBER&lt;/var&gt;, and label,
-&lt;var&gt;"NUMBER"&lt;/var&gt;, but it does not seem worth using reflection to
+&lt;code&gt;start&lt;/code&gt; is default start rule of the grammar, in the literature
+often an S. &lt;code&gt;seq&lt;/code&gt; stands for _sequence_.
+There is a redundance of variable name, &lt;code&gt;NUMBER&lt;/code&gt;, and label,
+&lt;code&gt;"NUMBER"&lt;/code&gt;, but it does not seem worth using reflection to
 solve this.

 The parse tree is simple too. One note: a NUMBER token in the tree
@@ -87,7 +81,7 @@
     │       └─ expr ── term ── factor ── NUMBER • “ 30”
     └─ END • “  ”            

-!! The library
+## The library

 The library can deal with ambiguous grammars, seemingly infinite
 recursion, the order of or-alternatives. It also is very efficient.
@@ -100,14 +94,14 @@
 I have used many packaged and numbered them to have the classes ordered
 by bottom layer to top layer. The package paths will contain:

-- grammar
-- parser
-- demos
+* grammar
+* parser
+* demos

 The iibrary should be highly readable. It has no dependencies on
 other libraries. The javadoc is complete. FindBugs went over the sources.

-!! Collaboration, Feedback, and simply Hello
+## Collaboration, Feedback, and simply Hello

 I am an experienced developer, and quite approachable. You can contact
 me in Esperanto, Dutch, English and German. I am aware
&lt;/pre&gt;
&lt;/div&gt;</description><dc:creator xmlns:dc="http://purl.org/dc/elements/1.1/">Joop Eggen</dc:creator><pubDate>Sun, 18 Sep 2016 17:25:36 -0000</pubDate><guid>https://sourceforge.net2ee839c6cd29d29dc9b49fd5dbf897fcf3ca7047</guid></item><item><title>Home modified by Joop Eggen</title><link>https://sourceforge.net/p/anyparser/wiki/Home/</link><description>&lt;div class="markdown_content"&gt;&lt;pre&gt;--- v1
+++ v2
@@ -1,6 +1,125 @@
-Welcome to your wiki!
+!!! Grammar and Parser - the AnyParser library 1.0

-This is the default page, edit it as you see fit. To add a new page simply reference it within brackets, e.g.: [SamplePage].
+Having a background in programming languages, grammars, parsers, compiler construction
+I for once wanted to have unproblematic easy tool, at which anything can be thrown, and wich works.
+Unproblematic grammars, simple parsing, understandable process,
+A very elegant parsing of even ambiguous grammars. And the code must be short and readable.
+
+            Joop  Eggen, 2016-09-18
+            joop_eggen@yahoo.de
+
+!! Hello, World!
+
+So let us start with a demo. First a simple expression grammar. For the following:
+
+    10 + xscale * (6 - diff) + 30
+
+The resulting grammar is unsurprising:
+
+        Grammar exprGrammar = new Grammar() {
+            
+            Symbol NUMBER = regex("NUMBER", "\\d+");
+            Symbol IDENT = regex("IDENT", "\\p{L}[_\\p{L}\\p{M}\\d]*");
+            Symbol LBRACE = regex("LBRACE", "\\(");
+            Symbol RBRACE = regex("RBRACE", "\\)");
+            Symbol ADDOP = regex("ADDOP", "\\+|-");
+            Symbol MULOP = regex("MULOP", "\\*|/|%|\\^");
+
+            Symbol factor = nonterminal("factor");
+            Symbol term = nonterminal("term");
+            Symbol expr = nonterminal("expr");
+
+            {
+                define(start,
+                        seq(
+                                expr,
+                                END
+                        ));
+
+                define(factor,
+                        or(
+                                NUMBER,
+                                IDENT,
+                                seq(LBRACE, expr, RBRACE)
+                        ));
+
+                define(term,
+                        or(
+                                seq(factor, MULOP, term),
+                                factor
+                        ));
+
+                define(expr,
+                        or(
+                                seq(term, ADDOP, expr),
+                                term
+                        ));
+            }
+        };
+
+&lt;var&gt;start&lt;/var&gt; is default start rule of the grammar, in the literature
+often an S. &lt;var&gt;seq&lt;/var&gt; stands for &lt;i&gt;sequence&lt;/i&gt;.
+There is a redundance of variable name, &lt;var&gt;NUMBER&lt;/var&gt;, and label,
+&lt;var&gt;"NUMBER"&lt;/var&gt;, but it does not seem worth using reflection to
+solve this.
+
+The parse tree is simple too. One note: a NUMBER token in the tree
+is shown with white space preceding it, but its real text contains
+only the digits.
+
+   start • “   10 + xscale * (6 - diff) + 30  ”
+    ├─ expr • “10 + xscale * (6 - diff) + 30”
+    │   ├─ term ── factor ── NUMBER • “10”
+    │   ├─ ADDOP • “ +”
+    │   └─ expr • “ xscale * (6 - diff) + 30”
+    │       ├─ term • “xscale * (6 - diff)”
+    │       │   ├─ factor ── IDENT • “xscale”
+    │       │   ├─ MULOP • “ *”
+    │       │   └─ term • “ (6 - diff)”
+    │       │       └─ factor • “(6 - diff)”
+    │       │           ├─ LBRACE • “(”
+    │       │           ├─ expr • “6 - diff”
+    │       │           │   ├─ term ── factor ── NUMBER • “6”
+    │       │           │   ├─ ADDOP • “ -”
+    │       │           │   └─ expr ── term ── factor ── IDENT • “ diff”
+    │       │           └─ RBRACE • “)”
+    │       ├─ ADDOP • “ +”
+    │       └─ expr ── term ── factor ── NUMBER • “ 30”
+    └─ END • “  ”            
+
+!! The library
+
+The library can deal with ambiguous grammars, seemingly infinite
+recursion, the order of or-alternatives. It also is very efficient.
+The error handling is primitive on the other hand. It can only
+deal with one error at the time, and will yield the farthest failed,
+highest symbol as the expected construct. Contextual or corrective
+error handling is missing but certainly feasible.
+
+29 KB jar, java 8, maven, git, 18 classes from which 6 are public API.
+I have used many packaged and numbered them to have the classes ordered
+by bottom layer to top layer. The package paths will contain:
+
+- grammar
+- parser
+- demos
+
+The iibrary should be highly readable. It has no dependencies on
+other libraries. The javadoc is complete. FindBugs went over the sources.
+
+!! Collaboration, Feedback, and simply Hello
+
+I am an experienced developer, and quite approachable. You can contact
+me in Esperanto, Dutch, English and German. I am aware
+that first with the application of such a library the real work starts.
+Here the parser delivers a parse tree of a predefined class. Which is
+just the start. Also the terse coding style and the (for now) absence
+of unit tests should not deter you. I do write unit tests and do TDD.
+
+As of this moment, 2016-09-18, I put the first version up to the
+public. Before using the library myself intensively I will not search
+publicity. So I wonder how many will find this product.
+

 The wiki uses [Markdown](/p/anyparser/wiki/markdown_syntax/) syntax.

&lt;/pre&gt;
&lt;/div&gt;</description><dc:creator xmlns:dc="http://purl.org/dc/elements/1.1/">Joop Eggen</dc:creator><pubDate>Sun, 18 Sep 2016 17:16:20 -0000</pubDate><guid>https://sourceforge.netd296fc3f92317fb2267f7818072ceecbd0163f2c</guid></item><item><title>Home modified by Joop Eggen</title><link>https://sourceforge.net/p/anyparser/wiki/Home/</link><description>&lt;div class="markdown_content"&gt;&lt;p&gt;Welcome to your wiki!&lt;/p&gt;
&lt;p&gt;This is the default page, edit it as you see fit. To add a new page simply reference it within brackets, e.g.: &lt;span&gt;[SamplePage]&lt;/span&gt;.&lt;/p&gt;
&lt;p&gt;The wiki uses &lt;a class="" href="/p/anyparser/wiki/markdown_syntax/"&gt;Markdown&lt;/a&gt; syntax.&lt;/p&gt;
&lt;p&gt;&lt;/p&gt;&lt;h6&gt;Project Members:&lt;/h6&gt;
	&lt;ul class="md-users-list"&gt;
		&lt;li&gt;&lt;a href="/u/userid-1676902/"&gt;Joop Eggen&lt;/a&gt; (admin)&lt;/li&gt;
		
	&lt;/ul&gt;&lt;br/&gt;
&lt;p&gt;&lt;span class="download-button-57deb79590954761a4767089" style="margin-bottom: 1em; display: block;"&gt;&lt;/span&gt;&lt;/p&gt;&lt;p&gt;&lt;/p&gt;&lt;/div&gt;</description><dc:creator xmlns:dc="http://purl.org/dc/elements/1.1/">Joop Eggen</dc:creator><pubDate>Sun, 18 Sep 2016 15:49:41 -0000</pubDate><guid>https://sourceforge.netdb34c27e732704cdb916654b164416665d23ed09</guid></item></channel></rss>