01
A Lexer that knows all 563 ABL keywords, functions, and statements. Even OO-ABL.
Case-insensitive and abbreviation aware of every keyword. Tilde escape sequences. Preprocessor directives.
High-performance tooling for OpenEdge ABL. A complete, experimental toolchain with a lexer, parser, semantic analysis, and linting. Built for codebases still shipping advanced business logic.
Unofficial · no affiliation with Progress Software
WebAssembly demo
The real Oxabl parser, semantic analyzer, linter, and formatter, compiled to WebAssembly. Nothing leaves your browser.
features
Not a thin wrapper around the compiler. A ground-up toolkit that understands ABL.
563 keywords · 93 statements · 54 functions
01
Case-insensitive and abbreviation aware of every keyword. Tilde escape sequences. Preprocessor directives.
02
Turn a codebase into a structured AST in seconds. Error recovery on period boundaries so a single bad statement doesn't sink the file.
03
Schema-backed field validation. SHARED flags. Lints that fire on real issues. Catch syntax, schema, or logic errors before they reach the compiler.
04
Expand includes and preprocessor statements to gain real, authoritative insights, not just guesses.
05
To give you the real tightly coupled database and code feeling of ABL, load a .df and table.field just works. Buffers, typed fields. The analyze tool tells you everything it knows about your code and the schema it belongs to.
06
Rust, because it's fast and safe, allows us to parse large ABL files in milliseconds, instead of waiting for the compiler to check your work. Benchmarks on every update ensure we catch regressions before they reach users. Check your files on save, why wait.
pipeline
Every layer is a crate. Compose what you need — or run the full
oxabl check /
analyze path end to end.
why ox_abl
ox_abl is designed for modern ABL developers and agents. Get instant feedback, resolve preprocessor directives, roll your own lint rules, format code, build programmatic and declarative test suites. Don't take anything for granted. Bring the convenience of JavaScript or Rust to ABL in your terminal or favorite editor. Let agents take the wheel and give them the context they need to work in ABL monoliths.
✓ 1,284 files parsed ✓ 0 hard errors ~ 3 PREPROC007 warnings unresolvable include 'sys/legacy.i' — symbols it declares cannot be checked elapsed 1.8s
get started
Installation script and distribution channel coming with 1.0.0.
# install from GitHub (requires Rust) cargo install --git https://github.com/oxabl-project/oxabl oxabl # check a tree oxabl check ./path/to/src --preprocess # dump the semantic model oxabl analyze app.p --schema sports.df
contribute to oxabl
# get the source git clone https://github.com/oxabl-project/oxabl.git cd oxabl # build + test the whole suite cargo build cargo test # check a real ABL tree cargo run -p oxabl -- check ./path/to/src --preprocess # dump the semantic model cargo run -p oxabl -- analyze app.p --schema sports.df