RPA Toolkit
doc changes
authorMartin Stoilov <martin@rpasearch.com>
Sun, 3 Jul 2011 21:26:01 +0000 (14:26 -0700)
committerMartin Stoilov <martin@rpasearch.com>
Sun, 3 Jul 2011 21:26:01 +0000 (14:26 -0700)
rpa/doc/main.txt
rpa/doc/rpa_bnf.txt
rpa/doc/rpa_main.txt

index c7fc8f5..82677a2 100644 (file)
@@ -4,7 +4,6 @@
 @mainpage Rpa/Tk Documentation
 - @subpage rpatk_build
 - @subpage rpa_main "Regular Pattern Analyzer"
-       - @subpage rpa_intro
        - @subpage rpa_bnf      
        - @subpage rpa_dbex
 */
index 0e95a4f..ae96f0e 100644 (file)
@@ -1,3 +1,25 @@
 /** \page rpa_bnf BNF Syntax.
 
+@section intro Introduction
+A BNF specification or schema is a set of derivation rules, written as:
+
+@code
+rulename ::= __expression__
+@endcode
+
+where rulename is a nonterminal, and the __expression__ consists of one or more sequences of rulenames or terminals.
+This is an example BNF specification of a postal address:
+
+@code
+name_part      ::= <personal_part> <last_name> <opt_jr_part> | <personal_part> <name_part>
+personal_part  ::= <first_name> | <initial> "." 
+street_address ::= <house_num> <street_name> <opt_apt_num>
+zip_part       ::= <town_name> "," <state_code> <ZIP_code>
+opt_jr_part    ::= "Sr." | "Jr." | <roman_numeral> | ""
+postal_address ::= <name_part> <street_address> <zip_part>
+@endcode
+
+This example is not complete, because there still some nonterminals that are not specified. It should just give you an idea
+how to create a sequence of rulenames to build a full BNF specification.
+
 */
index e909296..ae32311 100644 (file)
@@ -1,4 +1,36 @@
 /** \page rpa_main "Regular Pattern Analyzer (RPA)"
 Regular Pattern Analyzer (RPA) is a bottom-up, recursive parser. 
+The input grammar notation is Backus–Naur Form (BNF) and the produced output is a browsable Abstract Syntax Tree (AST).
+The grammar allows Regular Expressions, so the parser can also be used as RegEx or search engine. The execution
+engine supports muti-threading and it can parse multiple input streams simultaneously.
+
+\section features Features
+ - Backus–Naur Form (BNF)
+
+ - Produces a browsable Abstract Syntax Tree
+ - Regular Expressions
+ - Input Encodings: UTF8, UTF16
+ - Case sensitive/insensitive searching or parsing
+ - Left-Recursive expressions (direct and indirect)
+
+ - Right-Recursive expressions (direct and indirect)
+
+ - Multi-Threading.
+
+Support for recursive expressions is important for parsing computer languages, especially the Left-Recursion.
+The RPA parser is capable to handle both direct and indirect left and right recursive expressions.
+It uses iterative algorithm to handle Left-Recursion, because it is impossible to handle Left-Recursive expressions using recursion.  
+Left-Recursive expressions produce left associativity and that is what you would want to use for parsing mathematical expressions. Math operations normally 
+have left associativity. For example, consider the expression 7 − 4 + 2. The result could be either (7 − 4) + 2 = 5 or 7 − (4 + 2) = 1. 
+The former result corresponds to the case when + and − are left-associative, the latter to when + and - are right-associative.
+
+\section design Design
+RPA analyzes the BNF schema and builds a parsing tree. Then the parsing tree is compiled to byte code. The byte code is run in a
+virtual machine to parse the input stream and produce an Abstract Syntax Tree (AST). Once the schema is compiled to byte code, the
+code can be run in multiple VMs (threads), the parser naturally supports multi-threading. 
 
 */
\ No newline at end of file