I am pleased to announce that, after a decade-long hiatus, FreeCC is
back in active development. FreeCC began life in 2008 as a development
fork of the well known JavaCC parser generator but has evolved into what
really amounts to a ground-up rewrite.
Here are, not in any particular order, the reasons that people who are
interested in FreeMarker should find FreeCC quite interesting:
1.
FreeCC is the only parser generator that integrates with FreeMarker
by design. Via a simple configuration toggle, the nodes in the AST
(abstract syntax tree) that your generated parser creates implement
the core freemarker TemplateNodeModel API so that you can expose
your AST to a FreeMarker template and process or transform them
using a very natural syntax
<https://freemarker.apache.org/docs/xgui_declarative_basics.html>.
2.
FreeCC is the only parser generator that uses FreeMarker templates
to generate code. Thus, the output of the code generation is
configurable by editing FreeMarker templates. (I anticipate using
this to target other languages besides Java, but I first had to fix
up certain things, like more up-to-date support for Java itself!)
3.
FreeCC is the only parser generator (to my knowledge) that comes
with a grammar for FTL (FreeMarker template language) in its
examples directory. In fact, there are at least two FreeCC grammars
for FTL, since the trunk of the development of FreeMarker (in
pre-Apache times) that was meant to be 2.4 was built using FreeCC.
Also, I am pretty sure that one FreeMarker release (2.3.15) was
built using FreeCC. I switched the build on 2.3.x back to using
JavaCC for hyper-technical reasons outlined here
<http://freemarker.624813.n4.nabble.com/Switched-back-to-using-Javacc-to-build-FreeMarker-2-3-td627924.html>.
The more streamlined grammar in the FreeCC examples directory was
intended to be the newer grammar in FreeMarker 2.4.
4.
The above three points regarding the relationship between FreeCC and
FreeMarker should come as no surprise since the main author of
FreeCC and of FreeMarker (the core parsing/rendering engine
certainly) are the same person! (Moi.)
5.
This latest release of FreeCC includes a Java grammar that handles
most of the newer constructs in the Java language -- more
specifically /all/of the features of Java 8, including lambda
expresssions, as well as some of the constructs introduced after
Java 8. The The Java 8 grammar included in FreeCC is separately
usable in projects and FreeCC uses it via the INCLUDE mechanism
<https://github.com/revusky/freecc/wiki/The-INCLUDE-statement>.
(Note that there is no ability to include grammars within other
grammars in JavaCC.) In general, for a list of features that FreeCC
has that JavaCC lacks, see here
<https://github.com/revusky/freecc/wiki/Main-Differences-between-FreeCC-and-JavaCC>.
Although FreeCC began its life as a sister project of FreeMarker and was
written by the same person who wrote the core of the FreeMarker
codebase, this mailing list is not the preferred venue to discuss
FreeCC. I have recently set up a separate discussion forum for that
purpose at https://discuss.parsers.org.
The discussion forum there requires you to create an account and sign in
(like they all do) but I don't think that is particularly onerous. The
re-activated FreeCC project is very much in need of energetic
collaborators, and anybody who knows FreeMarker well already has a
leg-up in terms of getting going with FreeCC development. If you are
interested, you can post on that discussion forum, or if you want, you
can write me personally. Either of those options would be my preference
over any replies on this mailing list.
Best Regards and Greetings from Spain,
Jonathan Revusky