S-expression parsing
- Java 98.7%
- Assembly 1.3%
| Filename | Latest commit message | Latest commit date |
|---|---|---|
| .forgejo | ||
| com.io7m.jsx.cmdline | ||
| com.io7m.jsx.core | ||
| com.io7m.jsx.documentation | ||
| com.io7m.jsx.parser | ||
| com.io7m.jsx.parser.api | ||
| com.io7m.jsx.prettyprint | ||
| com.io7m.jsx.tests | ||
| src/site/resources | ||
| .gitignore | ||
| doc7m-books.json | ||
| pom.xml | ||
| README-CHANGES.xml | ||
| README-LICENSE.txt | ||
| README.in | ||
| README.md | ||
jsx
jsx
A general-purpose, configurable S-expression parser.
Features
- 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.
User Manual
See the user manual.
Usage
Parsing
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);
}
