Skip to content

AjaniBilby/BNF-parser

Repository files navigation

BNF-Parser

Test

Compile your bnfs down to WebAssembly for maximum parsing speed; with generated type definitions to make using the syntax tree outputs a breeze. The compiled output from this library is platform agnostic, so it can run anywhere new WebAssembly.Instance() is a valid function. It bundles the WebAssembly module inside of a single js file so it can be easily incorporated into any bundler. The type definitions for a given bnf are just that, a definitions file - so if you don't want to use typescript or type hints you can go wild by ignoring it.

program ::= chunk+ ;
chunk ::= "a"+ "b"+ ;
npx bnf-compile ./syntax.bnf
import * as syntax from "./bnf/syntax.js";

const tree    = syntax.Parse_Program("abbaabab").root;
const chunk   = program.value[0]; // typescript knows this this **will** be of type `Term_Chunk`
const firstBs = program.value[1];
const bCount: number = firstBs.value.length; // typescript knows this **will** be a number

Built to be a devDependency - if you use the included cli tool to generate your syntax parser you don't need to include this library as your dependency, you can just import those artifacts.

Documentation

See https://bnf-parser.ajanibilby.com/

API

See https://bnf-parser.ajanibilby.com/api

BNF Syntax

See https://bnf-parser.ajanibilby.com/api

Try it Online

Try it in your browser https://bnf-parser.ajanibilby.com/test