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);
}
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)));
+}