RPA Toolkit
modified the build/install system. Add doc examples.
authorMartin Stoilov <martin@rpasearch.com>
Thu, 30 Jun 2011 06:53:54 +0000 (23:53 -0700)
committerMartin Stoilov <martin@rpasearch.com>
Thu, 30 Jun 2011 06:53:54 +0000 (23:53 -0700)
24 files changed:
build/linux/build.mk
build/linux/x86_64/Makefile
doc/doxygen/rpa.cfg
phpext/prpa/config.m4
phpext/prpa/prpa.c
rjs/build/linux/rjs.mk
rjs/linux/rjsrules.c
rjs/rjsparser.c
rjs/rjsrules.h [moved from rjs/linux/rjsrules.h with 100% similarity]
rlib/build/linux/i386/Makefile
rlib/build/linux/rlib.mk
rlib/build/linux/x86_64/Makefile
rpa/build/linux/i386/Makefile
rpa/build/linux/rpa.mk
rpa/build/linux/x86_64/Makefile
rpa/doc/example/personname.c [new file with mode: 0644]
rpa/doc/example/personname/personname.c [deleted file]
rpa/rpa.h
rpa/rpadbex.h
rpa/rpastat.h
rvm/build/linux/i386/Makefile
rvm/build/linux/rvm.mk
rvm/build/linux/x86_64/Makefile
rvm/config/rvmconfig.h [deleted file]

index 7f5f3d7..ca15251 100644 (file)
@@ -29,6 +29,11 @@ clean:
        +make -C $(SRCDIR)/rgrep/build/$(OS)/$(ARCHDIR) clean
 
 install:
+       mkdir $(RPATK_INC_INSTALL)
+       mkdir $(RPATK_INC_INSTALL)/rlib
+       mkdir $(RPATK_INC_INSTALL)/rvm
+       mkdir $(RPATK_INC_INSTALL)/rpa
+       cp $(SRCDIR)/arch/$(OS)/$(ARCHDIR)/rtypes.h $(RPATK_INC_INSTALL)
        +make -C $(SRCDIR)/rlib/build/$(OS)/$(ARCHDIR) install
        +make -C $(SRCDIR)/rpa/build/$(OS)/$(ARCHDIR) install
        +make -C $(SRCDIR)/rvm/build/$(OS)/$(ARCHDIR) install
@@ -39,3 +44,7 @@ uninstall:
        +make -C $(SRCDIR)/rpa/build/$(OS)/$(ARCHDIR) uninstall
        +make -C $(SRCDIR)/rvm/build/$(OS)/$(ARCHDIR) uninstall
        +make -C $(SRCDIR)/rgrep/build/$(OS)/$(ARCHDIR) uninstall
+       rm -rf $(RPATK_INC_INSTALL)/rlib
+       rm -rf $(RPATK_INC_INSTALL)/rvm
+       rm -rf $(RPATK_INC_INSTALL)/rpa
+       rm -rf $(RPATK_INC_INSTALL)
index 42bd64e..c72041e 100644 (file)
@@ -2,5 +2,5 @@ SRCDIR = ../../..
 ARCHDIR = $(shell basename $(shell pwd))
 OS = $(shell uname | tr "[:upper:]" "[:lower:]")
 
-
+include ../include.mk
 include ../build.mk
index a135701..7501e6b 100644 (file)
@@ -104,7 +104,7 @@ EXCLUDE                =
 EXCLUDE_SYMLINKS       = NO
 EXCLUDE_PATTERNS       =
 EXCLUDE_SYMBOLS        =
-EXAMPLE_PATH           =
+EXAMPLE_PATH           = ../../rpa/doc/example
 EXAMPLE_PATTERNS       =
 EXAMPLE_RECURSIVE      = NO
 IMAGE_PATH             =
index 236d382..55421e9 100644 (file)
@@ -71,6 +71,7 @@ if test "$PHP_PRPA" != "no"; then
 
 
   # --with-rpatk -> add include path
