dotnet and php bindings have bitrotted, but packrat is faster now
This commit is contained in:
commit
8a545c4dcf
8 changed files with 94 additions and 37 deletions
|
|
@ -188,9 +188,10 @@ HParseResult* h_do_parse(const HParser* parser, HParseState *state) {
|
|||
// check to see if there is already a result for this object...
|
||||
if (!m) {
|
||||
// It doesn't exist, so create a dummy result to cache
|
||||
HLeftRec *base = a_new(HLeftRec, 1);
|
||||
HLeftRec *base = NULL;
|
||||
// But only cache it now if there's some chance it could grow; primitive parsers can't
|
||||
if (parser->vtable->higher) {
|
||||
base = a_new(HLeftRec, 1);
|
||||
base->seed = NULL; base->rule = parser; base->head = NULL;
|
||||
h_slist_push(state->lr_stack, base);
|
||||
// cache it
|
||||
|
|
@ -207,7 +208,7 @@ HParseResult* h_do_parse(const HParser* parser, HParseState *state) {
|
|||
cached->input_stream = state->input_stream;
|
||||
}
|
||||
// setupLR, used below, mutates the LR to have a head if appropriate, so we check to see if we have one
|
||||
if (NULL == base->head) {
|
||||
if (!base || NULL == base->head) {
|
||||
h_hashtable_put(state->cache, key, cached_result(state, tmp_res));
|
||||
return tmp_res;
|
||||
} else {
|
||||
|
|
|
|||
|
|
@ -27,7 +27,7 @@ csfiles = os.path.join(thisdir, "*.cs")
|
|||
# target to stand in for.
|
||||
hammer_wrap = AlwaysBuild(dotnetenv.Command(['hammer_wrap.c'], swig,
|
||||
["rm %s/*.cs || true" % (thisdir,),
|
||||
"swig $SWIGFLAGS $SOURCE"]))
|
||||
"swig3.0 $SWIGFLAGS $SOURCE"]))
|
||||
libhammer_dotnet = dotnetenv.SharedLibrary(['hammer_dotnet'], hammer_wrap)
|
||||
hammer_dll = AlwaysBuild(dotnetenv.Command(['hammer.dll'], Glob('ext/*.cs'),
|
||||
'$CSC -t:library -unsafe -out:$TARGET %s/*.cs $SOURCE' %(thisdir,)))
|
||||
|
|
|
|||
|
|
@ -20,7 +20,7 @@ if 'PERL5LIB' in os.environ:
|
|||
|
||||
swig = ['hammer.i']
|
||||
|
||||
hammer_wrap = perlenv.Command(['hammer_wrap.c', 'hammer.pm'], swig, "swig $SWIGFLAGS $SOURCE")
|
||||
hammer_wrap = perlenv.Command(['hammer_wrap.c', 'hammer.pm'], swig, "swig3.0 $SWIGFLAGS $SOURCE")
|
||||
makefile = perlenv.Command(['Makefile'], ['Makefile.PL'], "perl $SOURCE CC=" + perlenv['ENV']['CC'])
|
||||
|
||||
targetdir = os.path.dirname(str(hammer_wrap[0].path))
|
||||
|
|
|
|||
|
|
@ -11,7 +11,7 @@ phpenv.Append(LIBS = ['hammer'])
|
|||
phpenv.Append(LIBPATH = ['../../'])
|
||||
|
||||
swig = ['hammer.i']
|
||||
bindings_src = phpenv.Command(['hammer.php', 'hammer_wrap.c', 'php_hammer.h'], swig, 'swig -php -DHAMMER_INTERNAL__NO_STDARG_H -Isrc/ $SOURCE')
|
||||
bindings_src = phpenv.Command(['hammer.php', 'hammer_wrap.c', 'php_hammer.h'], swig, 'swig3.0 -php -DHAMMER_INTERNAL__NO_STDARG_H -Isrc/ $SOURCE')
|
||||
libhammer_php = phpenv.SharedLibrary('hammer', ['hammer_wrap.c'])
|
||||
Default(swig, bindings_src, libhammer_php)
|
||||
|
||||
|
|
|
|||
|
|
@ -7,7 +7,7 @@ pythonenv = env.Clone(IMPLICIT_COMMAND_DEPENDENCIES = 0)
|
|||
swig = pythonenv.Command("hammer.i", "../swig/hammer.i", Copy("$TARGET", "$SOURCE"))
|
||||
setup = ['setup.py']
|
||||
pydir = os.path.join(env['BUILD_BASE'], 'src/bindings/python')
|
||||
libhammer_python = pythonenv.Command(['hammer.py', 'hammer_wrap.c'], [swig, setup], 'python ' + os.path.join(pydir, 'setup.py') + ' build_ext --inplace')
|
||||
libhammer_python = pythonenv.Command(['hammer.py', 'hammer_wrap.c'], [swig, setup], 'python ' + os.path.join(pydir, 'setup.py') + ' build_ext --swig=swig3.0 --inplace')
|
||||
Default(libhammer_python)
|
||||
|
||||
pytestenv = pythonenv.Clone()
|
||||
|
|
|
|||
Loading…
Add table
Add a link
Reference in a new issue