Command Line Interface

Synopsis

openlexer <command> [options]

Commands

gen-lexer

Generate a lexer from a .l file.

openlexer gen-lexer --lexer <file.l> --lang <language> --output <dir>

Options:

OptionDescription
--lexer <file>Input lexer specification file
--lang <lang>Target language: c, java, python
--output <dir>Output directory

Example:

openlexer gen-lexer --lexer calc.l --lang python --output ./build

# Java: Generate Lexer.java  
openlexer gen-lexer -l calc.l -L java -o ./build

# C: Generate without test driver
openlexer gen-lexer -l calc.l -L c -o ./build --no-test

Generated Files: lexer.c (C), Lexer.java (Java), lexer.py (Python)

gen-parser

Generate a parser from a .y file.

openlexer gen-parser --parser <file.y> --lang <language> --output <dir>

Options:

OptionDescription
--parser <file>Input grammar specification file
--lang <lang>Target language: c, java, python
--output <dir>Output directory

Example:

openlexer gen-parser --parser calc.y --lang c --output ./build

# Java: Compile lexer and parser together (Parser auto-detects Lexer.class)
openlexer gen-lexer -l calc.l -L java -o ./build
openlexer gen-parser --parser calc.y -L java -o ./build
javac ./build/Lexer.java ./build/Parser.java
java -cp ./build Parser "3 + 4 * 2"

Generated Files: parser.c (C), Parser.java (Java), parser.py (Python)

help

Show help information.

openlexer help
openlexer --help
openlexer <command> --help

version

Show version information.

openlexer --version

Exit Codes

CodeMeaning
0Success
1General error
2Invalid arguments

Output

The generator prints progress information to stdout:

Parsing lexer specification...
Building NFA (23 states)...
Converting to DFA (15 states)...
Minimizing DFA (12 states)...
Generating Python code...
Written: ./build/lexer.py

Errors are printed to stderr:

Error: Invalid regex at line 5: unclosed bracket

Combining Lexer and Parser

Generate both in a single directory:

mkdir build
openlexer gen-lexer --lexer calc.l --lang c --output build
openlexer gen-parser --parser calc.y --lang c --output build

The generated files can then be compiled together.