1
0
forked from GitHub/gf-core

DEBUG mode added.

This commit is contained in:
jordi.saludes
2010-06-13 17:07:49 +00:00
parent ccbbd4e848
commit d8c65b9732
3 changed files with 18 additions and 3 deletions

View File

@@ -2,6 +2,7 @@ src=../../src
import=-i$src/runtime/haskell:$src/compiler import=-i$src/runtime/haskell:$src/compiler
cbind=../c-bindings cbind=../c-bindings
pythoninc=/usr/include/python2.5 pythoninc=/usr/include/python2.5
debug=-optc '-DDEBUG=1'
conf: conf:
ln -s $(cbind)/PGFFFI.hs ln -s $(cbind)/PGFFFI.hs
@@ -12,7 +13,7 @@ gf.so: PGFFFI.hs gfmodule.c
gf --make ../../examples/tutorial/embedded/QueryEng.gf gf --make ../../examples/tutorial/embedded/QueryEng.gf
ghc $(import) --make -fglasgow-exts -O2 -no-hs-main -c $< ghc $(import) --make -fglasgow-exts -O2 -no-hs-main -c $<
ghc -O2 --make -fglasgow-exts -no-hs-main -optl '-shared' \ ghc -O2 --make -fglasgow-exts -no-hs-main -optl '-shared' \
-optc '-DMODULE=PGFFFI' -optc '-I$(pythoninc)' -o $@ $^ -optc '-DMODULE=PGFFFI' $(debug) -optc '-I$(pythoninc)' -o $@ $^
clean: clean:
rm -f *.hi *.o rm -f *.hi *.o
rm -f *_stub.* rm -f *_stub.*
@@ -20,4 +21,4 @@ clean:
superclean: superclean:
make clean make clean
rm -f PGFFFI.hs pgf.h Query.pgf rm -f PGFFFI.hs pgf.h Query.pgf
rm -f gf.so rm -f gf.so

View File

@@ -32,15 +32,28 @@
#define NEWGF(OBJ,GFTYPE,TYPE,NAME,DOC) NEWOBJECT(OBJ,GFTYPE) \ #define NEWGF(OBJ,GFTYPE,TYPE,NAME,DOC) NEWOBJECT(OBJ,GFTYPE) \
NEWTYPE(TYPE,NAME,OBJ,DOC) NEWTYPE(TYPE,NAME,OBJ,DOC)
#ifdef DEBUG
#define DEALLOCFN(delname,t,cb,cbname) static void \ #define DEALLOCFN(delname,t,cb,cbname) static void \
delname(t *self){ cb(self->obj);\ delname(t *self){ cb(self->obj);\
printf("gf_%s has been called for stable pointer 0x%x\n", cbname, self->obj);\ printf("gf_%s has been called for stable pointer 0x%x\n", cbname, self->obj);\
self->ob_type->tp_free((PyObject*)self); } self->ob_type->tp_free((PyObject*)self); }
#else
#define DEALLOCFN(delname,t,cb,cbname) static void \
delname(t *self){ cb(self->obj);\
self->ob_type->tp_free((PyObject*)self); }
#endif
#ifdef DEBUG
#define REPRCB(cbid,t,gfcb) static PyObject* \ #define REPRCB(cbid,t,gfcb) static PyObject* \
cbid(t *self) { \ cbid(t *self) { \
const char *str = gfcb(self->obj); \ const char *str = gfcb(self->obj); \
return PyString_FromFormat("0x%x: %s", self->obj, str); } return PyString_FromFormat("0x%x: %s", self->obj, str); }
#else
#define REPRCB(cbid,t,gfcb) static PyObject* \
cbid(t *self) { \
const char *str = gfcb(self->obj); \
return PyString_FromString(str); }
#endif
/* utilities */ /* utilities */

View File

@@ -3,7 +3,8 @@ import gf
query = gf.read_pgf("Query.pgf") query = gf.read_pgf("Query.pgf")
lang = gf.read_language('QueryEng') lang = gf.read_language('QueryEng')
cat = query.startcat() cat = query.startcat()
print 'start category:',cat print 'start category:', cat
print 'language is:', lang
lexed = "is 2 prime" lexed = "is 2 prime"
print "Parsing '%s':" % lexed print "Parsing '%s':" % lexed
for e in query.parse(lexed, lang): for e in query.parse(lexed, lang):