UNPKG

@lcap/nasl-parser

Version:

Take Nasl text to Nasl AST with the help of generalized parsing.

38 lines (29 loc) 1.09 kB
import { Parser, Grammar } from "nearley"; import grammar from "../../ts/nasl"; let testLoop =` declare logic fnCall(); logic testLoop(x : Integer) { for (aaa in expr, index in fnCall() to arr[1]) { }; for (item in expr, idx in 0) { }; for (item in expr, idx) { }; for (item in expr) { }; end; } ` describe('Test Foreach loop...', () => { test('Test Foreach loop', async () => { const parser = new Parser(Grammar.fromCompiled(grammar)); parser.feed(testLoop); expect(parser.results.length).toBe(1); expect(parser.results[0].cst[1].body['stmts'].length).toBe(5); expect(parser.results[0].cst[1].body['stmts'][0]['__type']).toBe('Foreach'); expect(parser.results[0].cst[1].body['stmts'][0]['item']).toBe('aaa'); expect(parser.results[0].cst[1].body['stmts'][0]['idx']).toBe('index') expect(parser.results[0].cst[1].body['stmts'][0]['start']['caller']['name']).toBe('fnCall'); expect(parser.results[0].cst[1].body['stmts'][0]['end']['expr']['name']).toBe('arr'); }); });