JVM | Platform | Status |
---|---|---|
OpenJDK (Temurin) Current | Linux | |
OpenJDK (Temurin) LTS | Linux | |
OpenJDK (Temurin) Current | Windows | |
OpenJDK (Temurin) LTS | Windows |
A general-purpose, configurable S-expression parser.
- Hand-coded lexer and parser with full support for tokens using characters outside of the Unicode BMP.
- Optional square brackets
[f (g [x y])]
. - Optional multi-line strings.
- Configurable comment characters (
#
,%
, or;
). - Configurable pretty printing of expressions.
- High coverage test suite.
- OSGi-ready
- JPMS-ready
- ISC license.
See the user manual.
Give the configuration for the lexer:
var squareBrackets = true;
var newlinesInQuotedStrings = true;
var startAtLine = 1;
final var lexConfiguration =
new JSXLexerConfiguration(
squareBrackets,
newlinesInQuotedStrings,
Optional.of(URI.create("file.txt")),
EnumSet.noneOf(JSXLexerComment.class),
startAtLine
);
Instantiate a parser using a parser and lexer configuration:
var preserveLexicalInfo = true;
final var parserConfig =
new JSXParserConfiguration(preserveLexicalInfo);
final JSXParserSupplierType parsers =
new JSXParserSupplier();
final var parser =
parsers.createFromStreamUTF8(
parserConfig,
lexConfiguration,
lexers,
System.in
);
Parse expressions:
final var exprOpt = parser.parseExpressionOrEOF();
if (exprOpt.isPresent()) {
final var e = exprOpt.get();
System.out.println(e);
}