UNPKG

@lcap/nasl-parser

Version:

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

441 lines 91.2 kB
"use strict"; Object.defineProperty(exports, "__esModule", { value: true }); // Generated automatically by nearley, version 2.20.1 // http://github.com/Hardmath123/nearley // Bypasses TS6133. Allow declared but unused functions. // @ts-ignore function id(d) { return d[0]; } const to_nasl_definition_1 = require("./toAST/to-nasl-definition"); const common_util_1 = require("./toAST/common-util"); const KEYWORDS = ['asc', 'ascending', 'desc', 'descending'].concat(['abstract', 'annotation', 'any', 'arguments', 'as', 'assert', 'attr', 'attrs', 'auth', 'authentication', 'authorization', 'await', 'boolean', 'break', 'browser', 'by', 'byte', 'case', 'cases', 'catch', 'char', 'class', 'com', 'component', 'components', 'coms', 'config', 'configuration', 'const', 'constant', 'constants', 'constructor', 'continue', 'dataSet', 'dataSource', 'database', 'date', 'datetime', 'debug', 'debugger', 'def', 'default', 'delegate', 'delete', 'dep', 'dependencies', 'dependency', 'deps', 'do', 'double', 'dynamic', 'else', 'entity', 'eval', 'events', 'expect', 'experimental', 'export', 'exports', 'ext', 'extends', 'extension', 'extensions', 'external', 'exts', 'field', 'file', 'final', 'finally', 'float', 'for', 'fs', 'function', 'get', 'goto', 'h5', 'i18n', 'if', 'implements', 'implicit', 'import', 'in', 'inspect', 'instanceof', 'int', 'interface', 'interfaces', 'internal', 'is', 'it', 'let', 'logic', 'logics', 'long', 'match', 'math', 'message', 'method', 'methods', 'mod', 'mods', 'module', 'modules', 'native', 'new', 'number', 'null', 'object', 'operator', 'org', 'organization', 'out', 'override', 'package', 'path', 'pc', 'private', 'process', 'processComponent', 'processComponents', 'processes', 'property', 'protected', 'public', 'require', 'requires', 'resource', 'return', 'returns', 'role', 'roles', 'sealed', 'serialization', 'set', 'short', 'slot', 'slots', 'static', 'storage', 'strictfp', 'string', 'super', 'suspend', 'switch', 'synchronized', 'system', 'theme', 'this', 'throw', 'throws', 'time', 'trait', 'transient', 'try', 'typealias', 'typeof', 'ui', 'val', 'validation', 'var', 'variable', 'variables', 'view', 'viewComponent', 'viewComponents', 'views', 'void', 'volatile', 'when', 'where', 'while', 'with', 'yield', 'end', 'declare']); function EMPTY_LIST() { return []; } const INJ = (idx) => (d) => d[idx]; const MakeSeq = ([d0, d1]) => (0, common_util_1.PackNaslAndCstSeq)(d0.concat(...d1.map(item => item[2]))); // Define the Moo lexer const moo = require('moo'); const lexer = moo.states({ main: { intpStrStart: { match: 's"', push: 'lit' }, slcomment: /\/\/.*?$/, mlcomment: /\/\*[\s\S]*?\*\//, decimal: /-?\d+\.\d+/, int: /-?\d+/, sqString: { match: /'(?:\\['\\bfnrtv]|[^'\\])*'/, value: s => s.slice(1, -1).replace(/\\(.)/g, '$1') }, dqString: { match: /"(?:\\["\\bfnrtv]|[^"\\])*"/, value: s => s.slice(1, -1).replace(/\\(.)/g, '$1') }, trueTok: { match: 'true', type: moo.keywords({ KW: KEYWORDS }) }, falseTok: { match: 'false', type: moo.keywords({ KW: KEYWORDS }) }, sident: { match: /[a-zA-Z][A-Za-z0-9_]*/, type: moo.keywords({ KW: KEYWORDS, }) }, sarrow: '->', leq: '<=', geq: '>=', neq: '!=', eqeq: '==', and: '&&', or: '||', arrow: '=>', dbcolon: '::', semi: ';', coma: ',', lparen: '(', rparen: ')', lbrack: '[', rbrack: ']', lbrace: '{', rbrace: { match: '}', pop: 1 }, builtinAnnStart: '@(', customAnnS: '@', plus: '+', minus: '-', mul: '*', div: '/', percent: '%', eq: '=', exclam: '!', colon: ':', mid: '|', wildcard: '_', langle: '<', rangle: '>', dot: '.', ws: { match: /\s+/, lineBreaks: true }, keyword: KEYWORDS, }, lit: { intpExprS: { match: '${', push: 'main' }, escape: /\\./, intpStrEnd: { match: '"', pop: 1 }, constLit: { match: /(?:[^$"]|\$(?!\{))+/, lineBreaks: true }, } }); const to_nasl_expression_1 = require("./toAST/to-nasl-expression"); const to_nasl_statement_1 = require("./toAST/to-nasl-statement"); const to_nasl_definition_2 = require("./toAST/to-nasl-definition"); const to_nasl_match_1 = require("./toAST/to-nasl-match"); const to_nasl_type_1 = require("./toAST/to-nasl-type"); const to_nasl_definition_3 = require("./toAST/to-nasl-definition"); const to_nasl_call_query_1 = require("./toAST/to-nasl-call-query"); const to_nasl_definition_4 = require("./toAST/to-nasl-definition"); ; ; ; ; const grammar = { Lexer: lexer, ParserRules: [ { "name": "AnnExpression", "symbols": ["Expression"], "postprocess": id }, { "name": "Expression", "symbols": ["InfixSQLFilter"], "postprocess": id }, { "name": "InfixSQLFilter", "symbols": ["LogicOr"], "postprocess": id }, { "name": "InfixSQLFilter$subexpression$1", "symbols": [{ "literal": "startWith" }] }, { "name": "InfixSQLFilter$subexpression$1", "symbols": [{ "literal": "endWith" }] }, { "name": "InfixSQLFilter$subexpression$1", "symbols": [{ "literal": "in" }] }, { "name": "InfixSQLFilter$subexpression$1", "symbols": [{ "literal": "like" }] }, { "name": "InfixSQLFilter", "symbols": ["InfixSQLFilter", "InfixSQLFilter$subexpression$1", "__", "LogicOr"], "postprocess": to_nasl_expression_1.BuildBinary }, { "name": "LogicOr", "symbols": ["LogicAnd"], "postprocess": id }, { "name": "LogicOr", "symbols": ["LogicOr", (lexer.has("or") ? { type: "or" } : or), "_", "LogicAnd"], "postprocess": to_nasl_expression_1.BuildBinary }, { "name": "LogicAnd", "symbols": ["Comparison"], "postprocess": id }, { "name": "LogicAnd", "symbols": ["LogicAnd", (lexer.has("and") ? { type: "and" } : and), "_", "Comparison"], "postprocess": to_nasl_expression_1.BuildBinary }, { "name": "Comparison", "symbols": ["Addition"], "postprocess": id }, { "name": "Comparison$subexpression$1", "symbols": [(lexer.has("eqeq") ? { type: "eqeq" } : eqeq)] }, { "name": "Comparison$subexpression$1", "symbols": [(lexer.has("neq") ? { type: "neq" } : neq)] }, { "name": "Comparison$subexpression$1", "symbols": [(lexer.has("rangle") ? { type: "rangle" } : rangle)] }, { "name": "Comparison$subexpression$1", "symbols": [(lexer.has("langle") ? { type: "langle" } : langle)] }, { "name": "Comparison$subexpression$1", "symbols": [(lexer.has("geq") ? { type: "geq" } : geq)] }, { "name": "Comparison$subexpression$1", "symbols": [(lexer.has("leq") ? { type: "leq" } : leq)] }, { "name": "Comparison", "symbols": ["Comparison", "Comparison$subexpression$1", "_", "Addition"], "postprocess": to_nasl_expression_1.BuildBinary }, { "name": "Addition", "symbols": ["Multiplication"], "postprocess": id }, { "name": "Addition$subexpression$1", "symbols": [(lexer.has("plus") ? { type: "plus" } : plus)] }, { "name": "Addition$subexpression$1", "symbols": [(lexer.has("minus") ? { type: "minus" } : minus)] }, { "name": "Addition", "symbols": ["Addition", "Addition$subexpression$1", "_", "Multiplication"], "postprocess": to_nasl_expression_1.BuildBinary }, { "name": "Multiplication", "symbols": ["UnaryExpr"], "postprocess": id }, { "name": "Multiplication$subexpression$1", "symbols": [(lexer.has("mul") ? { type: "mul" } : mul)] }, { "name": "Multiplication$subexpression$1", "symbols": [(lexer.has("div") ? { type: "div" } : div)] }, { "name": "Multiplication$subexpression$1", "symbols": [(lexer.has("percent") ? { type: "percent" } : percent)] }, { "name": "Multiplication", "symbols": ["Multiplication", "Multiplication$subexpression$1", "_", "UnaryExpr"], "postprocess": to_nasl_expression_1.BuildBinary }, { "name": "UnaryExpr", "symbols": ["PrefixExpr"], "postprocess": id }, { "name": "PrefixExpr", "symbols": ["PostfixExpr"], "postprocess": id }, { "name": "PrefixExpr", "symbols": [(lexer.has("exclam") ? { type: "exclam" } : exclam), "_", "PrefixExpr"], "postprocess": ([prefix, , expr]) => (0, to_nasl_expression_1.toNaslPrefix)(expr) }, { "name": "PostfixExpr", "symbols": ["HighestPriorityExpression"], "postprocess": id }, { "name": "PostfixExpr", "symbols": ["PostfixExpr", "PostfixSuffix"], "postprocess": to_nasl_expression_1.toNaslPostfix }, { "name": "HighestPriorityExpression", "symbols": ["LiteralExpression"], "postprocess": id }, { "name": "HighestPriorityExpression", "symbols": ["ParensizedExpr"], "postprocess": id }, { "name": "HighestPriorityExpression", "symbols": ["TermRef"], "postprocess": id }, { "name": "HighestPriorityExpression", "symbols": ["EnumIntRef"], "postprocess": id }, { "name": "HighestPriorityExpression", "symbols": ["WeakSQL"], "postprocess": id }, { "name": "HighestPriorityExpression", "symbols": ["MatchExpr"], "postprocess": id }, { "name": "HighestPriorityExpression", "symbols": ["SimpleLambda"], "postprocess": id }, { "name": "LiteralExpression", "symbols": ["BooleanLit"], "postprocess": id }, { "name": "LiteralExpression", "symbols": ["StringLit"], "postprocess": id }, { "name": "LiteralExpression", "symbols": ["IntegerLit"], "postprocess": id }, { "name": "LiteralExpression", "symbols": ["DecimalLit"], "postprocess": id }, { "name": "LiteralExpression", "symbols": ["NullLit"], "postprocess": id }, { "name": "LiteralExpression", "symbols": ["ArrayLit"], "postprocess": id }, { "name": "LiteralExpression", "symbols": ["MapLit"], "postprocess": id }, { "name": "LiteralExpression", "symbols": ["SubLogic"], "postprocess": id }, { "name": "LiteralExpression", "symbols": ["EmptyBrackets"], "postprocess": id }, { "name": "TermRef", "symbols": ["QIdentifier"], "postprocess": to_nasl_expression_1.toNaslIdentifier }, { "name": "ParensizedExpr$macrocall$2", "symbols": ["AnnExpression"] }, { "name": "ParensizedExpr$macrocall$1", "symbols": [(lexer.has("lparen") ? { type: "lparen" } : lparen), "_", "ParensizedExpr$macrocall$2", (lexer.has("rparen") ? { type: "rparen" } : rparen), "_"], "postprocess": ([_0, _1, res, _3, _4]) => res[0] }, { "name": "ParensizedExpr", "symbols": ["ParensizedExpr$macrocall$1"], "postprocess": id }, { "name": "PostfixSuffix", "symbols": ["ArrayAccessSuffix"], "postprocess": id }, { "name": "PostfixSuffix", "symbols": ["CallSuffix"], "postprocess": id }, { "name": "PostfixSuffix", "symbols": ["MemberAccessSuffix"], "postprocess": id }, { "name": "PostfixSuffix", "symbols": ["SQLFilterSuffix"], "postprocess": id }, { "name": "ArrayAccessSuffix$macrocall$2", "symbols": ["AnnExpression"] }, { "name": "ArrayAccessSuffix$macrocall$1", "symbols": [(lexer.has("lbrack") ? { type: "lbrack" } : lbrack), "_", "ArrayAccessSuffix$macrocall$2", (lexer.has("rbrack") ? { type: "rbrack" } : rbrack), "_"], "postprocess": ([_0, _1, res, _3, _4]) => res[0] }, { "name": "ArrayAccessSuffix", "symbols": ["ArrayAccessSuffix$macrocall$1"], "postprocess": to_nasl_expression_1.toNaslArrayAccessSuffix }, { "name": "MemberAccessSuffix", "symbols": [(lexer.has("dot") ? { type: "dot" } : dot), "_", "SimpleIdentifier"], "postprocess": ([_0, _1, member]) => (0, to_nasl_expression_1.toNaslMemberAccessSuffix)(member) }, { "name": "SQLFilterSuffix", "symbols": [{ "literal": "isNull" }, "_"], "postprocess": ([d, _1]) => (0, to_nasl_expression_1.toNaslSQLFilterSuffix)() }, { "name": "ArrayLit$macrocall$2$macrocall$2", "symbols": ["AnnExpression"] }, { "name": "ArrayLit$macrocall$2$macrocall$1$ebnf$1", "symbols": [] }, { "name": "ArrayLit$macrocall$2$macrocall$1$ebnf$1$subexpression$1", "symbols": [(lexer.has("coma") ? { type: "coma" } : coma), "_", "ArrayLit$macrocall$2$macrocall$2"] }, { "name": "ArrayLit$macrocall$2$macrocall$1$ebnf$1", "symbols": ["ArrayLit$macrocall$2$macrocall$1$ebnf$1", "ArrayLit$macrocall$2$macrocall$1$ebnf$1$subexpression$1"], "postprocess": (d) => d[0].concat([d[1]]) }, { "name": "ArrayLit$macrocall$2$macrocall$1", "symbols": ["ArrayLit$macrocall$2$macrocall$2", "ArrayLit$macrocall$2$macrocall$1$ebnf$1"], "postprocess": ([d0, d1]) => (0, common_util_1.PackNaslAndCstSeq)(d0.concat(...d1.map(item => item[2]))) }, { "name": "ArrayLit$macrocall$2", "symbols": ["ArrayLit$macrocall$2$macrocall$1"] }, { "name": "ArrayLit$macrocall$1", "symbols": [(lexer.has("lbrack") ? { type: "lbrack" } : lbrack), "_", "ArrayLit$macrocall$2", (lexer.has("rbrack") ? { type: "rbrack" } : rbrack), "_"], "postprocess": ([_0, _1, res, _3, _4]) => res[0] }, { "name": "ArrayLit$ebnf$1$subexpression$1", "symbols": [(lexer.has("colon") ? { type: "colon" } : colon), "_", "Type"] }, { "name": "ArrayLit$ebnf$1", "symbols": ["ArrayLit$ebnf$1$subexpression$1"], "postprocess": id }, { "name": "ArrayLit$ebnf$1", "symbols": [], "postprocess": () => null }, { "name": "ArrayLit", "symbols": ["ArrayLit$macrocall$1", "ArrayLit$ebnf$1"], "postprocess": ([exprs, _ty]) => (0, to_nasl_expression_1.toNaslArrayLit)(exprs, _ty ? _ty[2] : null) }, { "name": "ArrayLit$macrocall$4", "symbols": [] }, { "name": "ArrayLit$macrocall$3", "symbols": [(lexer.has("lbrack") ? { type: "lbrack" } : lbrack), "_", "ArrayLit$macrocall$4", (lexer.has("rbrack") ? { type: "rbrack" } : rbrack), "_"], "postprocess": ([_0, _1, res, _3, _4]) => res[0] }, { "name": "ArrayLit$subexpression$1", "symbols": [(lexer.has("colon") ? { type: "colon" } : colon), "_", "Type"] }, { "name": "ArrayLit", "symbols": ["ArrayLit$macrocall$3", "ArrayLit$subexpression$1"], "postprocess": ([exprs, _ty]) => (0, to_nasl_expression_1.toNaslArrayLit)(exprs, _ty[2]) }, { "name": "MapLit$macrocall$2$macrocall$2", "symbols": ["MapEntry"] }, { "name": "MapLit$macrocall$2$macrocall$1$ebnf$1", "symbols": [] }, { "name": "MapLit$macrocall$2$macrocall$1$ebnf$1$subexpression$1", "symbols": [(lexer.has("coma") ? { type: "coma" } : coma), "_", "MapLit$macrocall$2$macrocall$2"] }, { "name": "MapLit$macrocall$2$macrocall$1$ebnf$1", "symbols": ["MapLit$macrocall$2$macrocall$1$ebnf$1", "MapLit$macrocall$2$macrocall$1$ebnf$1$subexpression$1"], "postprocess": (d) => d[0].concat([d[1]]) }, { "name": "MapLit$macrocall$2$macrocall$1", "symbols": ["MapLit$macrocall$2$macrocall$2", "MapLit$macrocall$2$macrocall$1$ebnf$1"], "postprocess": ([d0, d1]) => (0, common_util_1.PackNaslAndCstSeq)(d0.concat(...d1.map(item => item[2]))) }, { "name": "MapLit$macrocall$2", "symbols": ["MapLit$macrocall$2$macrocall$1"] }, { "name": "MapLit$macrocall$1", "symbols": [(lexer.has("lbrack") ? { type: "lbrack" } : lbrack), "_", "MapLit$macrocall$2", (lexer.has("rbrack") ? { type: "rbrack" } : rbrack), "_"], "postprocess": ([_0, _1, res, _3, _4]) => res[0] }, { "name": "MapLit", "symbols": ["MapLit$macrocall$1"], "postprocess": to_nasl_expression_1.toNaslMapLit }, { "name": "MapEntry", "symbols": ["AnnExpression", (lexer.has("sarrow") ? { type: "sarrow" } : sarrow), "_", "AnnExpression"], "postprocess": ([key, _1, _2, val]) => (0, common_util_1.AutoPackNaslAndCst)({ key, val }) }, { "name": "EmptyBrackets", "symbols": [(lexer.has("lbrack") ? { type: "lbrack" } : lbrack), "_", (lexer.has("rbrack") ? { type: "rbrack" } : rbrack), "_"], "postprocess": to_nasl_expression_1.toNaslEmptyBrackets }, { "name": "SimpleLambda$macrocall$2", "symbols": ["SimpleLambdaDef"] }, { "name": "SimpleLambda$macrocall$1", "symbols": [(lexer.has("lbrace") ? { type: "lbrace" } : lbrace), "_", "SimpleLambda$macrocall$2", (lexer.has("rbrace") ? { type: "rbrace" } : rbrace), "_"], "postprocess": ([_0, _1, res, _3, _4]) => res[0] }, { "name": "SimpleLambda", "symbols": ["SimpleLambda$macrocall$1"], "postprocess": id }, { "name": "SimpleLambdaDef$ebnf$1", "symbols": ["LamParamList"], "postprocess": id }, { "name": "SimpleLambdaDef$ebnf$1", "symbols": [], "postprocess": () => null }, { "name": "SimpleLambdaDef$ebnf$2", "symbols": [(lexer.has("arrow") ? { type: "arrow" } : arrow)], "postprocess": id }, { "name": "SimpleLambdaDef$ebnf$2", "symbols": [], "postprocess": () => null }, { "name": "SimpleLambdaDef", "symbols": ["SimpleLambdaDef$ebnf$1", "SimpleLambdaDef$ebnf$2", "__", "Expression"], "postprocess": ([params, , , expr]) => (0, to_nasl_expression_1.toNaslLambda)(expr, params) }, { "name": "LamParamList$macrocall$2", "symbols": ["LamParam"] }, { "name": "LamParamList$macrocall$1$ebnf$1", "symbols": [] }, { "name": "LamParamList$macrocall$1$ebnf$1$subexpression$1", "symbols": [(lexer.has("coma") ? { type: "coma" } : coma), "_", "LamParamList$macrocall$2"] }, { "name": "LamParamList$macrocall$1$ebnf$1", "symbols": ["LamParamList$macrocall$1$ebnf$1", "LamParamList$macrocall$1$ebnf$1$subexpression$1"], "postprocess": (d) => d[0].concat([d[1]]) }, { "name": "LamParamList$macrocall$1", "symbols": ["LamParamList$macrocall$2", "LamParamList$macrocall$1$ebnf$1"], "postprocess": ([d0, d1]) => (0, common_util_1.PackNaslAndCstSeq)(d0.concat(...d1.map(item => item[2]))) }, { "name": "LamParamList", "symbols": ["LamParamList$macrocall$1"], "postprocess": id }, { "name": "LamParamList$macrocall$4$macrocall$2", "symbols": ["LamParam"] }, { "name": "LamParamList$macrocall$4$macrocall$1$ebnf$1", "symbols": [] }, { "name": "LamParamList$macrocall$4$macrocall$1$ebnf$1$subexpression$1", "symbols": [(lexer.has("coma") ? { type: "coma" } : coma), "_", "LamParamList$macrocall$4$macrocall$2"] }, { "name": "LamParamList$macrocall$4$macrocall$1$ebnf$1", "symbols": ["LamParamList$macrocall$4$macrocall$1$ebnf$1", "LamParamList$macrocall$4$macrocall$1$ebnf$1$subexpression$1"], "postprocess": (d) => d[0].concat([d[1]]) }, { "name": "LamParamList$macrocall$4$macrocall$1", "symbols": ["LamParamList$macrocall$4$macrocall$2", "LamParamList$macrocall$4$macrocall$1$ebnf$1"], "postprocess": ([d0, d1]) => (0, common_util_1.PackNaslAndCstSeq)(d0.concat(...d1.map(item => item[2]))) }, { "name": "LamParamList$macrocall$4$macrocall$1", "symbols": [], "postprocess": EMPTY_LIST }, { "name": "LamParamList$macrocall$4", "symbols": ["LamParamList$macrocall$4$macrocall$1"] }, { "name": "LamParamList$macrocall$3", "symbols": [(lexer.has("lparen") ? { type: "lparen" } : lparen), "_", "LamParamList$macrocall$4", (lexer.has("rparen") ? { type: "rparen" } : rparen), "_"], "postprocess": ([_0, _1, res, _3, _4]) => res[0] }, { "name": "LamParamList", "symbols": ["LamParamList$macrocall$3"], "postprocess": id }, { "name": "LamParam$ebnf$1$subexpression$1", "symbols": ["TyAnn"] }, { "name": "LamParam$ebnf$1", "symbols": ["LamParam$ebnf$1$subexpression$1"], "postprocess": id }, { "name": "LamParam$ebnf$1", "symbols": [], "postprocess": () => null }, { "name": "LamParam", "symbols": ["SimpleIdentifier", "LamParam$ebnf$1"], "postprocess": ([name, ty]) => (0, to_nasl_expression_1.toNaslLamParam)(name, ty) }, { "name": "TyParamList$macrocall$2$macrocall$2", "symbols": ["TypeVariable"] }, { "name": "TyParamList$macrocall$2$macrocall$1$ebnf$1", "symbols": [] }, { "name": "TyParamList$macrocall$2$macrocall$1$ebnf$1$subexpression$1", "symbols": [(lexer.has("coma") ? { type: "coma" } : coma), "_", "TyParamList$macrocall$2$macrocall$2"] }, { "name": "TyParamList$macrocall$2$macrocall$1$ebnf$1", "symbols": ["TyParamList$macrocall$2$macrocall$1$ebnf$1", "TyParamList$macrocall$2$macrocall$1$ebnf$1$subexpression$1"], "postprocess": (d) => d[0].concat([d[1]]) }, { "name": "TyParamList$macrocall$2$macrocall$1", "symbols": ["TyParamList$macrocall$2$macrocall$2", "TyParamList$macrocall$2$macrocall$1$ebnf$1"], "postprocess": ([d0, d1]) => (0, common_util_1.PackNaslAndCstSeq)(d0.concat(...d1.map(item => item[2]))) }, { "name": "TyParamList$macrocall$2$macrocall$1", "symbols": [], "postprocess": EMPTY_LIST }, { "name": "TyParamList$macrocall$2", "symbols": ["TyParamList$macrocall$2$macrocall$1"] }, { "name": "TyParamList$macrocall$1", "symbols": [(lexer.has("langle") ? { type: "langle" } : langle), "_", "TyParamList$macrocall$2", (lexer.has("rangle") ? { type: "rangle" } : rangle), "_"], "postprocess": ([_0, _1, res, _3, _4]) => res[0] }, { "name": "TyParamList", "symbols": ["TyParamList$macrocall$1"], "postprocess": (0, common_util_1.TYPE)("TyParamList") }, { "name": "LogicParam", "symbols": ["VarInit"], "postprocess": to_nasl_expression_1.toNaslLogicParam }, { "name": "TyAnn", "symbols": [(lexer.has("colon") ? { type: "colon" } : colon), "_", "Type"], "postprocess": ([_0, _1, ty]) => ty }, { "name": "CallSuffix$ebnf$1", "symbols": ["TypeArgList"], "postprocess": id }, { "name": "CallSuffix$ebnf$1", "symbols": [], "postprocess": () => null }, { "name": "CallSuffix", "symbols": ["CallSuffix$ebnf$1", "ValueArgList"], "postprocess": to_nasl_expression_1.toNaslCallSuffix }, { "name": "TypeArgList$macrocall$2$macrocall$2", "symbols": ["Type"] }, { "name": "TypeArgList$macrocall$2$macrocall$1$ebnf$1", "symbols": [] }, { "name": "TypeArgList$macrocall$2$macrocall$1$ebnf$1$subexpression$1", "symbols": [(lexer.has("coma") ? { type: "coma" } : coma), "_", "TypeArgList$macrocall$2$macrocall$2"] }, { "name": "TypeArgList$macrocall$2$macrocall$1$ebnf$1", "symbols": ["TypeArgList$macrocall$2$macrocall$1$ebnf$1", "TypeArgList$macrocall$2$macrocall$1$ebnf$1$subexpression$1"], "postprocess": (d) => d[0].concat([d[1]]) }, { "name": "TypeArgList$macrocall$2$macrocall$1", "symbols": ["TypeArgList$macrocall$2$macrocall$2", "TypeArgList$macrocall$2$macrocall$1$ebnf$1"], "postprocess": ([d0, d1]) => (0, common_util_1.PackNaslAndCstSeq)(d0.concat(...d1.map(item => item[2]))) }, { "name": "TypeArgList$macrocall$2$macrocall$1", "symbols": [], "postprocess": EMPTY_LIST }, { "name": "TypeArgList$macrocall$2", "symbols": ["TypeArgList$macrocall$2$macrocall$1"] }, { "name": "TypeArgList$macrocall$1", "symbols": [(lexer.has("langle") ? { type: "langle" } : langle), "_", "TypeArgList$macrocall$2", (lexer.has("rangle") ? { type: "rangle" } : rangle), "_"], "postprocess": ([_0, _1, res, _3, _4]) => res[0] }, { "name": "TypeArgList", "symbols": ["TypeArgList$macrocall$1"], "postprocess": id }, { "name": "ValueArgList$macrocall$2$macrocall$2", "symbols": ["ValueArg"] }, { "name": "ValueArgList$macrocall$2$macrocall$1$ebnf$1", "symbols": [] }, { "name": "ValueArgList$macrocall$2$macrocall$1$ebnf$1$subexpression$1", "symbols": [(lexer.has("coma") ? { type: "coma" } : coma), "_", "ValueArgList$macrocall$2$macrocall$2"] }, { "name": "ValueArgList$macrocall$2$macrocall$1$ebnf$1", "symbols": ["ValueArgList$macrocall$2$macrocall$1$ebnf$1", "ValueArgList$macrocall$2$macrocall$1$ebnf$1$subexpression$1"], "postprocess": (d) => d[0].concat([d[1]]) }, { "name": "ValueArgList$macrocall$2$macrocall$1$ebnf$2$subexpression$1", "symbols": [(lexer.has("coma") ? { type: "coma" } : coma), "_"] }, { "name": "ValueArgList$macrocall$2$macrocall$1$ebnf$2", "symbols": ["ValueArgList$macrocall$2$macrocall$1$ebnf$2$subexpression$1"], "postprocess": id }, { "name": "ValueArgList$macrocall$2$macrocall$1$ebnf$2", "symbols": [], "postprocess": () => null }, { "name": "ValueArgList$macrocall$2$macrocall$1", "symbols": ["ValueArgList$macrocall$2$macrocall$2", "ValueArgList$macrocall$2$macrocall$1$ebnf$1", "ValueArgList$macrocall$2$macrocall$1$ebnf$2"], "postprocess": MakeSeq }, { "name": "ValueArgList$macrocall$2$macrocall$1", "symbols": [], "postprocess": EMPTY_LIST }, { "name": "ValueArgList$macrocall$2", "symbols": ["ValueArgList$macrocall$2$macrocall$1"] }, { "name": "ValueArgList$macrocall$1", "symbols": [(lexer.has("lparen") ? { type: "lparen" } : lparen), "_", "ValueArgList$macrocall$2", (lexer.has("rparen") ? { type: "rparen" } : rparen), "_"], "postprocess": ([_0, _1, res, _3, _4]) => res[0] }, { "name": "ValueArgList$ebnf$1", "symbols": ["TrailingLambda"], "postprocess": id }, { "name": "ValueArgList$ebnf$1", "symbols": [], "postprocess": () => null }, { "name": "ValueArgList", "symbols": ["ValueArgList$macrocall$1", "ValueArgList$ebnf$1"], "postprocess": ([args, lam]) => (0, to_nasl_expression_1.toNaslValArgList)(args, lam) }, { "name": "TrailingLambda", "symbols": ["SimpleLambda"], "postprocess": id }, { "name": "ValueArg", "symbols": ["NamedArg"], "postprocess": id }, { "name": "ValueArg", "symbols": ["UnnamedArg"], "postprocess": id }, { "name": "UnnamedArg", "symbols": ["AnnExpression"], "postprocess": ([expr]) => (0, to_nasl_expression_1.toNaslValArg)(expr) }, { "name": "NamedArg", "symbols": ["SimpleIdentifier", (lexer.has("eq") ? { type: "eq" } : eq), "_", "AnnExpression"], "postprocess": ([name, _1, _2, expr]) => (0, to_nasl_expression_1.toNaslValArg)(expr, name) }, { "name": "BooleanLit$subexpression$1", "symbols": [(lexer.has("trueTok") ? { type: "trueTok" } : trueTok)] }, { "name": "BooleanLit$subexpression$1", "symbols": [(lexer.has("falseTok") ? { type: "falseTok" } : falseTok)] }, { "name": "BooleanLit", "symbols": ["BooleanLit$subexpression$1", "_"], "postprocess": to_nasl_expression_1.toNaslBooleanLit }, { "name": "StringLit$subexpression$1", "symbols": [(lexer.has("sqString") ? { type: "sqString" } : sqString)] }, { "name": "StringLit$subexpression$1", "symbols": [(lexer.has("dqString") ? { type: "dqString" } : dqString)] }, { "name": "StringLit", "symbols": ["StringLit$subexpression$1", "_"], "postprocess": to_nasl_expression_1.toNaslStringLit }, { "name": "StringLit", "symbols": ["JSString", "_"], "postprocess": id }, { "name": "StringLit", "symbols": ["StringInterpolation", "_"], "postprocess": id }, { "name": "JSString$ebnf$1", "symbols": [] }, { "name": "JSString$ebnf$1", "symbols": ["JSString$ebnf$1", "dstrchar"], "postprocess": (d) => d[0].concat([d[1]]) }, { "name": "JSString", "symbols": [{ "literal": "js\"" }, "JSString$ebnf$1", { "literal": "\"" }], "postprocess": ([, d,]) => (0, to_nasl_expression_1.toNaslUnparsed)(d.join("")) }, { "name": "JSString$ebnf$2", "symbols": [] }, { "name": "JSString$ebnf$2", "symbols": ["JSString$ebnf$2", "sstrchar"], "postprocess": (d) => d[0].concat([d[1]]) }, { "name": "JSString", "symbols": [{ "literal": "js'" }, "JSString$ebnf$2", { "literal": "'" }], "postprocess": ([, d,]) => (0, to_nasl_expression_1.toNaslUnparsed)(d.join("")) }, { "name": "StringInterpolation$ebnf$1", "symbols": [] }, { "name": "StringInterpolation$ebnf$1", "symbols": ["StringInterpolation$ebnf$1", "IntpPart"], "postprocess": (d) => d[0].concat([d[1]]) }, { "name": "StringInterpolation", "symbols": [(lexer.has("intpStrStart") ? { type: "intpStrStart" } : intpStrStart), "StringInterpolation$ebnf$1", (lexer.has("intpStrEnd") ? { type: "intpStrEnd" } : intpStrEnd)], "postprocess": ([, ds,]) => (0, to_nasl_expression_1.toNaslStringInterpolation)(ds) }, { "name": "IntpPart", "symbols": ["IntpExpr"], "postprocess": d => { let xxx = ({ __type: 'Expression', expr: d[0] }); return xxx; } }, { "name": "IntpPart", "symbols": [(lexer.has("constLit") ? { type: "constLit" } : constLit)], "postprocess": ([d]) => { return ({ __type: 'InterpString', str: d }); } }, { "name": "ItpStr", "symbols": [/[^`$]/], "postprocess": id }, { "name": "IntpExpr", "symbols": [(lexer.has("intpExprS") ? { type: "intpExprS" } : intpExprS), "Expression", (lexer.has("rbrace") ? { type: "rbrace" } : rbrace)], "postprocess": INJ(1) }, { "name": "IntegerLit", "symbols": [(lexer.has("int") ? { type: "int" } : int), "_"], "postprocess": ([d]) => (0, to_nasl_expression_1.toNaslIntegerLit)(d.value) }, { "name": "DecimalLit", "symbols": [(lexer.has("decimal") ? { type: "decimal" } : decimal), "_"], "postprocess": ([d]) => (0, to_nasl_expression_1.toNaslDecimalLit)(d.value) }, { "name": "NullLit", "symbols": [{ "literal": "null" }, "_"], "postprocess": to_nasl_expression_1.toNaslNullLit }, { "name": "QIdentifier", "symbols": ["SimpleIdentifier"], "postprocess": ([name]) => (0, common_util_1.createQIdentifier)(name) }, { "name": "QIdentifier$ebnf$1", "symbols": ["QNotation"] }, { "name": "QIdentifier$ebnf$1", "symbols": ["QIdentifier$ebnf$1", "QNotation"], "postprocess": (d) => d[0].concat([d[1]]) }, { "name": "QIdentifier", "symbols": ["QIdentifier$ebnf$1", "SimpleIdentifier"], "postprocess": ([namespace, name]) => (0, common_util_1.TYPE)('QIdentifier', { namespace: namespace.flat(), name }) }, { "name": "SimpleIdentifier", "symbols": [(lexer.has("sident") ? { type: "sident" } : sident), "_"], "postprocess": ([d]) => d.value }, { "name": "QNotation", "symbols": ["SimpleIdentifier", (lexer.has("dbcolon") ? { type: "dbcolon" } : dbcolon)], "postprocess": INJ(0) }, { "name": "EnumIntRef$ebnf$1", "symbols": ["QNotation"] }, { "name": "EnumIntRef$ebnf$1", "symbols": ["EnumIntRef$ebnf$1", "QNotation"], "postprocess": (d) => d[0].concat([d[1]]) }, { "name": "EnumIntRef", "symbols": ["EnumIntRef$ebnf$1", "IntegerLit"], "postprocess": to_nasl_expression_1.toNaslEnumIntRef }, { "name": "VarDecl", "symbols": [{ "literal": "let" }, "_", "VarInit", "StmtHardSep"], "postprocess": ([_0, _1, init, _3]) => init }, { "name": "VarInit$ebnf$1", "symbols": ["TyAnn"], "postprocess": id }, { "name": "VarInit$ebnf$1", "symbols": [], "postprocess": () => null }, { "name": "VarInit$ebnf$2", "symbols": ["AssignValue"], "postprocess": id }, { "name": "VarInit$ebnf$2", "symbols": [], "postprocess": () => null }, { "name": "VarInit", "symbols": ["SimpleIdentifier", "VarInit$ebnf$1", "VarInit$ebnf$2"], "postprocess": to_nasl_definition_2.toNaslVarInit }, { "name": "Statement$subexpression$1", "symbols": ["If"] }, { "name": "Statement$subexpression$1", "symbols": ["Assignment"] }, { "name": "Statement$subexpression$1", "symbols": ["Switch"] }, { "name": "Statement$subexpression$1", "symbols": ["While"] }, { "name": "Statement$subexpression$1", "symbols": ["Foreach"] }, { "name": "Statement$subexpression$1", "symbols": ["MatchStmt"] }, { "name": "Statement$subexpression$1", "symbols": ["PageRedirection"] }, { "name": "Statement$subexpression$1", "symbols": ["ValidationRuleCall"] }, { "name": "Statement$subexpression$1", "symbols": ["End"] }, { "name": "Statement$subexpression$1", "symbols": ["Abort"] }, { "name": "Statement$subexpression$1", "symbols": ["ExprStmt"] }, { "name": "Statement$ebnf$1$subexpression$1", "symbols": [(lexer.has("semi") ? { type: "semi" } : semi), "__"] }, { "name": "Statement$ebnf$1", "symbols": ["Statement$ebnf$1$subexpression$1"], "postprocess": id }, { "name": "Statement$ebnf$1", "symbols": [], "postprocess": () => null }, { "name": "Statement", "symbols": ["Statement$subexpression$1", "Statement$ebnf$1"], "postprocess": ([d,]) => { return d[0]; } }, { "name": "StmtHardSep", "symbols": ["__"] }, { "name": "StmtHardSep", "symbols": [(lexer.has("semi") ? { type: "semi" } : semi)] }, { "name": "StmtHardSep", "symbols": [(lexer.has("semi") ? { type: "semi" } : semi), "__"], "postprocess": function () { } }, { "name": "Assignment", "symbols": ["SingleAssign"], "postprocess": id }, { "name": "Assignment", "symbols": ["BatchAssign"], "postprocess": id }, { "name": "SingleAssign", "symbols": ["PostfixExpr", "AssignValue"], "postprocess": ([lhs, rhs]) => (0, to_nasl_statement_1.toNaslSingleAssign)(lhs, rhs) }, { "name": "AssignValue", "symbols": [(lexer.has("eq") ? { type: "eq" } : eq), "_", "AnnExpression"], "postprocess": ([_0, _1, ae]) => ae }, { "name": "BatchAssign$macrocall$2$ebnf$1", "symbols": [] }, { "name": "BatchAssign$macrocall$2$ebnf$1", "symbols": ["BatchAssign$macrocall$2$ebnf$1", "SingleAssignWithSemi"], "postprocess": (d) => d[0].concat([d[1]]) }, { "name": "BatchAssign$macrocall$2", "symbols": ["BatchAssign$macrocall$2$ebnf$1"] }, { "name": "BatchAssign$macrocall$1", "symbols": [(lexer.has("lbrace") ? { type: "lbrace" } : lbrace), "_", "BatchAssign$macrocall$2", (lexer.has("rbrace") ? { type: "rbrace" } : rbrace), "_"], "postprocess": ([_0, _1, res, _3, _4]) => res[0] }, { "name": "BatchAssign", "symbols": ["BatchAssign$macrocall$1"], "postprocess": ([ds]) => (0, to_nasl_statement_1.toNaslBatchAsgn)(ds) }, { "name": "SingleAssignWithSemi$ebnf$1$subexpression$1", "symbols": [(lexer.has("semi") ? { type: "semi" } : semi), "_"] }, { "name": "SingleAssignWithSemi$ebnf$1", "symbols": ["SingleAssignWithSemi$ebnf$1$subexpression$1"], "postprocess": id }, { "name": "SingleAssignWithSemi$ebnf$1", "symbols": [], "postprocess": () => null }, { "name": "SingleAssignWithSemi", "symbols": ["SingleAssign", "SingleAssignWithSemi$ebnf$1"], "postprocess": INJ(0) }, { "name": "If$macrocall$2", "symbols": ["AnnExpression"] }, { "name": "If$macrocall$1", "symbols": [(lexer.has("lparen") ? { type: "lparen" } : lparen), "_", "If$macrocall$2", (lexer.has("rparen") ? { type: "rparen" } : rparen), "_"], "postprocess": ([_0, _1, res, _3, _4]) => res[0] }, { "name": "If$macrocall$4", "symbols": ["Statements"] }, { "name": "If$macrocall$3", "symbols": [(lexer.has("lbrace") ? { type: "lbrace" } : lbrace), "_", "If$macrocall$4", (lexer.has("rbrace") ? { type: "rbrace" } : rbrace), "_"], "postprocess": ([_0, _1, res, _3, _4]) => res[0] }, { "name": "If$ebnf$1", "symbols": [] }, { "name": "If$ebnf$1", "symbols": ["If$ebnf$1", "ElseIf"], "postprocess": (d) => d[0].concat([d[1]]) }, { "name": "If$ebnf$2", "symbols": ["FinalElse"], "postprocess": id }, { "name": "If$ebnf$2", "symbols": [], "postprocess": () => null }, { "name": "If", "symbols": [{ "literal": "if" }, "_", "If$macrocall$1", "If$macrocall$3", "If$ebnf$1", "If$ebnf$2"], "postprocess": ([_0, _1, test, body, elseIfs, finalElse]) => (0, to_nasl_statement_1.toNaslIf)(test, body, elseIfs, finalElse) }, { "name": "ElseIf$macrocall$2", "symbols": ["AnnExpression"] }, { "name": "ElseIf$macrocall$1", "symbols": [(lexer.has("lparen") ? { type: "lparen" } : lparen), "_", "ElseIf$macrocall$2", (lexer.has("rparen") ? { type: "rparen" } : rparen), "_"], "postprocess": ([_0, _1, res, _3, _4]) => res[0] }, { "name": "ElseIf$macrocall$4", "symbols": ["Statements"] }, { "name": "ElseIf$macrocall$3", "symbols": [(lexer.has("lbrace") ? { type: "lbrace" } : lbrace), "_", "ElseIf$macrocall$4", (lexer.has("rbrace") ? { type: "rbrace" } : rbrace), "_"], "postprocess": ([_0, _1, res, _3, _4]) => res[0] }, { "name": "ElseIf", "symbols": [{ "literal": "elseif" }, "_", "ElseIf$macrocall$1", "ElseIf$macrocall$3"], "postprocess": ([_0, _1, test, stmts]) => (0, to_nasl_statement_1.toNaslElseIf)(test, stmts) }, { "name": "FinalElse$macrocall$2", "symbols": ["Statements"] }, { "name": "FinalElse$macrocall$1", "symbols": [(lexer.has("lbrace") ? { type: "lbrace" } : lbrace), "_", "FinalElse$macrocall$2", (lexer.has("rbrace") ? { type: "rbrace" } : rbrace), "_"], "postprocess": ([_0, _1, res, _3, _4]) => res[0] }, { "name": "FinalElse", "symbols": [{ "literal": "else" }, "_", "FinalElse$macrocall$1"], "postprocess": INJ(2) }, { "name": "While$macrocall$2", "symbols": ["AnnExpression"] }, { "name": "While$macrocall$1", "symbols": [(lexer.has("lparen") ? { type: "lparen" } : lparen), "_", "While$macrocall$2", (lexer.has("rparen") ? { type: "rparen" } : rparen), "_"], "postprocess": ([_0, _1, res, _3, _4]) => res[0] }, { "name": "While$macrocall$4", "symbols": ["Statements"] }, { "name": "While$macrocall$3", "symbols": [(lexer.has("lbrace") ? { type: "lbrace" } : lbrace), "_", "While$macrocall$4", (lexer.has("rbrace") ? { type: "rbrace" } : rbrace), "_"], "postprocess": ([_0, _1, res, _3, _4]) => res[0] }, { "name": "While", "symbols": [{ "literal": "while" }, "_", "While$macrocall$1", "While$macrocall$3"], "postprocess": ([_0, _1, test, stmts]) => (0, to_nasl_statement_1.toNaslWhile)(test, stmts) }, { "name": "Switch$macrocall$2", "symbols": ["SwitchCases"] }, { "name": "Switch$macrocall$1", "symbols": [(lexer.has("lbrace") ? { type: "lbrace" } : lbrace), "_", "Switch$macrocall$2", (lexer.has("rbrace") ? { type: "rbrace" } : rbrace), "_"], "postprocess": ([_0, _1, res, _3, _4]) => res[0] }, { "name": "Switch", "symbols": [{ "literal": "switch" }, "_", "Switch$macrocall$1"], "postprocess": ([_0, _1, cases]) => (0, to_nasl_statement_1.toNaslSwitch)(cases) }, { "name": "SwitchCases$ebnf$1", "symbols": [] }, { "name": "SwitchCases$ebnf$1", "symbols": ["SwitchCases$ebnf$1", "SwitchNormalCase"], "postprocess": (d) => d[0].concat([d[1]]) }, { "name": "SwitchCases", "symbols": ["SwitchCases$ebnf$1", "SwitchDefaultCase"], "postprocess": ([norm, dft]) => (0, common_util_1.AutoPackNaslAndCst)({ norm: (0, common_util_1.PackNaslAndCstSeq)(norm.flat()), dft }) }, { "name": "SwitchNormalCase$macrocall$2", "symbols": ["Statements"] }, { "name": "SwitchNormalCase$macrocall$1", "symbols": [(lexer.has("lbrace") ? { type: "lbrace" } : lbrace), "_", "SwitchNormalCase$macrocall$2", (lexer.has("rbrace") ? { type: "rbrace" } : rbrace), "_"], "postprocess": ([_0, _1, res, _3, _4]) => res[0] }, { "name": "SwitchNormalCase", "symbols": ["AnnExpression", (lexer.has("arrow") ? { type: "arrow" } : arrow), "_", "SwitchNormalCase$macrocall$1"], "postprocess": ([expr, _1, _2, stmts]) => (0, to_nasl_statement_1.toNaslSwitchCase)(stmts, expr) }, { "name": "SwitchDefaultCase$macrocall$2", "symbols": ["Statements"] }, { "name": "SwitchDefaultCase$macrocall$1", "symbols": [(lexer.has("lbrace") ? { type: "lbrace" } : lbrace), "_", "SwitchDefaultCase$macrocall$2", (lexer.has("rbrace") ? { type: "rbrace" } : rbrace), "_"], "postprocess": ([_0, _1, res, _3, _4]) => res[0] }, { "name": "SwitchDefaultCase", "symbols": [(lexer.has("wildcard") ? { type: "wildcard" } : wildcard), "_", (lexer.has("arrow") ? { type: "arrow" } : arrow), "_", "SwitchDefaultCase$macrocall$1"], "postprocess": ([_0, _1, _2, _3, stmts]) => (0, to_nasl_statement_1.toNaslSwitchCase)(stmts) }, { "name": "Foreach$macrocall$2", "symbols": ["LoopCond"] }, { "name": "Foreach$macrocall$1", "symbols": [(lexer.has("lparen") ? { type: "lparen" } : lparen), "_", "Foreach$macrocall$2", (lexer.has("rparen") ? { type: "rparen" } : rparen), "_"], "postprocess": ([_0, _1, res, _3, _4]) => res[0] }, { "name": "Foreach$macrocall$4", "symbols": ["Statements"] }, { "name": "Foreach$macrocall$3", "symbols": [(lexer.has("lbrace") ? { type: "lbrace" } : lbrace), "_", "Foreach$macrocall$4", (lexer.has("rbrace") ? { type: "rbrace" } : rbrace), "_"], "postprocess": ([_0, _1, res, _3, _4]) => res[0] }, { "name": "Foreach", "symbols": [{ "literal": "for" }, "_", "Foreach$macrocall$1", "Foreach$macrocall$3"], "postprocess": ([_0, _1, cond, stmts]) => (0, to_nasl_statement_1.toNaslForeach)(cond, stmts) }, { "name": "LoopCond$ebnf$1", "symbols": ["LoopIndexAndRange"], "postprocess": id }, { "name": "LoopCond$ebnf$1", "symbols": [], "postprocess": () => null }, { "name": "LoopCond", "symbols": ["SimpleIdentifier", { "literal": "in" }, "_", "AnnExpression", "LoopCond$ebnf$1"], "postprocess": ([item, _0, _1, colle, idxRange]) => (0, common_util_1.PackNaslAndCst)({ item, colle: colle.nasl, idx: idxRange?.nasl.idx, start: idxRange?.nasl.start, end: idxRange?.nasl.end }, (0, common_util_1.TYPE)('LoopCond', { item, colle: colle.cst, idx: idxRange?.cst.idx, start: idxRange?.cst.start, end: idxRange?.cst.end })) }, { "name": "LoopIndexAndRange$ebnf$1", "symbols": ["LoopRange"], "postprocess": id }, { "name": "LoopIndexAndRange$ebnf$1", "symbols": [], "postprocess": () => null }, { "name": "LoopIndexAndRange", "symbols": [(lexer.has("coma") ? { type: "coma" } : coma), "_", "SimpleIdentifier", "LoopIndexAndRange$ebnf$1"], "postprocess": ([_0, _1, idx, range]) => (0, common_util_1.PackNaslAndCst)({ idx, start: range?.nasl.start, end: range?.nasl.end }, { idx, start: range?.cst.start, end: range?.cst.end }) }, { "name": "LoopRange$ebnf$1$subexpression$1", "symbols": [{ "literal": "to" }, "_", "AnnExpression"] }, { "name": "LoopRange$ebnf$1", "symbols": ["LoopRange$ebnf$1$subexpression$1"], "postprocess": id }, { "name": "LoopRange$ebnf$1", "symbols": [], "postprocess": () => null }, { "name": "LoopRange", "symbols": [{ "literal": "in" }, "_", "AnnExpression", "LoopRange$ebnf$1"], "postprocess": ([_0, _1, start, end]) => (0, common_util_1.AutoPackNaslAndCst)({ start: start, end: end?.[2] }) }, { "name": "ExprStmt", "symbols": ["PostfixExpr", "PostfixSuffix"], "postprocess": to_nasl_expression_1.toNaslPostfix }, { "name": "PageRedirection", "symbols": ["InAppRedirection"], "postprocess": id }, { "name": "PageRedirection", "symbols": ["ExtRedirection"], "postprocess": id }, { "name": "InAppRedirection", "symbols": [{ "literal": "goto" }, "__", "PostfixExpr"], "postprocess": INJ(2) }, { "name": "ExtRedirection", "symbols": [{ "literal": "goto" }, "__", "StringLit", "CallSuffix"], "postprocess": ([_0, _1, url, suffix]) => (0, common_util_1.TYPE)('ExtRedirection', { url, suffix }) }, { "name": "Abort", "symbols": [{ "literal": "abort" }, "_"], "postprocess": to_nasl_statement_1.toNaslAbort }, { "name": "End", "symbols": [{ "literal": "end" }, "_"], "postprocess": to_nasl_statement_1.toNaslEnd }, { "name": "ValidationRuleCall", "symbols": [{ "literal": "expect" }, "__", "PostfixExpr"], "postprocess": INJ(1) }, { "name": "MatchStmt$macrocall$2", "symbols": ["AnnExpression"] }, { "name": "MatchStmt$macrocall$1", "symbols": [(lexer.has("lparen") ? { type: "lparen" } : lparen), "_", "MatchStmt$macrocall$2", (lexer.has("rparen") ? { type: "rparen" } : rparen), "_"], "postprocess": ([_0, _1, res, _3, _4]) => res[0] }, { "name": "MatchStmt$macrocall$4", "symbols": ["MatchStmtCases"] }, { "name": "MatchStmt$macrocall$3", "symbols": [(lexer.has("lbrace") ? { type: "lbrace" } : lbrace), "_", "MatchStmt$macrocall$4", (lexer.has("rbrace") ? { type: "rbrace" } : rbrace), "_"], "postprocess": ([_0, _1, res, _3, _4]) => res[0] }, { "name": "MatchStmt", "symbols": [{ "literal": "match" }, "__", "MatchStmt$macrocall$1", "MatchStmt$macrocall$3"], "postprocess": ([_0, _1, expr, cases]) => (0, to_nasl_match_1.toNaslMatchStmt)(expr, cases) }, { "name": "MatchStmtCases$ebnf$1", "symbols": [] }, { "name": "MatchStmtCases$ebnf$1", "symbols": ["MatchStmtCases$ebnf$1", "MatchStmtNormalCase"], "postprocess": (d) => d[0].concat([d[1]]) }, { "name": "MatchStmtCases", "symbols": ["MatchStmtCases$ebnf$1", "MatchStmtDefaultCase"], "postprocess": ([norm, dft]) => (0, common_util_1.AutoPackNaslAndCst)({ norm: (0, common_util_1.PackNaslAndCstSeq)(norm.flat()), dft }) }, { "name": "MatchStmtNormalCase$macrocall$2", "symbols": ["Statements"] }, { "name": "MatchStmtNormalCase$macrocall$1", "symbols": [(lexer.has("lbrace") ? { type: "lbrace" } : lbrace), "_", "MatchStmtNormalCase$macrocall$2", (lexer.has("rbrace") ? { type: "rbrace" } : rbrace), "_"], "postprocess": ([_0, _1, res, _3, _4]) => res[0] }, { "name": "MatchStmtNormalCase", "symbols": ["MatchCasePats", (lexer.has("arrow") ? { type: "arrow" } : arrow), "_", "MatchStmtNormalCase$macrocall$1"], "postprocess": ([pats, , , stmts]) => (0, to_nasl_match_1.toNaslMatchCase)(stmts, pats) }, { "name": "MatchStmtDefaultCase$macrocall$2", "symbols": ["Statements"] }, { "name": "MatchStmtDefaultCase$macrocall$1", "symbols": [(lexer.has("lbrace") ? { type: "lbrace" } : lbrace), "_", "MatchStmtDefaultCase$macrocall$2", (lexer.has("rbrace") ? { type: "rbrace" } : rbrace), "_"], "postprocess": ([_0, _1, res, _3, _4]) => res[0] }, { "name": "MatchStmtDefaultCase", "symbols": [(lexer.has("wildcard") ? { type: "wildcard" } : wildcard), "_", (lexer.has("arrow") ? { type: "arrow" } : arrow), "_", "MatchStmtDefaultCase$macrocall$1"], "postprocess": ([, , , , stmts]) => (0, to_nasl_match_1.toNaslMatchCase)(stmts) }, { "name": "MatchCasePats$macrocall$2", "symbols": ["CasePat"] }, { "name": "MatchCasePats$macrocall$1$ebnf$1", "symbols": [] }, { "name": "MatchCasePats$macrocall$1$ebnf$1$subexpression$1", "symbols": [(lexer.has("mid") ? { type: "mid" } : mid), "_", "MatchCasePats$macrocall$2"] }, { "name": "MatchCasePats$macrocall$1$ebnf$1", "symbols": ["MatchCasePats$macrocall$1$ebnf$1", "MatchCasePats$macrocall$1$ebnf$1$subexpression$1"], "postprocess": (d) => d[0].concat([d[1]]) }, { "name": "MatchCasePats$macrocall$1", "symbols": ["MatchCasePats$macrocall$2", "MatchCasePats$macrocall$1$ebnf$1"], "postprocess": MakeSeq }, { "name": "MatchCasePats$macrocall$1", "symbols": [], "postprocess": EMPTY_LIST }, { "name": "MatchCasePats", "symbols": ["MatchCasePats$macrocall$1"], "postprocess": id }, { "name": "CasePat", "symbols": ["TypePat"], "postprocess": id }, { "name": "CasePat", "symbols": ["ExprPat"], "postprocess": id }, { "name": "ExprPat", "symbols": ["AnnExpression"], "postprocess": id }, { "name": "TypePat", "symbols": ["FnType"], "postprocess": id }, { "name": "MatchExpr$macrocall$2", "symbols": ["MatchExprCases"] }, { "name": "MatchExpr$macrocall$1", "symbols": [(lexer.has("lbrace") ? { type: "lbrace" } : lbrace), "_", "MatchExpr$macrocall$2", (lexer.has("rbrace") ? { type: "rbrace" } : rbrace), "_"], "postprocess": ([_0, _1, res, _3, _4]) => res[0] }, { "name": "MatchExpr", "symbols": [{ "literal": "match" }, "__", "AnnExpression", "MatchExpr$macrocall$1"], "postprocess": ([_0, _1, expr, cases]) => (0, to_nasl_match_1.toNaslMatchExpr)(expr, cases) }, { "name": "MatchExprCases$ebnf$1", "symbols": [] }, { "name": "MatchExprCases$ebnf$1", "symbols": ["MatchExprCases$ebnf$1", "MatchExprNormalCase"], "postprocess": (d) => d[0].concat([d[1]]) }, { "name": "MatchExprCases", "symbols": ["__", "MatchExprCases$ebnf$1", "__", "MatchExprDefaultCase"], "postprocess": ([, norm, , def]) => (0, common_util_1.AutoPackNaslAndCst)({ norm: (0, common_util_1.PackNaslAndCstSeq)(norm.flat()), def }) }, { "name": "MatchExprNormalCase", "symbols": ["MatchCasePats", (lexer.has("arrow") ? { type: "arrow" } : arrow), "_", "AnnExpression"], "postprocess": ([pats, _1, _2, expr]) => (0, to_nasl_match_1.toNaslMatchCase)([expr], pats) }, { "name": "MatchExprDefaultCase", "symbols": [(lexer.has("wildcard") ? { type: "wildcard" } : wildcard), "_", (lexer.has("arrow") ? { type: "arrow" } : arrow), "_", "AnnExpression"], "postprocess": ([_0, _1, _2, _3, expr]) => (0, to_nasl_match_1.toNaslMatchCase)([expr]) }, { "name": "TypeIntro$ebnf$1$macrocall$2$macrocall$2", "symbols": ["TypeVariable"] }, { "name": "TypeIntro$ebnf$1$macrocall$2$macrocall$1$ebnf$1", "symbols": [] }, { "name": "TypeIntro$ebnf$1$macrocall$2$macrocall$1$ebnf$1$subexpression$1", "symbols": [(lexer.has("coma") ? { type: "coma" } : coma), "_", "TypeIntro$ebnf$1$macrocall$2$macrocall$2"] }, { "name": "TypeIntro$ebnf$1$macrocall$2$macrocall$1$ebnf$1", "symbols": ["TypeIntro$ebnf$1$macrocall$2$macrocall$1$ebnf$1", "TypeIntro$ebnf$1$macrocall$2$macrocall$1$ebnf$1$subexpression$1"], "postprocess": (d) => d[0].concat([d[1]]) }, { "name": "TypeIntro$ebnf$1$macrocall$2$macrocall$1", "symbols": ["TypeIntro$ebnf$1$macrocall$2$macrocall$2", "TypeIntro$ebnf$1$macrocall$2$macrocall$1$ebnf$1"], "postprocess": MakeSeq }, { "name": "TypeIntro$ebnf$1$macrocall$2$macrocall$1", "symbols": [], "postprocess": EMPTY_LIST }, { "name": "TypeIntro$ebnf$1$macrocall$2", "symbols": ["TypeIntro$ebnf$1$macrocall$2$macrocall$1"] }, { "name": "TypeIntro$ebnf$1$macrocall$1", "symbols": [(lexer.has("langle") ? { type: "langle" } : langle), "_", "TypeIntro$ebnf$1$macrocall$2", (lexer.has("rangle") ? { type: "rangle" } : rangle), "_"], "postprocess": ([_0, _1, res, _3, _4]) => res[0] }, { "name": "TypeIntro$ebnf$1", "symbols": ["TypeIntro$ebnf$1$macrocall$1"], "postprocess": id }, { "name": "TypeIntro$ebnf$1", "symbols": [], "postprocess": () => null }, { "name": "TypeIntro", "symbols": ["SimpleIdentifier", "TypeIntro$ebnf$1"], "postprocess": ([tyCon, tyVars]) => (0, common_util_1.TYPE)('TypeIntro', { tyCon, tyVars: tyVars ?? [] }) }, { "name": "TypeVaria