<?xml version="1.0" encoding="UTF-8"?>
<!-- generator="FeedCreator 1.8" -->
<?xml-stylesheet href="https://wiki.parsers.org/lib/exe/css.php?s=feed" type="text/css"?>
<rdf:RDF
    xmlns="http://purl.org/rss/1.0/"
    xmlns:rdf="http://www.w3.org/1999/02/22-rdf-syntax-ns#"
    xmlns:slash="http://purl.org/rss/1.0/modules/slash/"
    xmlns:dc="http://purl.org/dc/elements/1.1/">
    <channel rdf:about="https://wiki.parsers.org/feed.php">
        <title>CongoCC Parser Generator</title>
        <description></description>
        <link>https://wiki.parsers.org/</link>
        <image rdf:resource="https://wiki.parsers.org/lib/tpl/sprintdoc/images/favicon.ico" />
       <dc:date>2026-04-17T20:15:36+00:00</dc:date>
        <items>
            <rdf:Seq>
                <rdf:li rdf:resource="https://wiki.parsers.org/doku.php?id=ancient_history&amp;rev=1604073430&amp;do=diff"/>
                <rdf:li rdf:resource="https://wiki.parsers.org/doku.php?id=choice_points&amp;rev=1612807782&amp;do=diff"/>
                <rdf:li rdf:resource="https://wiki.parsers.org/doku.php?id=code_injection_in_javacc_21&amp;rev=1601375045&amp;do=diff"/>
                <rdf:li rdf:resource="https://wiki.parsers.org/doku.php?id=contextual_predicates&amp;rev=1677853406&amp;do=diff"/>
                <rdf:li rdf:resource="https://wiki.parsers.org/doku.php?id=convention_over_configuration&amp;rev=1603390747&amp;do=diff"/>
                <rdf:li rdf:resource="https://wiki.parsers.org/doku.php?id=deprecated_settings&amp;rev=1640095404&amp;do=diff"/>
                <rdf:li rdf:resource="https://wiki.parsers.org/doku.php?id=first_set&amp;rev=1602161117&amp;do=diff"/>
                <rdf:li rdf:resource="https://wiki.parsers.org/doku.php?id=include&amp;rev=1677860432&amp;do=diff"/>
                <rdf:li rdf:resource="https://wiki.parsers.org/doku.php?id=key_differences&amp;rev=1688801141&amp;do=diff"/>
                <rdf:li rdf:resource="https://wiki.parsers.org/doku.php?id=new_settings_in_javacc_21&amp;rev=1644902887&amp;do=diff"/>
                <rdf:li rdf:resource="https://wiki.parsers.org/doku.php?id=new_syntax_summary&amp;rev=1681121071&amp;do=diff"/>
                <rdf:li rdf:resource="https://wiki.parsers.org/doku.php?id=nothingburger&amp;rev=1601603649&amp;do=diff"/>
                <rdf:li rdf:resource="https://wiki.parsers.org/doku.php?id=scan_statement&amp;rev=1628324492&amp;do=diff"/>
                <rdf:li rdf:resource="https://wiki.parsers.org/doku.php?id=settings&amp;rev=1681757584&amp;do=diff"/>
                <rdf:li rdf:resource="https://wiki.parsers.org/doku.php?id=start_hacking&amp;rev=1683393910&amp;do=diff"/>
                <rdf:li rdf:resource="https://wiki.parsers.org/doku.php?id=start&amp;rev=1676768209&amp;do=diff"/>
                <rdf:li rdf:resource="https://wiki.parsers.org/doku.php?id=technical_support&amp;rev=1683393793&amp;do=diff"/>
                <rdf:li rdf:resource="https://wiki.parsers.org/doku.php?id=tree_building&amp;rev=1587838558&amp;do=diff"/>
                <rdf:li rdf:resource="https://wiki.parsers.org/doku.php?id=up_to_here&amp;rev=1677853616&amp;do=diff"/>
            </rdf:Seq>
        </items>
    </channel>
    <image rdf:about="https://wiki.parsers.org/lib/tpl/sprintdoc/images/favicon.ico">
        <title>CongoCC Parser Generator</title>
        <link>https://wiki.parsers.org/</link>
        <url>https://wiki.parsers.org/lib/tpl/sprintdoc/images/favicon.ico</url>
    </image>
    <item rdf:about="https://wiki.parsers.org/doku.php?id=ancient_history&amp;rev=1604073430&amp;do=diff">
        <dc:format>text/html</dc:format>
        <dc:date>2020-10-30T15:57:10+00:00</dc:date>
        <dc:creator>Anonymous (anonymous@undisclosed.example.com)</dc:creator>
        <title>ancient_history</title>
        <link>https://wiki.parsers.org/doku.php?id=ancient_history&amp;rev=1604073430&amp;do=diff</link>
        <description>JavaCC Project History

