{"version":3,"file":"scan.cjs","sources":["../../code/jsy/utils.jsy","../../code/jsy/jsy_lambda_operators.jsy","../../code/jsy/jsy_func_operators.jsy","../../code/jsy/jsy_prefix_operators.jsy","../../code/jsy/jsy_operators.jsy","../../code/jsy/regexp.jsy","../../code/scanner/inject_dedent.jsy","../../code/scanner/_location.jsy","../../code/scanner/basic_offside.jsy","../../code/scanner/context_scanner.jsy","../../code/scanner/basic_contexts.jsy","../../code/scanner/basic_offside_contexts.jsy","../../code/scanner/scan_clike.jsy","../../code/scanner/scan_javascript.jsy","../../code/scanner/scan_jsx_javascript.jsy","../../code/scanner/ast_debug.jsy","../../code/jsy/scan.jsy"],"sourcesContent":["\nconst rx_escape_offside_ops = /[?|+*@:.\\/\\\\\\(\\)\\{\\}\\[\\]\\=\\>]/g ;\nconst re_space_prefix = /(?:^|[ \\t]+)/.source ; // spaces or start of line\nconst re_space_suffix = /(?=$|[ \\t]+)/.source ; // spaces or end of line\n\nexport function regexp_from_jsy_op(jsy_op, with_spacing) ::\n  if 'string' === typeof jsy_op ::\n    // escape Offside operator chars to RegExp\n    jsy_op = jsy_op.replace @ rx_escape_offside_ops, '\\\\$&'\n    // surrounded by newlines or spacees\n    if with_spacing ::\n      jsy_op = re_space_prefix + jsy_op + re_space_suffix\n    return `(?:${jsy_op})` // using a non-matching group\n\n  if jsy_op instanceof RegExp ::\n    return jsy_op.source\n\n\nexport function sourcemap_comment(srcmap_json, newline='\\n') ::\n  if 'string' !== typeof srcmap_json ::\n    srcmap_json = JSON.stringify(srcmap_json)\n\n  let b64 = 'undefined' !== typeof Buffer\n    ? Buffer.from(srcmap_json).toString('base64')\n    : globalThis.btoa @ unescape @ encodeURIComponent @ srcmap_json\n\n  // break up the source mapping url trigger string to prevent false positives on the following line\n  return `${newline}//# ${'sourceMapping'}URL=data:application/json;charset=utf-8;base64,${b64}${newline}`\n\n\n","\n\n// @::   @::>   @::>*   @::*\nconst lambda_block_tbl = @{}\n  '': a => @: pre: `((${a}) => {`, post: '})'\n  '>': a => @: pre: `(async (${a}) => {`, post: '})'\n  '>*': a => @: pre: `((async function * (${a}) {`, post: '}).bind(this))'\n  '*': a => @: pre: `((function * (${a}) {`, post: '}).bind(this))'\n\n// @=>   @=>>\nconst lambda_arrow_tbl = @{}\n  __proto__: lambda_block_tbl\n  '': a => @: pre: `((${a}) =>`, post: ')'\n  '>': a => @: pre: `(async (${a}) =>`, post: ')'\n\n\n// @!::   @!::>   @!::>*   @!::*\nconst iife_expr_tbl = @{}\n  '': a => @: pre: `(((${a}) => {`, post: '})())'\n  '>': a => @: pre: `((async (${a}) => {`, post: '})())'\n  '>*': a => @: pre: `((async function * (${a}) {`, post: '}).call(this))'\n  '*': a => @: pre: `((function * (${a}) {`, post: '}).call(this))'\n\n\n// @!=>   @!=>>\nconst iife_arrow_tbl = @{}\n  __proto__: iife_expr_tbl\n  '': a => @: pre: `(((${a}) =>`, post: ')())'\n  '>': a => @: pre: `((async (${a}) =>`, post: ')())'\n\n\nconst bindLambdaOpZero = table =>\n  function opResolveLambdaZero(p) ::\n    let [_, suffix] = p.content.match(this.jsy_op)\n    let entry = table[suffix || '']\n    if undefined === entry ::\n      throw new SyntaxError @ `JSY lambda expression unrecognized specifier (\"${suffix}\")`\n    return entry('')\n\n\nconst fmt_arg_kw = args => `{${args}}`\nconst fmt_arg_vec = args => `[${args}]`\nconst bindLambdaOpResolve = (table, as_args=(v=>v)) =>\n  function opResolveLambda(p) ::\n    let [_, args, suffix] = p.content.match(this.jsy_op)\n    let entry = table[suffix || '']\n    if undefined === entry ::\n      throw new SyntaxError @ `JSY lambda with args expression unrecognized specifier (\"${suffix}\")`\n    return entry(as_args(args) || '')\n\n\n\nexport const at_lambda_offside = @[]\n  // object unpack all args\n  @{} jsy_op0: '@\\\\:=>', jsy_op: /@\\\\:(.*?)=>(>?\\*?)/,\n      pre: '(()=>', post: ')'\n      opResolve: bindLambdaOpResolve @ lambda_arrow_tbl, fmt_arg_kw\n  @{} jsy_op0: '@\\\\:::', jsy_op: /@\\\\:(.*?)::(>?\\*?)/,\n      pre: '(()=>{', post: '})',\n      opResolve: bindLambdaOpResolve @ lambda_block_tbl, fmt_arg_kw\n\n  // array unpack all args\n  @{} jsy_op0: '@\\\\#=>', jsy_op: /@\\\\#(.*?)=>(>?\\*?)/,\n      pre: '(()=>', post: ')'\n      opResolve: bindLambdaOpResolve @ lambda_arrow_tbl, fmt_arg_vec\n  @{} jsy_op0: '@\\\\#::', jsy_op: /@\\\\#(.*?)::(>?\\*?)/,\n      pre: '(()=>{', post: '})',\n      opResolve: bindLambdaOpResolve @ lambda_block_tbl, fmt_arg_vec\n\n  // normal args\n  @{} jsy_op0: '@\\\\=>', jsy_op: /@\\\\(.*?)=>(>?\\*?)/,\n      pre: '(()=>', post: ')'\n      opResolve: bindLambdaOpResolve @ lambda_arrow_tbl\n  @{} jsy_op0: '@\\\\::', jsy_op: /@\\\\(.*?)::(>?\\*?)/,\n      pre: '(()=>{', post: '})',\n      opResolve: bindLambdaOpResolve @ lambda_block_tbl\n\n  // zero args\n  @{} jsy_op0: '@=>', jsy_op: /@=>(>?\\*?)/,\n      pre: '(()=>', post: ')',\n      opResolve: bindLambdaOpZero @ lambda_arrow_tbl\n  @{} jsy_op0: '@::', jsy_op: /@::(>?\\*?)/,\n      pre: '(()=>{', post: '})',\n      opResolve: bindLambdaOpZero @ lambda_block_tbl\n\n\nexport const at_lambda_iife_offside = @[]\n  @{} jsy_op: '::!', pre: '{(()=>{', post: '})()}', is_kw_close: true\n  @{} jsy_op: '::!>', pre: '{(async ()=>{', post: '})()}', is_kw_close: true\n\n  @{} jsy_op0: '@!*>', jsy_op: /@!\\*>/, pre: '((async function *(){', post: '}).call(this))'\n  @{} jsy_op0: '@!*[]', jsy_op: /@!\\*\\[\\]/, pre: '[... (function *(){', post: '}).call(this)]'\n  @{} jsy_op0: '@!*#', jsy_op: /@!\\*#/, pre: '([... (function *(){', post: '}).call(this)])'\n  @{} jsy_op0: '@!*', jsy_op: /@!\\*/, pre: '((function *(){', post: '}).call(this))'\n\n  @{} jsy_op0: '@!=>', jsy_op: /@!=>(>?\\*?)/,\n      pre: '((()=>', post: ')())',\n      opResolve: bindLambdaOpZero @ iife_arrow_tbl\n\n  @{} jsy_op0: '@!::', jsy_op: /@!::(>?\\*?)/,\n      pre: '((()=>{', post: '})())',\n      opResolve: bindLambdaOpZero @ iife_expr_tbl\n\n  @{} jsy_op0: '@!', jsy_op: /@!(>?\\*?)(?!=>)/,\n      pre: '((()=>{', post: '})())',\n      opResolve: bindLambdaOpZero @ iife_expr_tbl\n\n\nexport const at_lambda_offside_all = [].concat @\n  at_lambda_offside\n  at_lambda_iife_offside\n\n\n","\n// Like lambdas without closing over `this`\n// @~::   @~::>   @~::>*   @~::*\nconst func_block_tbl = @{}\n  '': a => @: pre: `(function (${a}) {`, post: '})'\n  '>': a => @: pre: `(async function(${a}) {`, post: '})'\n  '>*': a => @: pre: `(async function * (${a}) {`, post: '})'\n  '*': a => @: pre: `(function * (${a}) {`, post: '})'\n\n\nexport const at_func_offside = @[]\n  @{} jsy_op0: '@~::', jsy_op: /@~(.*?)::(>?\\*?)/,\n      pre: '(function () {', post: '})',\n      opResolve(p) ::\n        let [_, args, suffix] = p.content.match(this.jsy_op)\n        let entry = func_block_tbl[suffix]\n        if undefined === entry ::\n          throw new SyntaxError @ `JSY function expression unrecognized specifier (\"${suffix}\")`\n        return entry(args || '')\n\n","import {regexp_from_jsy_op} from './utils.jsy'\n\n\nexport const as_op_prefix = (rx, sep=rx.source, inject_sep=sep) => @:\n  prefix: sep, rx_prefix: rx\n  opPrefixResolve(p, at_op) ::\n    let at_res = at_op.opResolve ? at_op.opResolve(p) : at_op\n    let pre = inject_sep + (at_res.pre || '')\n    return @{} ... at_res, pre\n\n\nexport const jsy_prefix_operators = @[]\n  as_op_prefix(/;/)\n  as_op_prefix(/,/)\n  as_op_prefix(/\\?(\\.?)/, '?', '?.')\n\n\nfunction * at_op_for_prefix(at_op, jsy_prefix_operators) ::\n  let {jsy_op0, jsy_op} = at_op\n  if ! /^[@?]/.test @ jsy_op0 || jsy_op ::\n    return\n\n  if undefined === jsy_op0 ::\n    jsy_op0 = jsy_op\n    jsy_op = new RegExp @ regexp_from_jsy_op(jsy_op, false)\n\n  else if 'string' === typeof jsy_op ::\n    jsy_op = new RegExp @ regexp_from_jsy_op(jsy_op, false)\n\n  else if 'function' !== typeof jsy_op.exec ::\n    throw new Error @ 'Unexpected jsy_op type'\n\n  for let jsy_prefix_op of jsy_prefix_operators ::\n    yield @{} ...at_op,\n      jsy_op0: jsy_prefix_op.prefix + jsy_op0\n      jsy_op: new RegExp @ `${jsy_prefix_op.rx_prefix.source}${jsy_op.source}`, jsy_op.flags\n      foldTop: true\n      opResolve: p => jsy_prefix_op.opPrefixResolve @ p, at_op\n\n\nexport function apply_prefix_operators(at_inner_operators, jsy_prefix_operators) ::\n  let res = []\n  for let at_op of at_inner_operators ::\n    res.push @ ... at_op_for_prefix(at_op, jsy_prefix_operators)\n  res.push(... at_inner_operators)\n  return res\n\n","import { at_lambda_offside, at_lambda_iife_offside } from './jsy_lambda_operators.jsy'\nimport { at_func_offside } from './jsy_func_operators.jsy'\nimport { apply_prefix_operators, jsy_prefix_operators } from './jsy_prefix_operators.jsy'\n\n// Order matters here -- list more specific matchers higher (first) in the order\nexport const at_outer_offside = @[]\n  @{} jsy_op: '::()', pre: '(', post: ')', nestBreak: true\n  @{} jsy_op: '::{}', pre: '{', post: '}', nestBreak: true\n  @{} jsy_op: '::[]', pre: '[', post: ']', nestBreak: true\n  @{} jsy_op: '::', pre: ' {', post: '}', nestBreak: true, is_kw_close: true\n\nexport const at_inner_offside_basic = @[]\n  @{} jsy_op: '@:', pre: '({', post: '})', implicitSep: ',', isFoldable: true\n  @{} jsy_op: '@#', pre: '([', post: '])', implicitSep: ',', isFoldable: true\n  @{} jsy_op: '@()', pre: '(', post: ')', implicitSep: ',', isFoldable: true\n  @{} jsy_op: '@{}', pre: '{', post: '}', implicitSep: ',', isFoldable: true\n  @{} jsy_op: '@[]', pre: '[', post: ']', implicitSep: ',', isFoldable: true\n  @{} jsy_op: '@', pre: '(', post: ')', implicitSep: ',', isFoldable: true\n\n\nexport const at_inner_offside_core = [].concat @\n  at_func_offside\n  at_lambda_offside\n  at_lambda_iife_offside\n  at_inner_offside_basic\n\n\nexport const at_experimental = @[]\n  /* experimental ideas; may be removed at any time */\n\n\nexport const at_unknown_ops = @[]\n  @{} jsy_op0: '?@', jsy_op: /\\?@[^\\w\\s]+/,\n  @{} jsy_op0: ';@', jsy_op: /;@[^\\w\\s]+/,\n  @{} jsy_op0: ',@', jsy_op: /,@[^\\w\\s]+/,\n  @{} jsy_op0: '::', jsy_op: /::[^\\w\\s]+/,\n  @{} jsy_op0: '@', jsy_op: /@[^\\w\\s]+/,\n\n\nexport const at_inner_offside = \n  apply_prefix_operators @\n    at_inner_offside_core.flat()\n    jsy_prefix_operators\n\n\nexport const op_template_str = @{} nestBreak: true\n\nexport const at_offside = [].concat @\n  at_outer_offside\n  at_inner_offside\n  at_experimental\n\n\nexport const at_offside_map = at_offside.reduce @\n  (m, ea) => ::\n    if ea.jsy_op0 ::\n      m[ea.jsy_op0] = ea\n\n    if 'string' === typeof ea.jsy_op ::\n      m[ea.jsy_op] = ea\n    return m\n  {}\n\n\nfunction kwExpandOp(p) ::\n  return @{} __proto__: this, pre: p.kw + this.pre\n\nexport const extra_jsy_ops = @{}\n  kw_normal: @{} jsy_op: 'kw', pre: ' (', post: ')', kwExpandOp, in_nested_block: true\n  kw_explicit: @{} jsy_op: 'kw', pre: '', post: '', kwExpandOp, in_nested_block: true\n  tmpl_param: @{} jsy_op: 'tmpl_param', pre: '', post: '', in_nested_block: true\n  jsx_param: @{} jsy_op: 'jsx_param', pre: '', post: '', in_nested_block: true\n\nexport const keywords_with_args = @[] 'if', 'while', 'for await', 'for', 'switch'\nexport const keywords_zero_args = @[] 'catch'\n\nexport const keywords_locator_parts = [].concat @\n  keywords_with_args.map @ e => `else ${e}`\n  keywords_with_args\n  keywords_zero_args\n","import { regexp_from_jsy_op } from './utils.jsy'\nimport { at_offside, at_unknown_ops, keywords_locator_parts } from './jsy_operators.jsy'\n\nconst regexp_keyword = sz => ::\n  sz = sz.replace(/[ ]+/g, '[ ]+') // allow one or more spaces\n  return `(?:${sz})` // using a non-matching group\n\nconst re_keyword_space_prefix = /^(?:[ \\t]*)/.source ; // start of line and indent\nconst re_keyword_trailer = /(?:[ \\t]*(?=[^\\w,:;=]|$))/.source ;\n\nexport const rx_keyword_ops = new RegExp @\n  re_keyword_space_prefix\n    + `(?:${keywords_locator_parts.map(regexp_keyword).join('|')})`\n    + re_keyword_trailer\n  , 'g' // global regexp for lastIndex support\n\nconst regexp_from_offside_op = offside_op =>\n  regexp_from_jsy_op @ offside_op.jsy_op, true\n\nexport const rx_offside_ops = new RegExp @\n  at_offside\n    .map(regexp_from_offside_op)\n    .filter(Boolean)\n    .join('|')\n  'g' // global regexp\n\nexport const rx_unknown_ops = new RegExp @\n  at_unknown_ops\n    .map(regexp_from_offside_op)\n    .filter(Boolean)\n    .join('|')\n  'g' // global regexp\n\n","\nexport function inject_dedent(offside_lines, trailing_types) ::\n  if 'function' !== typeof trailing_types ::\n    const s_trailing_types = new Set @\n      trailing_types || ['comment_eol']\n    trailing_types = k => s_trailing_types.has(k)\n\n  for const ln of offside_lines ::\n    if ln.is_blank :: continue\n\n    const {len_dedent, len_indent, len_inner} = ln\n\n    const offside_dedent = @{}\n      type: 'offside_dedent'\n      len_dedent, len_indent\n\n    if len_inner ::\n      offside_dedent.len_inner = len_inner\n\n    const last = ln.content.pop()\n    if last.multiline || trailing_types(last.type) ::\n      ln.content.push @ offside_dedent, last\n    else ::\n      ln.content.push @ last, offside_dedent\n\n","\nconst SourceLocation = @{}\n  __proto__: null\n\n  get [Symbol.toStringTag]() :: return '«SourceLocation»'\n  toString() :: return `«${this.line}:${this.column}»`\n  get column() :: return this.pos - this.line_pos\n\n  create(source, file) ::\n    const root = @{}\n      line:0, pos:0, line_pos:0\n      __proto__: SourceLocation\n\n    if null != file ::\n      root.file = file\n\n    Object.defineProperties @ root, @{}\n      __root__: @{} value: root\n      source: @{} value: source\n    return Object.freeze @ root\n\n  nextLine() ::\n    let {line, pos} = this\n    line += 1\n    return Object.freeze @:\n      line, pos, line_pos: pos,\n      __proto__: this.__root__\n\n  move(char_len) ::\n    if 'string' === typeof char_len ::\n      char_len = char_len.length\n    else if 'number' === typeof char_len ::\n      char_len |= 0\n    else throw new TypeError('Expected move to be a string or number')\n\n    let {line, pos, line_pos} = this\n    pos += char_len\n    return Object.freeze @:\n      line, pos, line_pos,\n      __proto__: this.__root__\n\n  distance(other) ::\n    const lines = this.line - other.line\n    const chars = this.pos - other.pos\n    return @{} lines, chars\n\n  slice(other) ::\n    if this.source !== other.source ::\n      throw new Error @ `Locations from different sources`\n    return this.source.slice @ this.pos, other.pos\n\n  syntaxError(message) ::\n    const err = new SyntaxError(message)\n    err.src_loc = this\n    return err\n\nexport default SourceLocation.create\n","export const rx_lines = /(\\r\\n|\\r|\\n)/ ;\nexport const rx_indent = /^([ \\t]*)(.*)$/ ;\nexport const rx_indent_order = /^[\\t]*[ ]*$/ ;\n\nimport createLoc from './_location.jsy'\n\nexport function basic_offside_scanner(source, feedback) ::\n  if null == feedback ::\n    feedback = @{}\n      warn(msg, ...args) :: console.warn @ `[Offside Warning]:: ${msg}`, ...args\n\n  const all_lines = []\n  const q_raw_lines = source.split(rx_lines)\n\n  const offside_line_proto = @{}\n    __proto__: null\n    get source() ::\n      const {start, end} = this.loc\n      return start.slice(end)\n\n  let loc_tip = createLoc(source, feedback.file)\n  let rx_indent_choice = null\n\n  while 0 !== q_raw_lines.length ::\n    const loc = @{} start: loc_tip = loc_tip.nextLine()\n\n    const src_line = q_raw_lines.shift() || ''\n    loc.end = loc_tip = loc_tip.move(src_line)\n\n    const src_line_end = q_raw_lines.shift() || ''\n    loc_tip = loc_tip.move(src_line_end)\n\n\n    const match = rx_indent.exec(src_line)\n    const loc_indent = loc.start.move(match[1])\n    const is_blank = 0 === match[2].length\n\n    if ! rx_indent_order.test(match[1]) ::\n      throw loc.start.syntaxError @ `Mixed tab and space indent (${loc_indent})`, \n\n    const raw = @{}\n      line: src_line\n      line_end: src_line_end\n      indent: match[1]\n      content: match[2]\n\n    let node\n    if is_blank ::\n      node = @{}\n        type: 'offside_blank_line', loc\n        is_blank\n\n    else ::\n      const indent_node = @{}\n        type: 'offside_indent',\n        loc: @{}\n          start: loc.start\n          end: loc_indent\n        len_indent: match[1].length\n        indent: match[1]\n\n      const conent_node = @{}\n        type: 'offside_content',\n        loc: @{}\n          start: loc_indent\n          end: loc.end\n        len_indent: match[1].length\n        indent: match[1]\n        content: match[2]\n\n      node = @{}\n        __proto__: offside_line_proto\n        type: 'offside_line', loc\n        indent: indent_node\n        content: conent_node\n        len_indent: match[1].length\n\n    Object.defineProperties @ node, @{} raw: {value: raw}\n    all_lines.push @ node\n\n  add_indent_info(all_lines)\n  return all_lines\n\n\nfunction add_indent_info(all_lines) ::\n  let len_dedent = 0 // how far to dedent to next outer level\n  let len_stack = [0]\n  // work backwards from the file end\n  for let i = all_lines.length-1 ; i>=0 ; i-- ::\n    let ln = all_lines[i]\n    if ln.is_blank :: continue\n\n    ln.len_dedent = len_dedent\n\n    // how many indent prefix chars per line\n    let len_indent = ln.len_indent\n\n    let len_inner\n    while len_stack[0] > len_indent ::\n      len_inner = len_stack.shift()\n\n    if len_stack[0] < len_indent ::\n      // len_indent is the new stack tip\n      len_stack.unshift @ len_indent\n\n    if len_inner ::\n      ln.len_inner = len_inner\n\n    len_dedent = len_indent\n","\nexport function ensure_indent(ctx, scanner) ::\n  const ln_first = scanner.ln_first\n  if undefined === ln_first :: return true\n  const len_first_indent = ln_first.len_indent\n\n  const d_dedent = ctx.ln.len_indent - len_first_indent\n  if d_dedent < 0 ::\n    throw ctx.ln.indent.loc.end.syntaxError @\n      `Invalid indent level in ${scanner.description}. (${ctx.ln.indent.loc.end})  --  current indent: ${ctx.ln.len_indent}  start indent: ${len_first_indent} from (${ln_first.loc.start})`\n  else return true\n\n\nexport function ensure_progress(loc0, loc1) ::\n  if loc0.pos == loc1.pos ::\n    throw new Error @ `Scanner failed to make progress (${loc1})`\n\n  if loc0.pos > loc1.pos ::\n    throw new Error @ `Scanner went backward (${loc1} from ${loc0})`\n\n\n// - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -\n\nexport class DispatchScanner ::\n  constructor(disp_name) ::\n    this.disp_name = disp_name || 'root'\n    this.by_kind = {}\n    this.by_op = {}\n\n  startCompile() ::\n    Object.defineProperties @ this, @{}\n      rx_list: @{} value: (this.rx_list || []).slice()\n    this.by_kind = Object.assign @ {}, this.by_kind\n    this.by_op = Object.assign @ {}, this.by_op\n    return this\n\n  addScannerList(scannerList) ::\n    for const scanner of scannerList ::\n      if scanner ::\n        this.addScanner(scanner)\n    return this\n\n  addScanner(scanner) ::\n    if scanner.withDispatch ::\n      scanner = scanner.withDispatch(this)\n\n    if scanner.is_body ::\n      this.ds_body = scanner\n\n    this.by_op[scanner.op] = scanner\n\n  addRegExpScanner(scanner, kind, re_disp) ::\n    if kind ::\n      this.by_kind[kind] = scanner.op\n      this.rx_list.push @ new RegExp(re_disp, 'g')\n    return this\n\n  finishCompile(ds_body) ::\n    if undefined === ds_body ::\n      ds_body = this.ds_body\n    return Object.defineProperties @ this, @{}\n      ds_body: @{} value: ds_body, writable: true\n\n\n  clone0() ::\n    if undefined !== this.level ::\n      throw new Error @ `Invalid clone0`\n    return this.cloneWithScanner()\n\n  cloneWithScanner(...scanners) ::\n    return this.cloneWithScannerList(scanners)\n  cloneWithScannerList(scanners) ::\n    const self = Object.create(this)\n    self.level = 1 + 0|self.level\n    self.description = self.description.replace @\n      /\\(\\d+\\)/, `(${self.level})`\n\n    self.startCompile()\n    self.addScannerList(scanners)\n    self.finishCompile()\n    return self\n\n\n  get_active_dispatch(ctx) ::\n    return ctx[`dispatch_${this.disp_name}`]\n  set_active_dispatch(ctx) ::\n    ctx.dispatch = ctx[`dispatch_${this.disp_name}`] = this\n\n\n  newline(ctx, is_blank) ::\n\n  scan(ctx, idx0) ::\n    const loc0 = ctx.loc_tip\n    const res = this._scan(ctx, idx0)\n    ensure_progress @ loc0, ctx.loc_tip\n    return res\n\n  _scan(ctx, idx0) ::\n    this.set_active_dispatch(ctx)\n\n    if undefined === this.ln_first ::\n      if undefined === this.level ::\n        throw new Error('Scanner with level: undefined')\n\n      this.ln_first = ctx.ln\n\n    ensure_indent(ctx, this)\n\n    const source = ctx.ln_source // slice is done by setting lastIndex\n    let match=null, idx1 = Infinity\n\n    for const rx of this.rx_list ::\n      rx.lastIndex = idx0 // regexp powered source.slice()\n\n      const m = rx.exec(source)\n      if null !== m && m.index < idx1 ::\n        idx1 = m.index\n        match = m\n\n    if null === match ::\n      return this.ds_body.scan(ctx, idx0)\n\n    if idx0 !== idx1 ::\n      return this.ds_body.scan_fragment @\n        ctx, source.slice(idx0, idx1)\n\n    const kind = match.filter(Boolean)[1]\n    const op = this.by_kind[kind]\n    const op_scanner = this.by_op[op]\n    if ! op_scanner ::\n      throw new Error @ `No scanner registered for « ${kind} »`\n\n    return op_scanner.scan(ctx, idx1)\n\n  scan_fragment(ctx, content) ::\n    throw new Error @ `${this.description} does not support fragments`\n\n\n// - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -\n\nexport class DispatchFirstlineScanner extends DispatchScanner ::\n  clone0() ::\n    const self = super.clone0()\n    self.ds_body = self.ds_body.clone0()\n    return self\n  scan(ctx, idx0) ::\n    ctx.scanner = this.ds_body\n    return super.scan(ctx, idx0)\n\n\n// - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -\n\nexport class EmbeddedDispatchScanner extends DispatchScanner ::\n  constructor(options) ::\n    super @ options.disp_name\n    Object.assign(this, options)\n    this._compileForInit()\n\n  _compileForInit() ::\n    this.startCompile()\n    this.addScannerList(this.scannerList)\n    this.finishCompile()\n\n\n// - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -\n\nexport class BaseSourceScanner ::\n  constructor(options) ::\n    Object.assign(this, options)\n    this._compileForInit()\n\n  _compileForInit() ::\n\n  withDispatch(ds) :: return this\n\n  emit_ast(ctx, content, ast_type) ::\n    const start = ctx.loc_tip\n    const end = ctx.loc_tip = start.move(content || 0)\n    const ast = @{} type: ast_type || this.op, loc: {start, end}, content\n    this.ast_extend(ctx, ast)\n    ctx.parts.push @ ast\n    return ast\n\n  ast_extend(ctx, ast) ::\n\n  newline(ctx, is_blank) ::\n  scan_fragment(ctx, content) ::\n    throw new Error @ `Scanner (${this.description}) does not support fragments`\n  scan(ctx, idx0) ::\n    throw new Error @ `Scanner (${this.description}) does not support scans`\n\n\n// - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -\n\nexport class SourceCodeScanner extends BaseSourceScanner ::\n  get is_body() :: return true\n\n  scan_fragment(ctx, content) ::\n    this.scan_content @ ctx, content\n\n  scan(ctx, idx0) ::\n    this.scan_content @ ctx, ctx.ln_source.slice(idx0)\n\n  scan_content(ctx, content) ::\n    if content ::\n      this.emit_ast @ ctx, content\n\n\n// - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -\n\nexport class NestedCodeScanner extends SourceCodeScanner ::\n  constructor(options) ::\n    super(options)\n    if ! this.char_pairs ::\n      throw new Error @ 'Missing required char_pairs mapping'\n\n    const chars = Object.keys(this.char_pairs).join('\\\\')\n    this.rx = new RegExp(`([${chars}])`)\n\n  withOuter(options) ::\n    const scanner = options.scanner\n    if 'function' !== typeof scanner.scan ::\n      throw new Error @ `Expected valid outer scanner`\n    delete options.scanner\n\n    const self = Object.create @ this, @{}\n      restore_scanner: @{} value: scanner\n    Object.assign @ self, options\n    return self\n\n  scan_content(ctx, nested_content) ::\n    const {stack, char_pairs} = this\n\n    let content = ''\n    for const tok of nested_content.split(this.rx) ::\n      const p = 1 === tok.length ? char_pairs[tok] : undefined\n\n      if undefined === p ::\n        content += tok\n        continue\n\n      if true === p ::\n        content += tok\n        stack.push @ tok\n        continue\n\n      const tip = stack.pop()\n      if tip !== p ::\n        const loc = ctx.loc_tip.move(content)\n        throw loc.syntaxError @\n          `Mismatched nesting in ${this.description} (${loc})`\n\n      if 0 !== stack.length ::\n        content += tok\n        continue\n\n      if content ::\n        this.emit_ast @ ctx, content\n      this.emit_ast @ ctx, tok, this.ast_end || 'nested_end'\n      ctx.scanner = this.restore_scanner\n      return\n\n    // all tokens with non-zero stack\n    if content ::\n      this.emit_ast @ ctx, content\n\n\n// - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -\n\nexport class RegExpScanner extends BaseSourceScanner ::\n\n  _compileForInit() ::\n    const {rx_open, rx_close} = this\n    const rx_disp = new RegExp @\n      (rx_open ? rx_open.source : '') + rx_close.source\n\n    const rx_resume = new RegExp @\n      '^' + rx_close.source\n\n    Object.defineProperties @ this, @{}\n      rx_disp: @{} value: rx_disp\n      rx_resume: @{} value: rx_resume\n\n  withDispatch(ds) ::\n    this.compileForDispatch(ds)\n    return this\n\n  compileForDispatch(ds) ::\n    if undefined === this.kind :: return\n\n    const match = this.rx_disp.exec @ this.example\n    if null === match || this.kind !== match[1] || null == match[2] ::\n      throw new Error @ `Invalid scanner regexp and/or example (${this.description})`\n\n    ds.addRegExpScanner @ this, this.kind, this.rx_disp.source\n\n\n\n  newline(ctx, is_blank) ::\n    if ! this.multiline && ! this.allow_blank_close ::\n      throw ctx.ln.loc.end.syntaxError @\n        `Newline in ${this.description} (${ctx.ln.loc.end})`\n\n  ast_extend(ctx, ast) ::\n    const ln = this.ln_first || ctx.ln\n    if undefined !== ln.len_inner ::\n      ast.block_indent = ln.len_inner\n    return ast\n\n  scan(ctx, idx0) ::\n    const match = this.rx_disp.exec @ ctx.ln_source.slice(idx0)\n    if null === match ::\n      throw ctx.loc_tip.syntaxError @\n        `Invalid scan ${this.description}. (${ctx.loc_tip})`\n\n    const [content, open, close] = match\n\n    const t_content = this.nestTrim(content, close, false)\n    if null != t_content ::\n      this.ast_scan_match @ {open, close},\n        this.emit_ast @ ctx, t_content,\n    return this.post_scan(ctx, close)\n\n  scan_continue(ctx, idx0) ::\n    ensure_indent(ctx, this)\n\n    const match = this.rx_resume.exec @ ctx.ln_source.slice(idx0)\n    if null === match ::\n      throw ctx.loc_tip.syntaxError @\n        `Invalid scan continue ${this.description}. (${ctx.loc_tip})`\n\n    const [content, close] = match\n\n    const t_content = this.nestTrim(content, close, true)\n    if null != t_content ::\n      this.ast_scan_match @ {close},\n        this.emit_ast @ ctx, t_content,\n    return this.post_scan(ctx, close)\n\n  ast_scan_match(match, ast) ::\n\n  nestTrim(content, close, isContinue) :: return content\n\n  post_scan(ctx, close) ::\n    if ! close ::\n      if this.invert_close ::\n        // e.g. no '\\' continuations at end of line\n        return true\n\n      if ! this.allow_blank_close ::\n        ctx.scanner = this.continueScanner(ctx)\n      return\n\n    else if this.invert_close ::\n      // e.g. '\\' continuations at end of line\n      ctx.scanner = this.continueScanner(ctx)\n\n    return this.nestMatch @ close,\n      ctx, this.hostScanner || this\n\n  nestMatch(close, ctx, hostScanner) ::\n    const nesting = this.nesting\n    if undefined !== nesting ::\n      return this.nestWith @\n        nesting[close],\n        ctx, hostScanner\n    return true // pop ctx.scanner\n\n  nestWith(nested, ctx, hostScanner) ::\n    if true === nested || undefined === nested || null === nested ::\n      return true // pop ctx.scanner\n\n    else if hostScanner === nested || 'host' === nested ::\n      ctx.scanner = hostScanner.continueScanner(ctx)\n      return\n\n    else if 'function' === typeof nested.nestedScanner ::\n      ctx.scanner = nested.nestedScanner(ctx)\n      return\n\n    else if 'function' === typeof nested ::\n      return nested @ ctx, hostScanner\n\n    return nested\n\n\n  nestedScanner(ctx) ::\n    return this._asNestedScanner @ ctx, 'nest', @{}\n\n  continueScanner(ctx) ::\n    return this._asNestedScanner @ ctx, 'cont', @{}\n      op: this.op_continue || this.op\n      continueScanner(ctx) :: return this\n      scan(ctx, idx0) ::\n        this.scan_continue(ctx, idx0)\n\n  _asNestedScanner(ctx, desc, body) ::\n    const restore_scanner = ctx.scanner\n    const self = @{}\n      __proto__: this\n      description: `${this.description} (${desc})`\n      ln_first: ctx.ln_first || ctx.ln\n\n      _pop_scanner(ctx) ::\n        if this.op_pop ::\n          this.emit_ast @ ctx, '', this.op_pop\n        ctx.scanner = restore_scanner\n\n      scan(ctx, idx0) ::\n        if true === super.scan(ctx, idx0) ::\n          this._pop_scanner(ctx)\n\n      scan_continue(ctx, idx0) ::\n        if true === super.scan_continue(ctx, idx0) ::\n          this._pop_scanner(ctx)\n\n    return Object.assign @ self, body\n\n\n// - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -\n\nexport class MultiLineScanner extends RegExpScanner ::\n  newline(ctx, is_blank) ::\n  get multiline() :: return true\n\n  ast_extend(ctx, ast) ::\n    //let ln = this.ln_first || ctx.ln\n    let col = ast.loc.start.column\n    let mlctx = this.mlctx ??= {col}\n\n    if col < mlctx.col ::\n      mlctx.col = col\n\n    ast.mlctx = mlctx\n    return ast\n\n\n// - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -\n\nexport class TaggedRegExpScanner extends RegExpScanner ::\n  withTag(ctx, tag, hostScanner) ::\n    const rx_replace = this.rx_replace || /tag/g\n\n    const re_open = this.rx_open.source\n      .replace @ rx_replace, tag\n    const re_close = this.rx_close.source\n      .replace @ rx_replace, tag\n\n    const rx_open = new RegExp @ re_open\n    const rx_close = new RegExp @ re_close\n    const rx_disp = new RegExp @ re_open + rx_close.source\n    const rx_resume = new RegExp @ '^' + re_close\n\n    const self = @{} __proto__: this, hostScanner,\n      rx_open, rx_close, rx_resume, rx_disp,\n      tag, ln_first: ctx.ln\n      compileForDispatch(ds) ::\n        // skip testing example for second pass of this object\n        ds.addRegExpScanner @ this, this.kind, this.rx_disp.source\n\n    self.tagScanner(ctx, tag, hostScanner)\n    return self\n\n  tagScanner(ctx, tag, hostScanner) ::\n\n\n// - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -\n\nexport class DynamicScanner extends MultiLineScanner ::\n  scan(ctx, idx0) ::\n    const leader_match = this.rx_disp.exec @ ctx.ln_source.slice(idx0)\n\n    const self = this.withLeaderTag @ ctx, leader_match[2]\n    return self._leader.scan(ctx, idx0)\n\n  withLeaderTag(ctx, tag) ::\n    const self = @{}\n      __proto__: this\n      __root__: this.__root__ || this\n      ln_first: ctx.ln\n\n    self._trailer = this.trailer && this.trailer.withTag @ ctx, tag, self\n    self._leader = this.leader.withTag @ ctx, tag, self\n    return self\n\n\n// - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -\n\nexport class EmbeddedDynamicScanner extends DynamicScanner ::\n  continueScanner(ctx) ::\n    ensure_indent(ctx, this)\n    const ds_body = this.ds_body.cloneWithScanner @ this._trailer\n\n    // inherit ln_first\n    ds_body.ln_first = \n      ds_body.disp_name === ctx.dispatch.disp_name\n        ? ctx.dispatch.ln_first\n        : this.ln_first || ctx.ln\n\n    return ds_body\n\n  andDispatchWith(options) ::\n    options.scannerList = @[] ... options.scannerList, this\n    const ds_body = new EmbeddedDispatchScanner(options)\n    this.ds_body = ds_body\n    return ds_body\n\n","import { DispatchScanner, DispatchFirstlineScanner } from './context_scanner.jsy'\n\nexport function bind_context_scanner(context_scanners) ::\n  if ! Object.isFrozen(context_scanners) || ! Array.isArray(context_scanners) ::\n    throw new TypeError @ `Expected a frozen array of context scanners`\n\n  const cache = bind_context_scanner.cache || new WeakMap()\n  if cache !== bind_context_scanner.cache ::\n    bind_context_scanner.cache = cache\n\n  let res = cache.get(context_scanners)\n  if undefined === res ::\n    res = compile_context_scanner(context_scanners)\n    cache.set(context_scanners, res)\n  return res\n\n\nfunction compile_context_scanner(context_scanners) ::\n  const ds_first = build_composite_scanner(context_scanners)\n  return context_scanner\n\n  function context_scanner(offside_lines) ::\n    const ctx = @{} scanner: ds_first.clone0()\n\n    for const ln of offside_lines ::\n      if ln.is_blank ::\n        delete ln.content\n        ctx.scanner.newline(ctx, true)\n        continue\n\n\n      ctx.parts = []\n      ctx.ln = ln\n\n      scan_source(ctx, ln.content)\n\n      if 0 === ctx.parts.length ::\n        throw new Error @ `No parts generated by context scanner`\n\n      ln.content = ctx.parts\n      ctx.scanner.newline(ctx, false)\n\n    ctx.scanner.newline(ctx, true)\n    return offside_lines\n\n\n  function scan_source(ctx, ln_content) ::\n    const ln_source = ctx.ln_source = ln_content.content\n    const loc_start = ctx.loc_tip = ctx.loc_start = ln_content.loc.start\n    const pos0 = loc_start.pos\n\n    while true ::\n      const idx0 = ctx.loc_tip.pos - pos0\n      if idx0 >= ln_source.length ::\n        return // done with this line\n\n      ctx.scanner.scan @ ctx, idx0\n\n\n  function build_composite_scanner() ::\n    const ds_body = new DispatchScanner().startCompile()\n    ds_body.description = 'JSY Dispatch scanner (0)'\n    const ds_first = new DispatchFirstlineScanner().startCompile()\n    ds_first.description = 'Firstline JSY Dispatch scanner (0)'\n\n    for const scanner of context_scanners ::\n      if ! scanner :: continue\n\n      const ds = scanner.firstline ? ds_first : ds_body\n      ds.addScanner(scanner)\n\n    ds_body.finishCompile()\n    return ds_first.finishCompile(ds_body)\n\n","import { basic_offside_scanner } from './basic_offside.jsy'\nimport { bind_context_scanner } from './basic_contexts.jsy'\n\nexport function scan_offside_contexts(source, feedback, disp_name, context_scanners) ::\n  // see scan_javascript and scan_clike for good context_scanners\n  const context_scanner = bind_context_scanner(disp_name, context_scanners)\n  return context_scanner @ basic_offside_scanner(source, feedback)\n\n","import { SourceCodeScanner, NestedCodeScanner, RegExpScanner, MultiLineScanner } from './context_scanner.jsy'\nimport { scan_offside_contexts } from './basic_offside_contexts.jsy'\n\nexport const scanner_source =\n  new SourceCodeScanner @:\n      description: 'Source Code Scanner'\n      op: 'src'\n\nexport const scanner_nestedSrc =\n  new NestedCodeScanner @:\n    op: 'src', description: 'Template parameter source'\n    char_pairs: @{}\n      '{': true, '}': '{'\n      '(': true, ')': '('\n      '[': true, ']': '['\n\nexport const scanner_hashbangDirective =\n  new RegExpScanner @:\n      description: 'Hashbang directive'\n      example: '#!/usr/bin/env node'\n      op: 'hashbang', kind:'#!'\n      rx_open: /^(#!)/, rx_close: /.*($)/,\n      firstline: true\n      allow_blank_close: true\n\nexport const scanner_commentEOL =\n  new RegExpScanner @:\n      description: 'Comment to end of line'\n      example: '// comment'\n      op: 'comment_eol', kind:'//'\n      rx_open: /(\\/\\/)/, rx_close: /.*($)/,\n      allow_blank_close: true\n\nexport const scanner_commentMultiLine =\n  new MultiLineScanner @:\n      description: 'Multi-line comment'\n      example: '/* comment */'\n      op: 'comment_multi', kind:'/*'\n      rx_open: /(\\/\\*)/, rx_close: /.*?(\\*\\/|$)/,\n\nexport const scanner_strSingle =\n  new RegExpScanner @:\n      description: 'Single quote string literal'\n      example: \"'single quote'\"\n      op: 'str1', kind:\"'\"\n      rx_open: /(')/, rx_close: /(?:\\\\.|[^'])*('|$)/,\n\nexport const scanner_strDouble =\n  new RegExpScanner @:\n      description: 'Double quote string literal'\n      example: '\"double quote\"'\n      op: 'str2', kind:'\"'\n      rx_open: /(\")/, rx_close: /(?:\\\\.|[^\"])*(\"|$)/,\n\nexport const scanner_preprocessor =\n  new RegExpScanner @:\n      description: 'Preprocessor directive'\n      example: '# IF platform === \"web\"'\n      op: 'preprocessor', kind:'#'\n      rx_open: /^\\s*(#)/, rx_close: /.*?([\\\\]?)\\s*$/,\n      invert_close: true // preprocessor uses '\\' continuations\n      allow_blank_close: true\n\n\nexport const clike_context_scanners = Object.freeze @#\n  scanner_source\n  scanner_hashbangDirective\n  scanner_commentEOL\n  scanner_commentMultiLine\n  scanner_strSingle\n  scanner_strDouble\n  scanner_preprocessor\n\n\nexport function scan_clike(source, feedback) ::\n  return scan_offside_contexts(source, feedback, clike_context_scanners)\n\n","import { scan_offside_contexts } from './basic_offside_contexts.jsy'\nimport { RegExpScanner, MultiLineScanner } from './context_scanner.jsy'\nimport { scanner_source, clike_context_scanners, scanner_nestedSrc } from './scan_clike.jsy'\n\nexport const scanner_regexp =\n  new RegExpScanner @:\n      description: 'RegExp literal'\n      example: '/regexp/'\n      op: 'regexp'\n      kind: '/'\n\n      /*\n      rx_open: rx_or_parts @:\n        opts: @[]\n          /(\\/)(?![\\/\\*])/    // start of a potential regexp literal, but not a comment\n\n          @{}                 // ...complex regexp grammar...\n            pre: ''\n            opts: @[]\n              /\\\\./           // ...any escaped character...\n              /[^\\\\\\/\\[]/     // ...or any non-special character...\n\n              @{}             // ... or a bracket [] expression...\n                pre: '\\\\['        // started with a '[' character\n                opts: @[]\n                  /\\\\./           // ...with any escaped character\n                  /[^\\]]/         // ...or any non-escaped non-ending ']' character\n                post: '*\\\\]'      // ended with an ending ']' character\n\n            post: '+'         // one or more interior expressions\n\n          /(?=\\/)/            // (lookahead) end of a regexp literal\n      */\n\n      rx_open: new RegExp @\n        /(\\/)(?![\\/\\*])/ .source + // a RegExp start but not a comment\n        /(?:\\\\.|[^\\\\\\/\\[]|\\[(?:\\\\.|[^\\]])*\\])+/ .source\n\n      rx_close: /(\\/[a-z]*)\\s*(?=[;.,)\\]}]|$)/  // inspired by vim's syntax highlighting end\n\n      //multiline: false // spec https://tc39.es/ecma262/#sec-literals-regular-expression-literals\n\n\nexport const scanner_strTemplate =\n  new MultiLineScanner @:\n      description: 'Template quote string literal'\n      example: '`template string`'\n      op: 'str_template'\n      kind: '`'\n      rx_open: /(`)\\\\?/\n      rx_close: /(?:\\\\.|\\$(?!{)|[^\\$`\\\\])*(`|\\${|$)/\n      nesting: @{}\n        '${': templateArgNesting\n\n      ast_scan_match(scan, ast) ::\n        if '`' == scan.open ::\n          ast.tmpl_opened = true\n        if '`' == scan.close ::\n          ast.tmpl_closed = true\n\nfunction templateArgNesting(ctx, hostScanner) ::\n  const src = scanner_nestedSrc.withOuter @:\n    scanner: hostScanner.continueScanner(ctx)\n    stack: @[] '{' // from the template parameter opening\n    ast_end: 'template_param_end'\n\n  src.emit_ast @ ctx, '', 'template_param'\n\n  ctx.scanner = ctx.dispatch_root.cloneWithScanner(src)\n\n\n\nexport const js_context_scanners = Object.freeze @#\n  scanner_regexp\n  scanner_strTemplate\n  ... clike_context_scanners\n\nexport function scan_javascript(source, feedback) ::\n  return scan_offside_contexts(source, feedback, js_context_scanners)\n\n","import { scan_offside_contexts } from './basic_offside_contexts.jsy'\nimport { js_context_scanners } from './scan_javascript.jsy'\nimport { scanner_nestedSrc } from './scan_clike.jsy'\nimport { SourceCodeScanner, RegExpScanner } from './context_scanner.jsy'\nimport { EmbeddedDynamicScanner, TaggedRegExpScanner } from './context_scanner.jsy'\n\n\nexport const scanner_jsxContent =\n  new SourceCodeScanner @:\n      description: 'JSX Content Scanner'\n      op: 'jsx_content'\n\nexport const scanner_jsxContentExpr =\n  new RegExpScanner @:\n      description: 'JSX Content Expression'\n      example: '{ param }'\n      op: 'jsx_content_expr'\n      kind: '{'\n      rx_open: /\\s*({)/,\n      rx_close: /()/,\n\n      nestTrim(content, close, isContinue) ::\n      post_scan(ctx) :: jsxArgNesting @ ctx, null\n\nexport const scanner_jsxAttrNameValue =\n  new RegExpScanner @:\n      description: 'JSX attribute name value'\n      op: 'jsx_attr_name'\n      rx_open: /\\s*([a-zA-Z0-9_:.\\-]+)/,\n      rx_close: /\\s*(=)\\s*/,\n\nexport const scanner_jsxAttrNameOnly =\n  new RegExpScanner @:\n      description: 'JSX attribute name only'\n      op: 'jsx_attr_name_only'\n      rx_open: /\\s*([a-zA-Z0-9_:.\\-]+)/,\n      rx_close: /()/,\n\n      post_scan(ctx, close) ::\n        return this.nestMatch @ close,\n          ctx, this.hostScanner || this\n\nexport const scanner_jsxAttrSingle =\n  new RegExpScanner @:\n      description: 'JSX Single quote attribute literal'\n      multiline: true\n      op: 'jsx_attr_str1'\n      rx_open: /\\s*(')/,\n      rx_close: /(?:\\\\.|[^'])*(')\\s*/,\n\nexport const scanner_jsxAttrDouble =\n  new RegExpScanner @:\n      description: 'JSX Double quote attribute literal'\n      multiline: true\n      op: 'jsx_attr_str2'\n      rx_open: /\\s*(\")/,\n      rx_close: /(?:\\\\.|[^\"])*(\")\\s*/,\n\nexport const scanner_jsxTagClose =\n  new TaggedRegExpScanner @:\n      description: 'JSX Close Tag'\n      example: '</tag>'\n      op: 'jsx_tag_close'\n      kind: '</'\n      multiline: true\n      rx_open: /(<\\/)\\s*/\n      rx_close: /([a-zA-Z0-9_:.\\-]+)\\s*>/\n\n      tagScanner(ctx) ::\n        this.restore_scanner = ctx.scanner\n\n      post_scan(ctx, close) ::\n        if close !== this.tag ::\n          throw ctx.loc_tip.syntaxError @\n            `Mismatched JSX close tag \"</${close}>\", expected \"</${this.tag}>\". (${ctx.loc_tip})`\n\n        ctx.scanner = this.restore_scanner\n\n\n\nexport const scanner_jsxTag =\n  new TaggedRegExpScanner @:\n      description: 'JSX Tag'\n      multiline: true\n      op: 'jsx_tag'\n      op_continue: 'jsx_tag_part'\n\n      rx_open: /(<)tag\\b\\s*/\n      rx_close: /\\s*?($|\\/>|[{'\">]|[a-zA-Z0-9_:.\\-]+=?)/\n\n      nesting: @{}\n        '>': 'host' // use hostScanner\n        '/>': true // pop ctx.scanner\n\n      nestingEnd: @{}\n        '{': jsxArgNesting\n        '=': scanner_jsxAttrNameValue\n        \"'\": scanner_jsxAttrSingle\n        '\"': scanner_jsxAttrDouble\n\n      nestTrim(content, close, isContinue) ::\n        if ! this.nesting[close] ::\n          content = content.slice(0, - close.length)\n        return content || null\n\n      nestMatch(close, ctx, hostScanner) ::\n        let inner = this.nesting[close]\n        if undefined === inner ::\n          inner = this.nestingEnd[close.slice(-1)]\n            || scanner_jsxAttrNameOnly\n\n        if true !== inner && 'host' !== inner ::\n          // we're actually pushign two scanners onto the stack\n          // the first for this context, the second for the attribute\n          ctx.scanner = hostScanner = this.continueScanner(ctx)\n\n        return this.nestWith @ inner, ctx, hostScanner\n\nfunction jsxArgNesting(ctx, hostScanner) ::\n  const src = scanner_nestedSrc.withOuter @:\n    scanner: null !== hostScanner\n      ? hostScanner.continueScanner(ctx)\n      : ctx.scanner\n    stack: @[] '{' // from the jsx parameter opening\n    ast_end: 'jsx_param_end'\n\n  src.emit_ast @ ctx, '{', 'jsx_param'\n\n  ctx.scanner = ctx.dispatch_root.cloneWithScanner(src)\n\n\n\n\nexport const scanner_jsx =\n  new EmbeddedDynamicScanner @:\n      description: 'Embedded JSX expression'\n      example: '<section>content</section>'\n      kind:'<'\n      disp_name: 'jsx'\n      op: 'jsx'\n\n      // recognize by '<tag' followed by 'attr=' or '/>' or '>'\n      rx_open: /(<)([a-zA-Z0-9_:.\\-]+)(?=\\s*?(?:$|\\/>|>|\\s{|\\s[a-zA-Z0-9_:\\-]+=?))/\n      rx_close: /.*$/\n\n      leader: scanner_jsxTag\n      trailer: scanner_jsxTagClose\n\n\nexport const scanner_embedded_jsx =\n  scanner_jsx.andDispatchWith @:\n    description: 'JSX Dispatch Scanner (0)'\n    disp_name: 'jsx'\n\n    scannerList: @[]\n      scanner_jsxContent\n      scanner_jsxContentExpr\n\nexport const scanner_jsx_close_fragment =\n  new RegExpScanner @:\n      description: 'Embedded JSX fragment close expression'\n      example: '</>'\n      op: 'jsx_frag_close'\n      kind: '</'\n      allow_blank_close: true\n\n      rx_open: /(<\\/)\\s*/\n      rx_close: /([a-zA-Z0-9_:.\\-]*)\\s*>/\n\n      post_scan(ctx, close) ::\n        if close ::\n          throw ctx.loc_tip.syntaxError @\n            `Mismatched JSX fragment close tag \"</${close}>\", expected \"</$>\". (${ctx.loc_tip})`\n\n        ctx.scanner = this.restore_scanner\n\nexport const scanner_jsx_fragment =\n  new RegExpScanner @:\n      description: 'Embedded JSX fragment expression'\n      example: '<></>'\n      op: 'jsx_frag'\n      kind: '<>'\n\n      rx_open: /(<>)/\n      rx_close: /.*($|<\\/>)/\n\n      nestTrim(content, close, isContinue) ::\n        return '<>'\n\n      post_scan(ctx) ::\n        const jsx_frag_close = @{}\n          __proto__: scanner_jsx_close_fragment\n          restore_scanner: ctx.scanner\n\n        const ds_body = \n          scanner_embedded_jsx.cloneWithScanner @\n            jsx_frag_close\n\n        ds_body.description = 'Fragment' + ds_body.description\n        const disp = ds_body.get_active_dispatch(ctx)\n        ds_body.ln_first = disp && disp.ln_first || ctx.ln\n\n        ctx.scanner = ds_body\n\n\n\n\nexport const jsx_context_scanners = Object.freeze @#\n  scanner_jsx_fragment\n  scanner_jsx\n  ... js_context_scanners\n\nexport function scan_javascript_with_jsx(source, feedback) ::\n  return scan_offside_contexts(source, feedback, jsx_context_scanners)\n\n\n","\nconst _as_loc = p => p.loc &&= `${p.loc.start}..${p.loc.end}`\n\nexport function * iter_ast_ndjson(iter_ast) ::\n  for let ln of iter_ast ::\n    _as_loc(ln)\n    if ln.indent ::\n      _as_loc(ln.indent)\n\n    ln.content?.map?.(_as_loc)\n    yield ln\n\n\nexport function ast_to_json5(ast) ::\n  const out = []\n  for let ln of ast ::\n    if loc :: loc = loc.start.toString()\n    if ! content ::\n      out.push @ `  [\"${type} at ${loc}\"],`\n      continue\n\n    out.push @ `  [\"${type} at ${loc} with '${indent.indent}'\",`\n\n    for let {type:ct, content:cc} of content ::\n      out.push @ `    ${JSON.stringify([ct, cc])},`\n\n    out.push @ `  ],\\n`\n\n  return `[\\n${out.join('\\n')}\\n]\\n`\n\n","import { rx_offside_ops, rx_keyword_ops, rx_unknown_ops } from './regexp.jsy'\nimport { inject_dedent } from '../scanner/inject_dedent.jsy'\nimport { scan_javascript_with_jsx } from '../scanner/scan_jsx_javascript.jsy'\n\nexport * from '../scanner/ast_debug.jsy'\n\nconst _is_offside_dedent = part => 'offside_dedent' === part.type\nexport function jsy_scan(source, feedback) ::\n  const jsy_ast = scan_javascript_with_jsx(source, feedback)\n\n  inject_dedent @ jsy_ast, @[] 'comment_eol'\n\n  for let ln of jsy_ast ::\n    if ln.is_blank :: continue\n\n    let ln_parts = ln.content = transform_jsy_ops(ln.content, ln)\n\n    let idx_tail = ln_parts.findIndex @ _is_offside_dedent\n    let dedent = ln_parts[idx_tail--]\n\n    while idx_tail >= 0 ::\n      let tail = ln_parts[idx_tail--]\n      if undefined === tail ::\n        continue\n\n      if /^jsy_op/.test(tail.type) ::\n        dedent.ends_with_jsy_op = true\n        tail.ending_jsy_op = true\n      else if 'src' !== tail.type || tail.content.trim() ::\n        break\n\n  return jsy_ast\n\n\n\nfunction transform_jsy_ops(ln_parts, ln) ::\n  const res = []\n\n  for let p, i=0; undefined !== (p = ln_parts[i]) ; i++ ::\n    if 'src' === p.type ::\n      transform_jsy_part(res, p, ln)\n    else res.push(p)\n\n\n  // allow keywords at the start and in code blocks after \"::\"\n  let kw_allowed = 'src' === res[0].type\n  for let idx=0 ; undefined !== res[idx] ; idx ++ ::\n    if kw_allowed ::\n      transform_jsy_keyword(res, idx, ln)\n      kw_allowed = false\n\n    else if 'jsy_op' === res[idx].type ::\n      kw_allowed = '::' === res[idx].op\n\n  return res\n\n\n\nfunction transform_jsy_keyword(res, idx, ln) ::\n  const first = res[idx]\n\n  rx_keyword_ops.lastIndex = 0\n  const kw_match = rx_keyword_ops.exec(first.content)\n  if ! kw_match :: return false\n\n  const rest = kw_match.input.slice @ rx_keyword_ops.lastIndex\n  if '(' === rest[0] ::\n    return res // explicit keyword arguments\n\n  const kw_start = first.loc.start\n  const kw_end = kw_start.move @ kw_match[0]\n  const kw = kw_match[0].split(' ').filter(Boolean).join(' ')\n\n  const after = rest ? null : res[1+idx]\n  const explicit = after && 'jsy_op' === after.type && '@' === after.op\n\n  const kw_node = @{}\n    type: 'jsy_kw', kw, \n    loc: @{} start: kw_start, end: kw_end\n    len_indent: ln.len_indent\n    explicit\n\n  const post_node = as_src_ast @ rest, kw_end, first.loc.end\n\n  res.splice @ idx, 1, kw_node, post_node\n  return true\n\n\nfunction transform_jsy_part(res, part, ln) ::\n  ::\n    rx_offside_ops.lastIndex = 0\n\n    let loc_tip = part.loc.start\n    while true ::\n      let start = loc_tip, idx0 = rx_offside_ops.lastIndex\n      const op_match = rx_offside_ops.exec(part.content)\n\n      if ! op_match ::\n        _tail(loc_tip, idx0)\n        return res\n\n      if idx0 < op_match.index ::\n        start = loc_tip = _inner(loc_tip, idx0, op_match.index)\n        idx0 = rx_offside_ops.lastIndex\n\n\n      const op = op_match[0].trim()\n      const end = loc_tip = loc_tip.move(op_match[0])\n\n      const op_part = @{}\n        type: 'jsy_op', op\n        loc: @{} start, end\n        len_indent: ln.len_indent\n        content: op_match[0]\n\n      const op_args = op_match.slice(1).filter(Boolean)\n      if op_args.length ::\n        op_part.type = 'jsy_op_args'\n        op_part.op_args = op_args\n        op_part.op = op_args.reduce @\n          (op, p) => op.replace(p, ''), op\n\n      res.push @ op_part\n\n  function _unknown_ops(content, loc_tip, idx0) ::\n    rx_unknown_ops.lastIndex = idx0\n    const op_unknown = rx_unknown_ops.exec(content)\n    if op_unknown ::\n      const op = op_unknown[0].trim()\n      const start = loc_tip\n      const end = loc_tip = loc_tip.move(op_unknown[0])\n      res.push @:\n        type: 'jsy_unknown', op\n        loc: @{} start, end\n        len_indent: ln.len_indent\n        content: op_unknown[0]\n\n  function _inner(loc_tip, idx0, idx_content) ::\n    const pre = part.content.slice(idx0, idx_content)\n    _unknown_ops(pre, loc_tip, idx0)\n\n    const start = loc_tip\n    const end = loc_tip.move(pre)\n    res.push @ as_src_ast @ pre, start, end\n    return end\n\n  function _tail(loc_tip, idx0) ::\n    const rest = part.content.slice(idx0)\n    if rest ::\n      _unknown_ops(rest, loc_tip, idx0)\n\n      const start = loc_tip\n      const end = start.move(rest)\n      res.push @ as_src_ast @ rest, start, end\n\nfunction as_src_ast(content, start, end) ::\n  return @{} type: 'src', loc: {start, end}, content\n\n\nexport { jsy_scan as scan_jsy, jsy_scan as default }\n"],"names":[],"mappings":"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"}