+  PHP_ADD_INCLUDE($RPATK_DIR)
   PHP_ADD_INCLUDE($ARCH_DIR)
   PHP_ADD_INCLUDE($RLIB_DIR)
   PHP_ADD_INCLUDE($RVM_DIR)
index a493b6f..918d72e 100644 (file)
@@ -25,7 +25,7 @@
 #include "php.h"
 #include "php_ini.h"
 #include "ext/standard/info.h"
-#include "php_prpa/rpa.h"
+#include "php_prpa.h"
 #include "TSRM/TSRM.h"
 #include "rpa/rpadbex.h"
 #include "rpa/rpastat.h"
index 9eceb6b..70581b5 100644 (file)
@@ -6,7 +6,7 @@ RJS_LIB = $(OUTDIR)/librjs.a
 RJS_SO = $(OUTDIR)/librjs.so.1.0
 RJS_EXEC = $(OUTDIR)/rjsexec
 
-CFLAGS += -I$(SRCDIR) -I$(RVM_SRCDIR)/config -I$(SRCDIR)/rlib -I$(RJS_SRCDIR)/linux
+CFLAGS += -I$(SRCDIR)
 
 LIBS = -L$(RLIB_SRCDIR)/build/$(OS)/$(ARCHDIR)/out 
 LIBS += -L$(RVM_SRCDIR)/build/$(OS)/$(ARCHDIR)/out 
index 7677abb..49daed3 100644 (file)
@@ -1,4 +1,4 @@
-#include "rjs/linux/rjsrules.h"
+#include "rjs/rjsrules.h"
 
 
 extern char _binary_____________rjs_ecma262_rpa_start[];
index 560466b..eb1f97b 100644 (file)
@@ -1,5 +1,5 @@
 #include "rlib/rmem.h"
-#include "rjs/linux/rjsrules.h"
+#include "rjs/rjsrules.h"
 #include "rjs/rjsparser.h"
 #include "rjs/rjserror.h"
 
similarity index 100%
rename from rjs/linux/rjsrules.h
rename to rjs/rjsrules.h
index a2c8f9f..c4f0ea7 100644 (file)
@@ -27,5 +27,5 @@ endif
 CFLAGS += $(MACH) $(INCLUDE)
 LDFLAGS := $(MACH)
 
-
+include $(SRCDIR)/build/linux/include.mk
 include ../rlib.mk
index 16dcd2a..c248e69 100644 (file)
@@ -1,4 +1,4 @@
-RTK_LIB_INSTALL=/usr/lib
+RPATK_LIB_INSTALL=/usr/lib
 RLIB_SRCDIR = $(SRCDIR)/rlib
 RLIB_SO_VERSION = 2.0
 RLIB_SO_NAME = librlib.so
