ts-pegjs

    1.2.1 • Public • Published

    TS PEG.js

    TS PEG.js is a TS code generation plugin for peggy.

    Build Status Dependency Status Known Vulnerabilities npm version

    NPM

    Requirements

    Installation

    Node.js

    Installs ts-pegjs + peggy

    $ npm install ts-pegjs
    

    Usage

    Generating a Parser from JS code

    In Node.js, require both the peggy parser generator and the ts-pegjs plugin:

    var peggy = require('peggy');
    var tspegjs = require('ts-pegjs');

    To generate a TS parser, pass to pegjs.generate ts-pegjs plugin and your grammar:

    var parser = pegjs.generate("start = ('a' / 'b')+", {
        output: 'source',
        format: 'commonjs',
        plugins: [tspegjs],
        tspegjs: {
            customHeader: "// import lib\nimport { Lib } from 'mylib';"
        }
    });

    The method will return source code of generated parser as a string.

    Supported options of pegjs.generate:

    • cache — if true, makes the parser cache results, avoiding exponential parsing time in pathological cases but making the parser slower (default: false). This is strongly recommended for big grammars (like javascript.pegjs or css.pegjs in example folder)
    • allowedStartRules — rules the parser will be allowed to start parsing from (default: the first rule in the grammar)

    Plugin options

    • custom-header — A custom header of TS code to be injected on the header of the output file. E.g. provides a convenient place for adding library imports.
    • returnTypes — An object containing rule names as keys and return type as string.

    Generating a Parser from CLI

    Sample usage:

    peggy --plugin ./src/tspegjs -o examples/arithmetics.ts --cache examples/arithmetics.pegjs
    

    It will generarate the parser in the TS flavour.

    If you need to pass specific plugin options you can use the option --extra-options-file provided by pegjs and pass it a filename (e.g. pegconfig.json) containing specific options like the following JSON sample:

    peggy --plugin ./src/tspegjs --extra-options-file pegconfig.json -o examples/arithmetics.ts --cache examples/arithmetics.pegjs
    
    {
        "tspegjs": {
            "customHeader": "// import lib\nimport { Lib } from 'mylib';"
        }
    }

    Make sure to pass any additional CLI options, like --extra-options-file before the parameter -o as these will otherwise be treated as arguments to that one.

    Using the Parser

    1. Save parser generated by pegjs.generate to a file or use the one generated from the CLI tool.

    2. In client TS code:

    import { SyntaxError, parse } from './arithmetics';
    
    try {
        const sampleOutput = parse('my sample...');
    } catch (ex: SyntaxError) {
        // Handle parsing error
        // [...]
    }

    Changelog

    Changelog.

    Acknowledgments

    Thanks to:

    License

    The MIT License (MIT)


    (c) 2017-2021, Pedro J. Molina at metadev.pro

    Install

    npm i ts-pegjs

    DownloadsWeekly Downloads

    19,078

    Version

    1.2.1

    License

    MIT

    Unpacked Size

    242 kB

    Total Files

    21

    Last publish

    Collaborators

    • pjmolina