Socket
Socket
Sign inDemoInstall

apg

Package Overview
Dependencies
Maintainers
1
Versions
13
Alerts
File Explorer

Advanced tools

Socket logo

Install Socket

Detect and block malicious and high-risk dependencies

Install

apg

An ABNF Parser Generator - generates recursive-descent parsers from grammars written in a superset of Augmented Backus-Naur Form (ABNF)


Version published
Weekly downloads
763
increased by3.11%
Maintainers
1
Weekly downloads
 
Created
Source

##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:

  1. Updating its features to the full apg-6.3 and apg-java complement.
  2. Creating a local version of the parser generator as well as the parsing library (version 1.0 was library only).
  3. 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) grammar syntax (RFC 5234)
  • accepts valid ABNF grammars, including RFC 7405 case-sensitive and -insensitive literal strings of the form %s"abc" & %i"abc"
  • 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
  • use of callback functions keeps the parser's action code separate from the grammar
  • 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.

git 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 on your system (for example, Automated Password Generator) there are a couple of options for resolving the conflict.

  1. Make sure that the npm prefix (npm prefix -g) is left-most in the $PATH variable and clear the cache with
    hash -r
  2. If the npm prefix is, say, /my/npm/prefix, create an alias
    alias apg='/my/npm/prefix/bin/apg'
  3. You probably know other ways to do it better to your suiting.

APG is meant to be installed globally and used as a command line application. However, if you want a local copy you can use it as follows.

mkdir mylocal
cd mylocal
npm install apg
cd node_modules/apg

To run the locally installed copy:
node main.js args

Examples:
See apg-js2-examples for examples of running JavaScript APG 2.0 and the parsers it generates.

Documentation:
The documentation is in the code in docco format. To generate the documentation, from the package directory:

npm install -g docco
./docco-gen

View docs/index.html in any web browser to get started. Or view it on the APG website

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.

Keywords

FAQs

Package last updated on 24 Nov 2015

Did you know?

Socket

Socket for GitHub automatically highlights issues in each pull request and monitors the health of all your open source dependencies. Discover the contents of your packages and block harmful activity before you install or update your dependencies.

Install

Related posts

SocketSocket SOC 2 Logo

Product

  • Package Alerts
  • Integrations
  • Docs
  • Pricing
  • FAQ
  • Roadmap
  • Changelog

Packages

npm

Stay in touch

Get open source security insights delivered straight into your inbox.


  • Terms
  • Privacy
  • Security

Made with ⚡️ by Socket Inc