@@ -59,9 +59,12 @@ clean:
        @rm -f $(SRCDIR)/*~
 
 install:
-       cp $(TARGET_RLIB_SO) $(RTK_LIB_INSTALL)
-       cp $(TARGET_RLIB_LIB) $(RTK_LIB_INSTALL)
+       cp $(TARGET_RLIB_SO) $(RPATK_LIB_INSTALL)
+       cp $(TARGET_RLIB_LIB) $(RPATK_LIB_INSTALL)
+       cp $(RLIB_SRCDIR)/*.h $(RPATK_INC_INSTALL)/rlib
+
 
 uninstall:
-       rm $(RTK_LIB_INSTALL)/$(RLIB_LIB)
-       rm $(RTK_LIB_INSTALL)/$(RLIB_SO)
+       rm $(RPATK_LIB_INSTALL)/$(RLIB_LIB)
+       rm $(RPATK_LIB_INSTALL)/$(RLIB_SO)
+       rm $(RPATK_INC_INSTALL)/rlib/*
index a2c8f9f..c4f0ea7 100644 (file)
@@ -27,5 +27,5 @@ endif
 CFLAGS += $(MACH) $(INCLUDE)
 LDFLAGS := $(MACH)
 
-
+include $(SRCDIR)/build/linux/include.mk
 include ../rlib.mk
index c72fee8..db1545e 100644 (file)
@@ -21,5 +21,5 @@ endif
 CFLAGS += $(MACH) $(INCLUDE)
 LDFLAGS := $(MACH)
 
-
+include ../../../../build/linux/include.mk
 include ../rpa.mk
index 2a96973..2d1601f 100644 (file)
@@ -1,4 +1,3 @@
-RTK_LIB_INSTALL=/usr/lib
 RPA_SRCDIR = $(SRCDIR)/rpa
 RPA_LIB = librpa.a
 RPA_SO_VERSION = 2.0
@@ -54,7 +53,9 @@ clean:
 install:
        cp $(TARGET_RPA_SO) $(RTK_LIB_INSTALL)
        cp $(TARGET_RPA_LIB) $(RTK_LIB_INSTALL)
+       cp $(RPA_SRCDIR)/*.h $(RPATK_INC_INSTALL)/rpa
 
 uninstall:
        rm $(RTK_LIB_INSTALL)/$(RPA_LIB)
        rm $(RTK_LIB_INSTALL)/$(RPA_SO)
+       rm $(RPATK_INC_INSTALL)/rpa/*
index c72fee8..c21e246 100644 (file)
@@ -21,5 +21,5 @@ endif
 CFLAGS += $(MACH) $(INCLUDE)
 LDFLAGS := $(MACH)
 
-
+include $(SRCDIR)/build/linux/include.mk
 include ../rpa.mk
diff --git a/rpa/doc/example/personname.c b/rpa/doc/example/personname.c
new file mode 100644 (file)
index 0000000..732104c
--- /dev/null
@@ -0,0 +1,68 @@
+#include <stdio.h>
+#include <string.h>
+#include "rpa/rpa.h"
+
+/*
+ * This example shows the sequence of RPA APIs to parse an input. No error checking is done,
+ * to keep the example simple and make the API call sequence easy to follow.
+ *
+ * To compile and run this sample on Linux:
+ * 1. Install Rpa/Tk:
+ * # cd rpatk/build/linux/x86_64
+ * # make
+ * # make install (as superuser)
+ *
+ * 2. Build this example:
+ * # gcc -o personname personname.c -I/usr/include/rpatk -lrpa -lrvm -lrlib -lm
+ *
+ * 3. Run it, and you should get:
+ * # ./personname
+ * RPA_RECORD_START   (ID: 1)  name: John M. Smith
+ * RPA_RECORD_START   (ID: 2)  first: John
+ * RPA_RECORD_END     (ID: 2)  first: John
+ * RPA_RECORD_START   (ID: 0)  middle: M.
+ * RPA_RECORD_END     (ID: 0)  middle: M.
+ * RPA_RECORD_START   (ID: 3)  last: Smith
+ * RPA_RECORD_END     (ID: 3)  last: Smith
+ * RPA_RECORD_END     (ID: 1)  name: John M. Smith
+ */
+int main(int argc, char *argv[])
+{
+       rlong i;
+       rpadbex_t *dbex;
+       rpastat_t *stat;
+       rparecord_t *record;
+       rarray_t *records = rpa_records_create();
+
+       char name[] = "John M. Smith";
+       char bnf[] = 
+               "#!emitid name 1\n"
+               "#!emitid first 2\n"
+               "#!emitid last 3\n"
+               "\n"
+               "first  ::= [A-Za-z]+\n"
+               "middle ::= [A-Za-z]+ '.'?\n"
+               "last   ::= [A-Za-z]+\n"
+               "name   ::= <first> ' ' <middle> ' ' <last>\n";
+       dbex = rpa_dbex_create();
+       rpa_dbex_open(dbex);
+       rpa_dbex_load(dbex, bnf, strlen(bnf));
+       rpa_dbex_close(dbex);
+       rpa_dbex_compile(dbex);
+       stat = rpa_stat_create(dbex, RPA_DEFAULT_STACKSIZE);
+       rpa_stat_parse(stat, rpa_dbex_last(dbex), RPA_ENCODING_UTF8, name, name, name+sizeof(name), records);
+       rpa_stat_destroy(stat);
+       rpa_dbex_destroy(dbex);
+       for (i = 0; i < rpa_records_length(records); i++) {
+               record = rpa_records_slot(records, i);
+               if (record->type == RPA_RECORD_START)
+                       fprintf(stdout, "RPA_RECORD_START   (ID: %d)  ", record->ruleuid);
+               if (record->type == RPA_RECORD_END)
+                       fprintf(stdout, "RPA_RECORD_END     (ID: %d)  ", record->ruleuid);
+               fprintf(stdout, "%s: ", record->rule);
+               fwrite(record->input, 1, record->inputsiz, stdout);
+               fprintf(stdout, "\n");
+       }
+       rpa_records_destroy(records);
+       return 0;
+}
diff --git a/rpa/doc/example/personname/personname.c b/rpa/doc/example/personname/personname.c
deleted file mode 100644 (file)
index 2401181..0000000
+++ /dev/null
@@ -1,23 +0,0 @@
-#include <stdio.h>
-#include "rpa/rpa/rpa.h"
-
-
-int main(int argc, char *argv[])
-{
-       rpadbex_t *dbex;
-       rpastat_t *stat;
-       char name[] = "John M. Smith";
-       char bnf[] = 
-               "first  ::= [A-Za-z]+\n"
-               "middle ::= [A-Za-z]+ '.'?\n"
-               "last   ::= [A-Za-z]+\n"
-               "name   ::= <first> ' ' <middle> ' ' <last>\n";
-
-       dbex = rpa_dbex_create();
-       rpa_dbex_load(dbex, bnf);
-       rpa_dbex_close(dbex);
-       rpa_dbex_compile(dbex);
-
-
-       return 0;
-}
index ad78f71..1e4fda4 100644 (file)
--- a/rpa/rpa.h
+++ b/rpa/rpa.h
@@ -21,6 +21,7 @@
 #ifndef _RPA_H_
 #define _RPA_H_
 
