Java based Edinburgh Prolog parser
During my experiments in Prolog with Java, I developed some parser to process Prolog sources written in Edinburgh style. I decided that it is useful stuff, and it would be good to be prepared as separated independent module published in Maven central. In 2018 deep refactoring made the parser better and stronger.
It supports
The parser is a pure Java library without any 3-th side dependency, it is published im the Maven central and can be injected into project just by adding:
<dependency>
<groupId>com.igormaznitsa</groupId>
<artifactId>java-prolog-parser</artifactId>
<version>2.1.0</version>
</dependency>
Just use maven command mvn install
to get result JAR. The JAR will be Java 1.8 compatible but it requires Java 11+ for
build for involved maven plugins.
Parser implements stream which sequentially reads prolog terms provided by reader. By default, PrologParser is abstract class but there is pre-defined implementation GenericPrologParser for common cases.
Reader reader = new StringReader("hello(world). some({1,2,3}). power(X,Y,Z) :- Z is X ** Y.");
ParserContext context = DefaultParserContext.of(ParserContext.FLAG_CURLY_BRACKETS, Op.SWI);
PrologParser parser = new GenericPrologParser(reader, context);
parser.forEach(System.out::println);
Supported tokens:
Supported quotations:
'
"
Bracketed empty-functor structures represented by structure with functor either {}
or ()
(depends on bracket type).