@lcap/nasl-parser
Version:
Take Nasl text to Nasl AST with the help of generalized parsing.
38 lines (29 loc) • 1.09 kB
text/typescript
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');
});
});