X-Git-Url: http://git.nguyen.vg/gitweb/?a=blobdiff_plain;f=src%2FOCamlDriver.cpp;h=be4670997a96ace81e4a25c3512a31f17d9092e7;hb=6df6ad6cf27e57872bd5891b49354acb0a5ce6a4;hp=7a12c7ffc3b4fce220cf78b39af005658873160f;hpb=124b3b4e8f440f8c996263127336377c9456e090;p=SXSI%2Fxpathcomp.git diff --git a/src/OCamlDriver.cpp b/src/OCamlDriver.cpp index 7a12c7f..be46709 100644 --- a/src/OCamlDriver.cpp +++ b/src/OCamlDriver.cpp @@ -940,11 +940,11 @@ extern "C" value caml_grammar_is_nil(value grammar, value rule) CAMLreturn(Val_bool(GRAMMAR(grammar)->isNil(Long_val(rule)))); } -extern "C" value caml_grammar_get_tag(value grammar, value symbol) +extern "C" value caml_grammar_get_tag(value grammar, value tag) { CAMLparam1(grammar); CAMLlocal1(res); - const char * s = (GRAMMAR(grammar)->getTagName(Long_val(symbol) >> 2)).c_str(); + const char * s = (GRAMMAR(grammar)->getTagName(Long_val(tag))).c_str(); res = caml_copy_string(s); CAMLreturn(res); } @@ -966,3 +966,16 @@ extern "C" value caml_grammar_get_param_pos(value grammar, value rule) CAMLparam1(grammar); CAMLreturn(Val_int(GRAMMAR(grammar)->getParamPos(Long_val(rule)))); } + +extern "C" value caml_grammar_translate_tag(value grammar, value tag) +{ + CAMLparam1(grammar); + CAMLreturn(Val_int(GRAMMAR(grammar)->translateTag(Int_val(tag)))); +} + +extern "C" value caml_grammar_register_tag(value grammar, value str) +{ + CAMLparam2(grammar, str); + char * s = String_val(str); + CAMLreturn(Val_int(GRAMMAR(grammar)->getTagID(s))); +}