+#include "rpa/rparecord.h"
 #include "rpa/rpaerror.h"
 #include "rpa/rpadbex.h"
 #include "rpa/rpastat.h"
index 4615275..0613795 100644 (file)
  *
  * <h2>Synopsis</h2>
  * The following APIs are used to Create, Compile, Enumerate, etc. BNF productions.
+ *
+ * \example personname.c
+ * This is an example how to use rpadbex_t APIs
+
  */
 
 #ifndef _RPADBEX_H_
@@ -45,6 +49,11 @@ extern "C" {
  * \brief Database of BNF productions (The BNF schema)
  */
 typedef struct rpadbex_s rpadbex_t;
+/**
+ * \example personname.c
+ * This is an example how to use rpadbex_t
+ */
+
 
 /**
  * \typedef rparule_t
@@ -345,7 +354,7 @@ rinteger rpa_dbex_dumptree(rpadbex_t *dbex, rparule_t rid);
 rinteger rpa_dbex_dumpcode(rpadbex_t* dbex, rparule_t rid);
 
 
-/*
+/**
  * \brief Printeger the AST of the parsed BNF productions.
  *
  * This function is a debug helper, you shouldn't need it.
@@ -356,7 +365,7 @@ rinteger rpa_dbex_dumpcode(rpadbex_t* dbex, rparule_t rid);
  */
 rinteger rpa_dbex_dumprecords(rpadbex_t *dbex);
 
-/*
+/**
  * \brief Printeger the content of BNF productions database.
  *
  * Enumerate all BNF productions and printeger them in a text format.
@@ -365,7 +374,7 @@ rinteger rpa_dbex_dumprecords(rpadbex_t *dbex);
  */
 rinteger rpa_dbex_dumpproductions(rpadbex_t *dbex);
 
-/*
+/**
  * \brief Printeger debug information about the state of the BNF productions database.
  *
  * This is a debug helper, you shouldn't need it.
@@ -374,7 +383,7 @@ rinteger rpa_dbex_dumpproductions(rpadbex_t *dbex);
  */
 rinteger rpa_dbex_dumpinfo(rpadbex_t *dbex);
 
-/*
+/**
  * \brief Printeger the production user IDs in a format suitable to be
  * included in source code.
  *
@@ -383,6 +392,9 @@ rinteger rpa_dbex_dumpinfo(rpadbex_t *dbex);
  */
 rinteger rpa_dbex_dumpuids(rpadbex_t *dbex);
 
+/**
+ * \example personname.c
+ */
 
 
 #ifdef __cplusplus
index 6d6658a..e7cfa53 100644 (file)
@@ -205,6 +205,11 @@ rlong rpa_stat_lasterror(rpastat_t *stat);
 rlong rpa_stat_lasterrorinfo(rpastat_t *stat, rpa_errinfo_t *errinfo);
 
 
+/**
+ * \example personname.c
+ */
+
+
 #ifdef __cplusplus
 }
 #endif
