Translating Nondeterministic Functional Language based on Attribute   Grammars into Java
  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. 
Masanobu Umeda, Ryoto Naruse, Hiroaki Sone, Keiichi Katamine
cs.PL