# xbib Jacc

image:https://api.travis-ci.org/xbib/jacc.svg[title="Build status", link="https://travis-ci.org/xbib/jacc/"]
image:https://img.shields.io/sonar/http/nemo.sonarqube.com/org.xbib%3Ajacc/coverage.svg?style=flat-square[title="Coverage", link="https://sonarqube.com/dashboard/index?id=org.xbib%3Ajacc"]
image:https://maven-badges.herokuapp.com/maven-central/org.xbib/jacc/badge.svg[title="Maven Central", link="http://search.maven.org/#search%7Cga%7C1%7Cxbib%20jacc"]
image:https://img.shields.io/badge/License-BSD%203--Clause-blue.svg[title="BSD 3-clause License", link="https://opensource.org/licenses/BSD-3-Clause"]
image:https://img.shields.io/twitter/url/https/twitter.com/xbib.svg?style=social&label=Follow%20%40xbib[title="Twitter", link="https://twitter.com/xbib"]
image:https://www.paypalobjects.com/en_US/i/btn/btn_donateCC_LG.gif[title="PayPal", link="https://www.paypal.com/cgi-bin/webscr?cmd=_s-xclick&hosted_button_id=GVHFQYZ9WZ8HG"]

This is xbib Jacc, a derived work of Mark P. Jones' jacc project at http://web.cecs.pdx.edu/~mpj/jacc/

jacc is a parser generator for Java that is closely modeled on Johnson’s classic yacc parser generator for C.

What makes jacc different from other tools?

- Close syntactic compatibility with Johnson’s classic yacc parser gen- erator for C (in so far as is possible given that the two tools target different languages)

- Semantic compatibility with yacc—jacc generates bottom-up/shift-reduce parsers for LALR(1) grammars with disambiguating rules

- A pure Java implementation that is portable and runs on many Java development platforms

- Modest additions to help users understand and debug generated parsers, including: a feature for tracing parser behavior on sample inputs and tests for LR(0) and SLR(1) conflicts

- A mechanism for generating syntax error messages from examples based on ideas described by Jeffery

- Generated parsers that use the technique described by Bhamidipaty and Proebsting for creating very fast yacc-compatible parsers by generating code instead of encoding the specifics of a particular parser in a set of tables as the classic yacc implementations normally do

xbib Jacc has the following extra features and modifications:

- build system is Gradle

- Java 8, compiles under JRE profile `compact1`

- removed HTML output

- added logging

- lots of fixes to conform to sonarqube rules

- junit tests

There is a Gradle plugin for jacc available at https://github.com/jprante/gradle-plugin-jacc