index dc78299..a2e59b9 100644 (file)
@@ -26,5 +26,5 @@ endif
 CFLAGS += $(MACH) $(INCLUDE)
 LDFLAGS := $(MACH)
 
-
+include $(SRCDIR)/build/linux/include.mk
 include ../rvm.mk
index 069a073..f77603d 100644 (file)
@@ -8,8 +8,6 @@ TARGET_RVM_LIB = $(OUTDIR)/$(RVM_LIB)
 TARGET_RVM_SO = $(OUTDIR)/$(RVM_SO)
 
 CFLAGS += -I$(SRCDIR)
-CFLAGS += -I$(RVM_SRCDIR)/config
-
 
 RVM_OBJECTS += $(OUTDIR)/rvmcpu.o 
 RVM_OBJECTS += $(OUTDIR)/rvmoperator.o
@@ -79,7 +77,9 @@ clean:
 install:
        cp $(TARGET_RVM_SO) $(RTK_LIB_INSTALL)
        cp $(TARGET_RVM_LIB) $(RTK_LIB_INSTALL)
+       cp $(RVM_SRCDIR)/*.h $(RPATK_INC_INSTALL)/rvm
 
 uninstall:
        rm $(RTK_LIB_INSTALL)/$(RVM_LIB)
        rm $(RTK_LIB_INSTALL)/$(RVM_SO)
+       rm $(RPATK_INC_INSTALL)/rvm/*
index dc78299..a2e59b9 100644 (file)
@@ -26,5 +26,5 @@ endif
 CFLAGS += $(MACH) $(INCLUDE)
 LDFLAGS := $(MACH)
 
-
+include $(SRCDIR)/build/linux/include.mk
 include ../rvm.mk
diff --git a/rvm/config/rvmconfig.h b/rvm/config/rvmconfig.h
deleted file mode 100644 (file)
index 582de1f..0000000
+++ /dev/null
@@ -1,36 +0,0 @@
-/*
- *  Regular Pattern Analyzer (RPA)
- *  Copyright (c) 2009-2010 Martin Stoilov
- *
- *  This program is free software: you can redistribute it and/or modify
- *  it under the terms of the GNU General Public License as published by
- *  the Free Software Foundation, either version 3 of the License, or
- *  (at your option) any later version.
- *
- *  This program is distributed in the hope that it will be useful,
- *  but WITHOUT ANY WARRANTY; without even the implied warranty of
- *  MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
- *  GNU General Public License for more details.
- *
- *  You should have received a copy of the GNU General Public License
- *  along with this program.  If not, see <http://www.gnu.org/licenses/>.
- *
- *  Martin Stoilov <martin@rpasearch.com>
- */
-
-#ifndef _RVMCONFIG_H_
-#define _RVMCONFIG_H_
-
-
-#define RVM_USERDATA
-#define RVM_REG_SIZE (1 << 3)
-
-typedef unsigned long int rvm_uint_t;
-typedef long int rvm_int_t;
-typedef void* rvm_pointer_t;
-typedef unsigned char rvm_u8_t;
-typedef unsigned short rvm_u16_t;
-typedef unsigned int rvm_u32_t;
-
-
-#endif