summaryrefslogtreecommitdiff
path: root/src/tools/c/examples
diff options
context:
space:
mode:
Diffstat (limited to 'src/tools/c/examples')
-rw-r--r--src/tools/c/examples/bronzeage/Makefile47
-rw-r--r--src/tools/c/examples/bronzeage/bronzeage-test.c31
2 files changed, 78 insertions, 0 deletions
diff --git a/src/tools/c/examples/bronzeage/Makefile b/src/tools/c/examples/bronzeage/Makefile
new file mode 100644
index 000000000..67367920a
--- /dev/null
+++ b/src/tools/c/examples/bronzeage/Makefile
@@ -0,0 +1,47 @@
+
+GFDIR=../../../../../
+
+LIBGFCC_INCLUDES = $(GFDIR)/lib/c
+LIBGFCC_LIBDIR = $(GFDIR)/lib/c
+
+GFCC2C = $(GFDIR)/bin/gfcc2c
+
+TEST_PROG = bronzeage-test
+
+GRAMMAR_DIR = $(GFDIR)/examples/bronzeage
+
+GRAMMAR_MODULES = Bronzeage BronzeageEng BronzeageSwe
+
+GRAMMAR_H_FILES = $(addsuffix .h, $(GRAMMAR_MODULES))
+GRAMMAR_C_FILES = $(addsuffix .c, $(GRAMMAR_MODULES))
+GRAMMAR_O_FILES = $(addsuffix .o, $(GRAMMAR_MODULES))
+
+CFLAGS += -O2
+CPPFLAGS += -I$(LIBGFCC_INCLUDES)
+
+.PHONY: clean
+
+all: bronzeage.gfcc $(TEST_PROG)
+
+$(TEST_PROG): $(GRAMMAR_O_FILES) $(TEST_PROG).o $(LIBGFCC_LIBDIR)/libgfcc.a
+
+$(TEST_PROG).o: $(GRAMMAR_H_FILES) $(GRAMMAR_O_FILES) $(TEST_PROG).c
+
+$(GRAMMAR_H_FILES) $(GRAMMAR_C_FILES): $(GFCC2C) bronzeage.gfcc
+ $(GFCC2C) bronzeage.gfcc
+
+bronzeage.gfcc:
+ echo "i -optimize=all $(GRAMMAR_DIR)/BronzeageEng.gf" > mkBronzeage.gfs
+ echo "i -optimize=all $(GRAMMAR_DIR)/BronzeageSwe.gf" >> mkBronzeage.gfs
+ echo "s" >> mkBronzeage.gfs
+ echo "pm -printer=gfcc | wf bronzeage.gfcc" >> mkBronzeage.gfs
+ cat mkBronzeage.gfs | gf
+ rm -f mkBronzeage.gfs
+
+clean:
+ -rm -f $(TEST_PROG) *.o
+
+
+distclean: clean
+ -rm -f $(GRAMMAR_H_FILES) $(GRAMMAR_C_FILES)
+ -rm -f bronzeage.gfcc
diff --git a/src/tools/c/examples/bronzeage/bronzeage-test.c b/src/tools/c/examples/bronzeage/bronzeage-test.c
new file mode 100644
index 000000000..c0bee93a2
--- /dev/null
+++ b/src/tools/c/examples/bronzeage/bronzeage-test.c
@@ -0,0 +1,31 @@
+#include "Bronzeage.h"
+
+#include "BronzeageEng.h"
+
+#include <unistd.h>
+
+int main() {
+ Tree *tree =
+ mk_PhrPos(
+ mk_SentV(
+ mk_lie_V(),
+ mk_NumCN(
+ mk_two_Num(),
+ mk_UseN(mk_wife_N())
+ )
+ )
+ );
+
+ int i;
+
+ for (i = 0; i < 1000; i++) {
+ Term *term;
+ term = BronzeageEng_lin(tree);
+ term_print(stdout, term);
+ fputs("\n", stdout);
+ }
+
+ tree_free(tree);
+
+ return 0;
+}