##JavaScript APG
Version: 2.0
Description:
APG is an acronym for "ABNF Parser Generator". Version 2.0 is a complete re-write of version 1.0 (apg-js)with the following objectives in mind:
- Updating its features to the full apg-6.3 and apg-java complement.
- Creating a local version of the parser generator as well as the parsing library (version 1.0 was library only).
- Developing it in the node.js framework.
Its features include:
- generates language parsers and translators from a superset of the Augmented Backus-Naur Form (ABNF RFC5234) grammar syntax
- accepts valid ABNF grammars
- use of callback functions keeps the parser's action code separate from the grammar
- accepts
AND
& NOT
syntactic predicate operators for conditional parsing based on specified, look-ahead phrases - accepts User-Defined Terminals (UDTs) which provide user-written, non-Context-Free phrase recognition operators
- user-written callback functions provide complete monitoring and flow control of the parser
- optional generation of an Abstract Syntax Tree (AST)
- translation of the AST with user-written callback functions
- XML formatting of the AST
- extensive tracing facilities
- statistics gathering for a full picture of parse tree node coverage
- extensive attribute generation for an overview of the grammar's characteristics
- runs as a node.js, desktop cli function
Installation:
Requires node.js and npm
clone https://github.com/ldthomas/apg-js2.git apg
cd apg
npm install -g ./
apg -v
or just
npm install -g apg
apg -v
You should see something like:
JavaScript APG 2.0, Copyright (C) 2105 Lowell D. Thomas, all rights reserved
Note: If there is a name conflict (for example, Automated Password Generator) there are a couple of options for
resolving the conflict.
- Make sure that the npm prefix (
npm prefix -g
) is left-most in the $PATH variable and clear the cache with
hash -r
- If the npm prefix is, say,
/my/npm/prefix
, create an alias
alias apg='/my/npm/prefix/bin/apg'
- You probably know other ways to do it better to your suiting.
Examples:
See apg-js2-examples for examples of running JavaScript APG 2.0 and the parsers it generates.
Documentation:
To be done.
For now, run apg -h
for a list of options and you can look at the code in the examples.
Copyright:
Copyright © 2015 Lowell D. Thomas, all rights reserved
License:
Unlike all previous releases of APG, JavaSript APG, Version 2.0 is released with the more permissive BSD-3-Clause license.