There are certain questions that I anticipate will be coming up over and over again, so I shall attempt to answer them forthrightly. In the following, I shall outline the history of all of this. People are free to dismiss this as my (Revusky's) opinionated and self-interested version of things. But I would just say this: while not everybody who comes to know me personally ends up liking me, they would (</description>
    </item>
    <item rdf:about="https://wiki.parsers.org/doku.php?id=choice_points&amp;rev=1612807782&amp;do=diff">
        <dc:format>text/html</dc:format>
        <dc:date>2021-02-08T18:09:42+00:00</dc:date>
        <dc:creator>Anonymous (anonymous@undisclosed.example.com)</dc:creator>
        <title>choice_points</title>
        <link>https://wiki.parsers.org/doku.php?id=choice_points&amp;rev=1612807782&amp;do=diff</link>
        <description>Choice Points and Lookahead

A choice point in a JavaCC grammar is a juncture where the parser must decide between two or more expansions. There are four kinds of choice point:

	*  An optional expansion, i.e. the expansion inside a zero or one construct, which is written</description>
    </item>
    <item rdf:about="https://wiki.parsers.org/doku.php?id=code_injection_in_javacc_21&amp;rev=1601375045&amp;do=diff">
        <dc:format>text/html</dc:format>
        <dc:date>2020-09-29T10:24:05+00:00</dc:date>
        <dc:creator>Anonymous (anonymous@undisclosed.example.com)</dc:creator>
        <title>code_injection_in_javacc_21</title>
        <link>https://wiki.parsers.org/doku.php?id=code_injection_in_javacc_21&amp;rev=1601375045&amp;do=diff</link>
        <description>Code Injection

Note, first of all, that the INJECT statement does not exist in Legacy JavaCC. 

INJECT allows you to specify extra code that will be placed (or “injected”) in generated java code. It can appear anywhere in your grammar where you could place a BNF production or Token production. It can be written in one of two forms.</description>
    </item>
    <item rdf:about="https://wiki.parsers.org/doku.php?id=contextual_predicates&amp;rev=1677853406&amp;do=diff">
        <dc:format>text/html</dc:format>
        <dc:date>2023-03-03T14:23:26+00:00</dc:date>
        <dc:creator>Anonymous (anonymous@undisclosed.example.com)</dc:creator>
        <title>contextual_predicates</title>
        <link>https://wiki.parsers.org/doku.php?id=contextual_predicates&amp;rev=1677853406&amp;do=diff</link>
        <description>Contextual Predicates

A contextual predicate allows you to add conditions at choice points based on scanning back in the call/lookahead stack. We are not aware of any other parser generator tool that has this feature.

The easiest way to describe this is with some actual examples.</description>
    </item>
    <item rdf:about="https://wiki.parsers.org/doku.php?id=convention_over_configuration&amp;rev=1603390747&amp;do=diff">
        <dc:format>text/html</dc:format>
        <dc:date>2020-10-22T18:19:07+00:00</dc:date>
        <dc:creator>Anonymous (anonymous@undisclosed.example.com)</dc:creator>
        <title>convention_over_configuration</title>
        <link>https://wiki.parsers.org/doku.php?id=convention_over_configuration&amp;rev=1603390747&amp;do=diff</link>
        <description>Convention over Configuration (when possible)

It is our considered view that a tool having a plethora of configuration options can make it far less usable. Or, at the very least, if there are a lot of configuration options, the neophyte user should be able to ignore them for the most part. One key aspect of this is having sensible defaults that correspond to the typical usage scenarios. Another aspect is simply having naming conventions so that the tool can infer the names of files and their lo…</description>
    </item>
    <item rdf:about="https://wiki.parsers.org/doku.php?id=deprecated_settings&amp;rev=1640095404&amp;do=diff">
        <dc:format>text/html</dc:format>
        <dc:date>2021-12-21T14:03:24+00:00</dc:date>
        <dc:creator>Anonymous (anonymous@undisclosed.example.com)</dc:creator>
        <title>deprecated_settings</title>
        <link>https://wiki.parsers.org/doku.php?id=deprecated_settings&amp;rev=1640095404&amp;do=diff</link>
        <description>Obsolete Settings from Legacy JavaCC (and JJTree)

As a result of quite a bit of forward evolution, some of the settings from legacy JavaCC (and JJTree) are obsolete in JavaCC21. We don't anticipate that any of them will be missed. 

	*  STATIC: JavaCC21 does not support static parsers. Or, in other words, this is always set to false, (and thus, ignored.)</description>
    </item>
    <item rdf:about="https://wiki.parsers.org/doku.php?id=first_set&amp;rev=1602161117&amp;do=diff">
        <dc:format>text/html</dc:format>
        <dc:date>2020-10-08T12:45:17+00:00</dc:date>
        <dc:creator>Anonymous (anonymous@undisclosed.example.com)</dc:creator>
        <title>first_set</title>
        <link>https://wiki.parsers.org/doku.php?id=first_set&amp;rev=1602161117&amp;do=diff</link>
        <description>An expansion's first set is simply the set of all tokens that can begin the expansion.

The most trivial example imaginable is any expansion that begins with a single token. Thus, the first set of:


    &quot;foo&quot; &quot;bar&quot; &quot;baz&quot;


is simply a set with one element,</description>
    </item>
    <item rdf:about="https://wiki.parsers.org/doku.php?id=include&amp;rev=1677860432&amp;do=diff">
        <dc:format>text/html</dc:format>
        <dc:date>2023-03-03T16:20:32+00:00</dc:date>
        <dc:creator>Anonymous (anonymous@undisclosed.example.com)</dc:creator>
        <title>include</title>
        <link>https://wiki.parsers.org/doku.php?id=include&amp;rev=1677860432&amp;do=diff</link>
        <description>The INCLUDE Statement

Congo's INCLUDE statement allows you to break up your grammar file into multiple physical files. It would look like this typically:

INCLUDE &quot;IncludedGrammar.javacc&quot;

This feature is not present in legacy JavaCC.

The motivation be</description>
    </item>
    <item rdf:about="https://wiki.parsers.org/doku.php?id=key_differences&amp;rev=1688801141&amp;do=diff">
        <dc:format>text/html</dc:format>
        <dc:date>2023-07-08T07:25:41+00:00</dc:date>
        <dc:creator>Anonymous (anonymous@undisclosed.example.com)</dc:creator>
        <title>key_differences</title>
        <link>https://wiki.parsers.org/doku.php?id=key_differences&amp;rev=1688801141&amp;do=diff</link>
        <description>Key Differences between CongoCC and Legacy JavaCC

From the end user's point of view, the most important difference is that CongoCC has undergone quite a bit of re-design to make it much more usable “out of the box” than the legacy JavaCC. One of the most basic (and obvious) things that CongoCC provides is the</description>
    </item>
    <item rdf:about="https://wiki.parsers.org/doku.php?id=new_settings_in_javacc_21&amp;rev=1644902887&amp;do=diff">
        <dc:format>text/html</dc:format>
        <dc:date>2022-02-15T05:28:07+00:00</dc:date>
        <dc:creator>Anonymous (anonymous@undisclosed.example.com)</dc:creator>
        <title>new_settings_in_javacc_21</title>
        <link>https://wiki.parsers.org/doku.php?id=new_settings_in_javacc_21&amp;rev=1644902887&amp;do=diff</link>
        <description>Here is a list of settings that exist in JavaCC 21 but are not (and never were) present in the legacy JavaCC tool:

	*  BASE_NAME This option is used to set the name of the parser, lexer, constants, and NFA data files instead of using the default naming convention that prefixes these files with the name of the grammar file. If this option is set to an empty string (BASE_NAME=</description>
    </item>
    <item rdf:about="https://wiki.parsers.org/doku.php?id=new_syntax_summary&amp;rev=1681121071&amp;do=diff">
        <dc:format>text/html</dc:format>
        <dc:date>2023-04-10T10:04:31+00:00</dc:date>
        <dc:creator>Anonymous (anonymous@undisclosed.example.com)</dc:creator>
        <title>new_syntax_summary</title>
        <link>https://wiki.parsers.org/doku.php?id=new_syntax_summary&amp;rev=1681121071&amp;do=diff</link>
        <description>Overview of the Newer Streamlined Syntax

The following is a summary of CongoCC's streamlined syntax from the perspective of somebody migrating
from legacy JavaCC. Note that, unlike CongoCC's predecessor, JavaCC 21, CongoCC does not support the legacy syntax. Any existing grammar file must be converter. There is a utility available that automatically converts the legacy syntax to the streamlined syntax. You can pick up the</description>
    </item>
    <item rdf:about="https://wiki.parsers.org/doku.php?id=nothingburger&amp;rev=1601603649&amp;do=diff">
        <dc:format>text/html</dc:format>
        <dc:date>2020-10-02T01:54:09+00:00</dc:date>
        <dc:creator>Anonymous (anonymous@undisclosed.example.com)</dc:creator>
        <title>nothingburger</title>
        <link>https://wiki.parsers.org/doku.php?id=nothingburger&amp;rev=1601603649&amp;do=diff</link>
        <description>Nothingburgerism

Where's the Beef? (Classic Wendy's Commercial)

As I describe here, at some point in mid-2008, I set myself the task of figuring out what the JavaCC “community” had achieved, what work they had done on the code in the five years since it had been open-sourced on java.net.</description>
    </item>
    <item rdf:about="https://wiki.parsers.org/doku.php?id=scan_statement&amp;rev=1628324492&amp;do=diff">
        <dc:format>text/html</dc:format>
        <dc:date>2021-08-07T08:21:32+00:00</dc:date>
        <dc:creator>Anonymous (anonymous@undisclosed.example.com)</dc:creator>
        <title>scan_statement</title>
        <link>https://wiki.parsers.org/doku.php?id=scan_statement&amp;rev=1628324492&amp;do=diff</link>
        <description>The new SCAN Statement

JavaCC 21 introduces a new SCAN statement that is designed to supersede the legacy LOOKAHEAD. It is a key part of the newer streamlined syntax. Like LOOKAHEAD, SCAN exists to specify conditions at choice points that override the default resolution mechanism of scanning ahead exactly one token. The new</description>
    </item>
    <item rdf:about="https://wiki.parsers.org/doku.php?id=settings&amp;rev=1681757584&amp;do=diff">
        <dc:format>text/html</dc:format>
        <dc:date>2023-04-17T18:53:04+00:00</dc:date>
        <dc:creator>Anonymous (anonymous@undisclosed.example.com)</dc:creator>
        <title>settings</title>
        <link>https://wiki.parsers.org/doku.php?id=settings&amp;rev=1681757584&amp;do=diff</link>
        <description>Here, by category, is a list of all the settings in CongoCC that can be set at the top of a grammar file.

Options relating to File/Class/Package Naming

By default, the tool has some naming conventions that, actually, you might as well use. For example, if your grammar lies in a file named</description>
    </item>
    <item rdf:about="https://wiki.parsers.org/doku.php?id=start_hacking&amp;rev=1683393910&amp;do=diff">
        <dc:format>text/html</dc:format>
        <dc:date>2023-05-06T17:25:10+00:00</dc:date>
        <dc:creator>Anonymous (anonymous@undisclosed.example.com)</dc:creator>
        <title>start_hacking</title>
        <link>https://wiki.parsers.org/doku.php?id=start_hacking&amp;rev=1683393910&amp;do=diff</link>
        <description>Start Hacking!

CongoCC is based on the idea that things should just work. If all you want to do is use the tool, all you need to do is download the file:

&lt;https://parsers.org/download/congocc.jar&gt;

There are no dependencies (aside from a JDK) and it should be runnable via:
 java -jar congocc.jar &lt;MyGrammar.ccc&gt;</description>
    </item>
    <item rdf:about="https://wiki.parsers.org/doku.php?id=start&amp;rev=1676768209&amp;do=diff">
        <dc:format>text/html</dc:format>
        <dc:date>2023-02-19T00:56:49+00:00</dc:date>
        <dc:creator>Anonymous (anonymous@undisclosed.example.com)</dc:creator>
        <title>start</title>
        <link>https://wiki.parsers.org/doku.php?id=start&amp;rev=1676768209&amp;do=diff</link>
        <description>What is CongoCC?

CongoCC is a more advanced version of the legacy JavaCC tool. The current version is the result of a huge amount of restructuring and refactoring with the following main goals:

	*  To make the tool much more useful and usable, out of the box</description>
    </item>
    <item rdf:about="https://wiki.parsers.org/doku.php?id=technical_support&amp;rev=1683393793&amp;do=diff">
        <dc:format>text/html</dc:format>
        <dc:date>2023-05-06T17:23:13+00:00</dc:date>
        <dc:creator>Anonymous (anonymous@undisclosed.example.com)</dc:creator>
        <title>technical_support</title>
        <link>https://wiki.parsers.org/doku.php?id=technical_support&amp;rev=1683393793&amp;do=diff</link>
        <description>Technical Support

Our policy is that we only provide technical support for the latest version of the tool. That is the version that you can download at &lt;https://parsers.org/download/congocc.jar&gt;. 

Alternatively, your own build is fine as long as it is built from the latest version of the code</description>
    </item>
    <item rdf:about="https://wiki.parsers.org/doku.php?id=tree_building&amp;rev=1587838558&amp;do=diff">
        <dc:format>text/html</dc:format>
        <dc:date>2020-04-25T18:15:58+00:00</dc:date>
        <dc:creator>Anonymous (anonymous@undisclosed.example.com)</dc:creator>
        <title>tree_building</title>
        <link>https://wiki.parsers.org/doku.php?id=tree_building&amp;rev=1587838558&amp;do=diff</link>
        <description>Tree Building Enhancements in JavaCC 21

In JavaCC 21, there is no separate program analogous to legacy JavaCC's JJTree preprocessor. Building an AST is assumed to be the way that most people will want to use the tool, so parsers generated by JavaCC 21 build a tree *by default*. If you really don't want to build a tree (or you want to build a tree but in your own java code actions) there is a</description>
    </item>
    <item rdf:about="https://wiki.parsers.org/doku.php?id=up_to_here&amp;rev=1677853616&amp;do=diff">
        <dc:format>text/html</dc:format>
        <dc:date>2023-03-03T14:26:56+00:00</dc:date>
        <dc:creator>Anonymous (anonymous@undisclosed.example.com)</dc:creator>
        <title>up_to_here</title>
        <link>https://wiki.parsers.org/doku.php?id=up_to_here&amp;rev=1677853616&amp;do=diff</link>
        <description>The &quot;Up-to-here&quot; Marker

The up-to-here marker =&gt;|| and the up-to-here-plus marker =&gt;|+n (where n is an integer) were introduced to be able to express lookahead in a more succinct and less err-prone manner than using the LOOKAHEAD from legacy JavaCC or even the terser</description>
    </item>
</rdf:RDF>
