How to use the pegjs.parser function in pegjs

To help you get started, we’ve selected a few pegjs examples, based on popular ways it is used in public projects.

Secure your code as it's written. Use Snyk Code to scan source code in minutes - no build needed - and fix issues immediately.

github wikimedia / parsoid / lib / wt2html / tokenizer.js View on Github external
].join(''),
				'}',
			].join('\n'),
		};
	}

	function cacheInitHook(opts) {
		return [
			'var peg$cache = {};',
			'var visitCounts = new Uint8Array(input.length);',
		].join('\n');
	}

	if (PARSOID_DUMP_TOKENIZER_RULES) {
		var visitor = require('pegjs/lib/compiler/visitor');
		var ast = PEG.parser.parse(this.src);
		// Current code style seems to use spaces in the tokenizer.
		var tab = '    ';
		// Add some eslint overrides and define globals.
		var rulesSource = '/* eslint-disable indent,camelcase,no-unused-vars */\n';
		rulesSource += "\n'use strict';\n\n";
		rulesSource += 'var options, location, input, text, peg$cache, peg$currPos;\n';
		// Prevent redefinitions of variables involved in choice expressions
		var seen = new Set();
		var addVar = function(name) {
			if (!seen.has(name)) {
				rulesSource += tab + 'var ' + name + ' = null;\n';
				seen.add(name);
			}
		};
		// Collect all the code blocks in the AST.
		var dumpCode = function(node) {
github DefinitelyTyped / DefinitelyTyped / types / pegjs / pegjs-tests.ts View on Github external
optimize: "speed",
        plugins: []
    })
}

{
    let parser: pegjs.Parser = pegjs.generate('start = "a" { return options; }');
    let parsed: any = parser.parse("a", {a: 42});
}

try {
    let source: string = pegjs.generate("A = 'test'", {output: "source"});
} catch (error) {
    if (error instanceof pegjs.GrammarError) {
        let e: pegjs.GrammarError = error;
    } else if (error instanceof pegjs.parser.SyntaxError) {
        let e: pegjs.parser.SyntaxError = error;
    }
    
    let e: pegjs.PegjsError = error;
    console.log(e.expected[0].description);
    console.log(e.expected[0].type);
    console.log(e.expected[0].value);
    console.log(e.location.end.column);
    console.log(e.location.end.offset);
    console.log(e.location.end.line);
    console.log(e.message);
    console.log(e.name);
}
github pegjs / pegjs / test / api / pegjs-api.spec.js View on Github external
it( rule, function () {

                        expect( () => {

                            peg.generate( [
                                "start = " + rule,
                                rule + " = 'a'",
                            ].join( "\n" ), { output: "source" } );

                        } ).to.not.throw( peg.parser.SyntaxError );

                    } );
github DefinitelyTyped / DefinitelyTyped / pegjs / pegjs-tests.ts View on Github external
{
    let parser = pegjs.generate("A = 'test'", {
        cache: true,
        allowedStartRules: ["A"],
        optimize: "speed",
        plugins: []
    })
}

try {
    let source: string = pegjs.generate("A = 'test'", {output: "source"});
} catch (error) {
    if (error instanceof pegjs.GrammarError) {
        let e: pegjs.GrammarError = error;
    } else if (error instanceof pegjs.parser.SyntaxError) {
        let e: pegjs.parser.SyntaxError = error;
    }
    
    let e: pegjs.PegjsError = error;
    console.log(e.expected[0].description);
    console.log(e.expected[0].type);
    console.log(e.expected[0].value);
    console.log(e.location.end.column);
    console.log(e.location.end.offset);
    console.log(e.location.end.line);
    console.log(e.message);
    console.log(e.name);
}