  Knowledge-based systems are suitable for realizing advanced functions that
require domain-specific expert knowledge, while knowledge representation
languages and their supporting environments are essential for realizing such
systems. Although Prolog is useful and effective in realizing such a supporting
environment, the language interoperability with other implementation languages,
such as Java, is often an important issue in practical application development.
This paper describes the techniques for translating a knowledge representation
language that is a nondeterministic functional language based on attribute
grammars into Java. The translation is based on binarization and the techniques
proposed for Prolog to Java translation although the semantics are different
from those of Prolog. A continuation unit is introduced to handle continuation
efficiently, while the variable and register management on backtracking is
simplified by using the single and unidirectional assignment features of
variables. An experimental translator written in the language itself
successfully generates Java code, while experimental results show that the
generated code is over 25 times faster than that of Prolog Cafe for
nondeterministic programs, and over 2 times faster for deterministic programs.
The generated code is also over 2 times faster than B-Prolog for
nondeterministic programs.
