UNPKG

tpmkms

Version:

Reusable libraries for Entodicton, a natural language to json converter

2,259 lines (2,258 loc) 780 kB
{ "configs": [ "pistols rifles grenades mines and shotguns are weapons", "mines and grenades are explosives", "explosives are weapons", "pistols rifles and shotguns are firearms", "firearms are weapons", "hats armor and suits are clothes", "a weapon is equipable", "clothes are wearable", "edible is a concept", "food is edible", "drinks are drinkable", "meat is food", "vegetables and fruit are food", "cola and pop are drinks", "medicine and stimpaks are takeable", "item modifies property", "damage luck hp rads value ap charisma range and accuracy are item properties", { "name": "pipboy", "operators": [ "([show] ([showable]))", "([showWeapons|show] ([weapon]))", "(([content]) [tab])", "([apply] ([stimpak]))", "([go] ([to2|to] ([showable|])))", "([change] ([changeable]))", "([equip] ([equipable]))", "([toDrink|drink] ([drinkable]))", "([eat] ([edible]))", "([take] ([takeable]))", "([apparel])", "((!article/0 && !verb/0) [outfit|outfit])", "([wear] ([wearable]))", "([strip])", "([disarm])", "([putOn|] ([wearable]))", "(([put]) <on>)", "([call] ([nameable]) ([outfit]))", "((condition/1,2) <propertyCondition|> (weapon/1))" ], "hierarchy": [ [ "weapon", "countable" ], [ "property", "comparable" ] ], "priorities": [ { "context": [ [ "article", 0 ], [ "to2", 0 ] ], "choose": [ 0 ] }, { "context": [ [ "tab", 0 ], [ "article", 0 ] ], "choose": [ 0 ] }, { "context": [ [ "article", 0 ], [ "unknown", 1 ], [ "outfit", 0 ] ], "ordered": true, "choose": [ 1, 2 ] } ], "bridges": [ { "where": "/home/dev/code/theprogrammablemind/kms/common/pipboy.js:152", "id": "put", "isA": [ "verb" ], "generatorp": "({context}) => `put on`" }, { "where": "/home/dev/code/theprogrammablemind/kms/common/pipboy.js:158", "id": "propertyCondition", "before": [ "adjective", "article", "the" ], "convolution": true, "level": 0, "bridge": "{ ...next(after[0]), condition: before[0], modifiers: ['condition'] }" }, { "where": "/home/dev/code/theprogrammablemind/kms/common/pipboy.js:166", "id": "on", "isA": [ "preposition" ], "level": 0, "bridge": "{ ...before, marker: operator('putOn', 0), dead: false }", "generatorp": "async ({context, g}) => `put on ${await g(context.item)}`", "semantic": "({api, context}) => {\n api.change(context.item.marker)\n }" }, { "where": "/home/dev/code/theprogrammablemind/kms/common/pipboy.js:177", "id": "change", "isA": [ "verb" ], "level": 0, "bridge": "{ ...next(operator), item: after[0] }", "localHierarchy": [ [ "weapon", "changeable" ] ], "generatorp": "async ({context, g}) => `change ${await g(context.item)}`", "semantic": "({api, context}) => {\n api.change(context.item.marker)\n }" }, { "where": "/home/dev/code/theprogrammablemind/kms/common/pipboy.js:189", "id": "disarm", "isA": [ "verb" ], "generatorp": "({context}) => `disarm`", "semantic": "({api, context}) => {\n api.disarm()\n }" }, { "where": "/home/dev/code/theprogrammablemind/kms/common/pipboy.js:198", "id": "strip", "isA": [ "verb" ], "generatorp": "({context}) => `strip`", "semantic": "({api, context}) => {\n api.strip()\n }" }, { "where": "/home/dev/code/theprogrammablemind/kms/common/pipboy.js:207", "id": "call", "isA": [ "verb" ], "level": 0, "bridge": "{ ...next(operator), item: after[0], name: after[1] }", "generatorp": "async ({context, g}) => `call ${await g(context.item)} ${await g(context.name)}`", "semantic": "({api, context}) => {\n api.setName(context.item, context.name.name.value)\n }" }, { "where": "/home/dev/code/theprogrammablemind/kms/common/pipboy.js:218", "id": "putOn", "isA": [ "verb" ], "level": 0, "bridge": "{ ...next(operator), item: after[0] }", "generatorp": "async ({context, g}) => `put on ${await g(context.item)}`", "semantic": "({api, context}) => {\n if (context.item.name) {\n api.wear({ name: context.item.name.value, type: 'outfit' })\n } else {\n api.wear({ type: context.item.value })\n }\n }" }, { "where": "/home/dev/code/theprogrammablemind/kms/common/pipboy.js:233", "id": "wear", "isA": [ "verb" ], "words": [ "where" ], "localHierarchy": [ [ "unknown", "wearable" ] ], "level": 0, "bridge": "{ ...next(operator), item: after[0] }", "generatorp": "async ({context, g}) => `wear ${await g(context.item)}`", "semantic": "({api, context}) => {\n if (context.item.name) {\n api.wear({ name: context.item.name.value, type: 'outfit' })\n } else {\n api.wear({ type: context.item.value })\n }\n }" }, { "where": "/home/dev/code/theprogrammablemind/kms/common/pipboy.js:250", "id": "equip", "isA": [ "verb" ], "level": 0, "localHierarchy": [ [ "weapon", "equipable" ], [ "thisitthat", "equipable" ], [ "equipable", "unknown" ] ], "bridge": "{ ...next(operator), item: after[0] }", "generatorp": "async ({context, g}) => `equip ${await g(context.item)}`", "semantic": "async ({api, context}) => {\n let condition\n if (context.item.condition) {\n condition = { selector: context.item.condition.marker, property: context.item.condition.property[0].marker }\n }\n api.equip({ type: context.item.value, condition })\n }" }, { "where": "/home/dev/code/theprogrammablemind/kms/common/pipboy.js:266", "id": "toDrink", "isA": [ "verb" ], "level": 0, "bridge": "{ ...next(operator), item: after[0] }", "generatorp": "async ({context, g}) => `drink ${await g(context.item)}`", "semantic": "async ({api, context, e}) => {\n const value = await e(context.item)\n api.drink(value.value)\n }" }, { "where": "/home/dev/code/theprogrammablemind/kms/common/pipboy.js:278", "id": "eat", "localHierarchy": [ [ "unknown", "edible" ] ], "isA": [ "verb" ], "level": 0, "bridge": "{ ...next(operator), item: after[0] }", "generatorp": "async ({context, g}) => `eat ${await g(context.item)}`", "semantic": "async ({api, context}) => {\n api.eat(context.item.value)\n }" }, { "where": "/home/dev/code/theprogrammablemind/kms/common/pipboy.js:290", "id": "take", "isA": [ "verb" ], "level": 0, "bridge": "{ ...next(operator), item: after[0] }", "generatorp": "async ({context, g}) => `take ${await g(context.item)}`", "semantic": "async ({api, context, e}) => {\n const value = await e(context.item)\n api.take(value.value)\n }" }, { "where": "/home/dev/code/theprogrammablemind/kms/common/pipboy.js:302", "id": "nameable", "isA": [ "theAble" ], "children": [ "thisitthat" ] }, { "id": "outfit", "isA": [ "nameable", "wearable" ], "level": 0, "bridge": "{ ...next(operator), name: before[0], modifiers: ['name'] }" }, { "id": "equipable" }, { "id": "drinkable" }, { "id": "edible" }, { "id": "takeable" }, { "id": "changeable" }, { "id": "apparel", "isA": [ "changeable" ] }, { "id": "apply", "isA": [ "verb" ], "level": 0, "bridge": "{ ...next(operator), item: after[0] }", "generatorp": "async ({context, g}) => `apply ${await g(context.item)}`", "semantic": "async ({api, context, e}) => {\n // { item: 'stimpak', quantity: <number>, to?: [ { part: ['arm', 'leg', 'torso', head'], side?: ['left', 'right'] } ] }\n const quantity = context.item.quantity ? (await e(context.item.quantity)).value : 1\n api.apply({ item: 'stimpak', quantity })\n }" }, { "id": "go", "isA": [ "verb" ], "level": 0, "bridge": "{ ...next(operator), showable: after[0].showable }", "generatorp": "async ({context, g}) => `go to ${await g(context.showable)}`", "semantic": "({api, context}) => {\n api.setDisplay(context.showable.value)\n }" }, { "id": "to2", "isA": [ "preposition" ], "level": 0, "bridge": "{ ...next(operator), showable: after[0] }", "generatorp": "async ({context, g}) => `to ${await g(context.showable)}`" }, { "id": "showWeapons", "isA": [ "verb" ], "level": 0, "bridge": "{ ...next(operator), showable: after[0] }", "generatorp": "async ({context, g}) => `show ${await g(context.showable)}`", "semantic": "({api, context}) => {\n if (context.showable.quantity && context.showable.quantity.value == 'all') {\n api.showWeapons('all')\n } else {\n api.showWeapons(context.showable.value)\n }\n }" }, { "id": "show", "isA": [ "verb" ], "level": 0, "bridge": "{ ...next(operator), showable: after[0] }", "generatorp": "async ({context, g}) => `show ${await g(context.showable)}`", "semantic": "({api, context}) => {\n api.setDisplay(context.showable.value)\n }" }, { "id": "stimpak", "words": [ "stimpaks", "stimpack", "stimpacks" ], "isA": [ "theAble", "countable" ] }, { "id": "tab", "level": 0, "isA": [ "showable" ], "bridge": "{ ...next(operator), showable: before[0], modifiers: ['showable'] }" }, { "id": "showable", "isA": [ "theAble" ] }, { "id": "content", "isA": [ "showable" ], "words": [ { "word": "stat", "value": "stat" }, { "word": "stats", "value": "stat" }, { "word": "statistics", "value": "stat" }, { "word": "inventory", "value": "inv" }, { "word": "data", "value": "data" }, { "word": "map", "value": "map" }, { "word": "maps", "value": "map" }, { "word": "quest", "value": "quest" }, { "word": "quests", "value": "quest" }, { "word": "workshops", "value": "workshops" }, { "word": "radio", "value": "radio" }, { "word": "status", "value": "status" }, { "word": "special", "value": "special" }, { "word": "perks", "value": "perks" }, { "word": "apparel", "value": "apparel" }, { "word": "aid", "value": "aid" } ] } ] } ], "resultss": [ { "hierarchy": [ [ "a", "article", false ], [ "adjective", "adjective", false ], [ "all", "quantifier", false ], [ "article", "article", false ], [ "ascending", "hierarchyAble", false ], [ "ascending", "isEdee", false ], [ "ascending", "isEder", false ], [ "ascending", "object", false ], [ "ascending", "property", false ], [ "ascending", "queryable", false ], [ "ascending", "sort_ordering", false ], [ "ascending", "theAble", false ], [ "between", "preposition", false ], [ "canBeDoQuestion", "canBeDoQuestion", false ], [ "canBeQuestion", "canBeQuestion", false ], [ "comparable", "theAble", false ], [ "concept", "queryable", false ], [ "concept", "theAble", false ], [ "condition", "condition", false ], [ "countable", "hierarchyAble", false ], [ "descending", "hierarchyAble", false ], [ "descending", "isEdee", false ], [ "descending", "isEder", false ], [ "descending", "object", false ], [ "descending", "property", false ], [ "descending", "queryable", false ], [ "descending", "sort_ordering", false ], [ "descending", "theAble", false ], [ "distributable", "queryable", false ], [ "divideByExpression", "mathematicalExpression", false ], [ "divideByOperator", "mathematical_operator", false ], [ "doubleQuote", "queryable", false ], [ "each", "article", false ], [ "evaluate", "verb", false ], [ "every", "article", false ], [ "hasCountOfPieces", "countable", false ], [ "have", "canBeDoQuestion", false ], [ "have", "canBeQuestion", false ], [ "hierarchyAble", "queryable", false ], [ "highest", "condition", false ], [ "ifAble", "ifAble", false ], [ "integer", "number", false ], [ "is", "canBeQuestion", false ], [ "is", "verb", false ], [ "isEdee", "isEdee", false ], [ "isEder", "isEder", false ], [ "isQuery", "verb", false ], [ "it", "pronoun", false ], [ "it", "queryable", false ], [ "it", "thisitthat", false ], [ "it", "toAble", false ], [ "listable", "theAble", false ], [ "lowest", "condition", false ], [ "mathematical", "hierarchyAble", false ], [ "mathematical", "isEdee", false ], [ "mathematical", "isEder", false ], [ "mathematical", "object", false ], [ "mathematical", "operator_modifier", false ], [ "mathematical", "property", false ], [ "mathematical", "queryable", false ], [ "mathematical", "theAble", false ], [ "mathematicalExpression", "concept", false ], [ "mathematicalExpression", "number", false ], [ "mathematical_operator", "adjective", true ], [ "mathematical_operator", "concept", false ], [ "mathematical_operator", "hierarchyAble", false ], [ "mathematical_operator", "isEdee", false ], [ "mathematical_operator", "isEder", false ], [ "mathematical_operator", "object", false ], [ "mathematical_operator", "operator", false ], [ "mathematical_operator", "property", false ], [ "mathematical_operator", "queryable", false ], [ "mathematical_operator", "theAble", false ], [ "memorable", "theAble", false ], [ "minusExpression", "mathematicalExpression", false ], [ "minusOperator", "mathematical_operator", false ], [ "modifies", "verb", false ], [ "negatable", "queryable", false ], [ "noun", "theAble", false ], [ "number", "quantifier", false ], [ "number", "queryable", false ], [ "object", "listable", false ], [ "object", "queryable", false ], [ "object", "theAble", false ], [ "operator", "concept", false ], [ "operator", "hierarchyAble", false ], [ "operator", "isEdee", false ], [ "operator", "isEder", false ], [ "operator", "object", false ], [ "operator", "property", false ], [ "operator", "queryable", false ], [ "operator", "theAble", false ], [ "operator_modifier", "adjective", false ], [ "orAble", "ifAble", false ], [ "ordering", "concept", false ], [ "ordering", "hierarchyAble", false ], [ "ordering", "isEdee", false ], [ "ordering", "isEder", false ], [ "ordering", "object", false ], [ "ordering", "property", false ], [ "ordering", "queryable", false ], [ "ordering", "theAble", false ], [ "ordering_modifier", "adjective", false ], [ "plusExpression", "mathematicalExpression", false ], [ "plusOperator", "mathematical_operator", false ], [ "preposition", "preposition", false ], [ "pronoun", "pronoun", false ], [ "property", "queryable", false ], [ "property", "theAble", false ], [ "propertyOf", "preposition", false ], [ "punctuation", "punctuation", false ], [ "quantifier", "quantifier", false ], [ "queryable", "listable", false ], [ "questionMark", "punctuation", false ], [ "readonly", "queryable", false ], [ "reason", "queryable", false ], [ "reason", "theAble", false ], [ "remember", "verb", false ], [ "sort", "hierarchyAble", false ], [ "sort", "isEdee", false ], [ "sort", "isEder", false ], [ "sort", "object", false ], [ "sort", "ordering_modifier", false ], [ "sort", "property", false ], [ "sort", "queryable", false ], [ "sort", "theAble", false ], [ "sortOrdering", "adjective", false ], [ "sort_ordering", "adjective", true ], [ "sort_ordering", "concept", false ], [ "sort_ordering", "hierarchyAble", false ], [ "sort_ordering", "isEdee", false ], [ "sort_ordering", "isEder", false ], [ "sort_ordering", "object", false ], [ "sort_ordering", "ordering", false ], [ "sort_ordering", "property", false ], [ "sort_ordering", "queryable", false ], [ "sort_ordering", "theAble", false ], [ "stm_before", "adjective", false ], [ "that", "thisitthat", false ], [ "the", "article", false ], [ "theAble", "queryable", false ], [ "this", "pronoun", false ], [ "this", "queryable", false ], [ "this", "thisitthat", false ], [ "thisitthat", "queryable", false ], [ "timesExpression", "mathematicalExpression", false ], [ "timesOperator", "mathematical_operator", false ], [ "to", "preposition", false ], [ "toAble", "toAble", false ], [ "type", "property", false ], [ "type", "whatAble", false ], [ "unknown", "hierarchyAble", false ], [ "verb", "verb", false ], [ "what", "object", false ], [ "what", "queryable", false ], [ "whatAble", "queryable", false ], [ "whose", "object", false ], [ "x", "number", false ], [ "xfx", "queryable", false ], [ "y", "number", false ] ], "metadata": { "opChoices": [ { "op": [ "unknown", 0 ], "ops": [ [ "is", 0 ], [ "list", 0 ], [ "unknown", 0 ], [ "unknown", 0 ], [ "unknown", 0 ], [ "unknown", 0 ], [ "unknown", 0 ], [ "unknown", 0 ] ], "counter": 1 }, { "op": [ "unknown", 0 ], "ops": [ [ "is", 0 ], [ "list", 0 ], [ "unknown", 0 ], [ "unknown", 0 ], [ "unknown", 0 ], [ "unknown", 0 ], [ "unknown", 0 ] ], "counter": 2 }, { "op": [ "unknown", 0 ], "ops": [ [ "is", 0 ], [ "list", 0 ], [ "unknown", 0 ], [ "unknown", 0 ], [ "unknown", 0 ], [ "unknown", 0 ] ], "counter": 3 }, { "op": [ "unknown", 0 ], "ops": [ [ "is", 0 ], [ "list", 0 ], [ "unknown", 0 ], [ "unknown", 0 ], [ "unknown", 0 ] ], "counter": 4 }, { "op": [ "unknown", 0 ], "ops": [ [ "is", 0 ], [ "list", 0 ], [ "unknown", 0 ], [ "unknown", 0 ] ], "counter": 5 }, { "op": [ "unknown", 0 ], "ops": [ [ "is", 0 ], [ "list", 0 ], [ "unknown", 0 ] ], "counter": 6 }, { "op": [ "list", 0 ], "ops": [ [ "is", 0 ], [ "list", 0 ] ], "counter": 7 }, { "op": [ "list", 1 ], "ops": [ [ "is", 0 ], [ "list", 1 ] ], "counter": 8 }, { "op": [ "list", 1 ], "ops": [ [ "is", 0 ], [ "list", 1 ] ], "counter": 9 }, { "op": [ "list", 1 ], "ops": [ [ "is", 0 ], [ "list", 1 ] ], "counter": 10 }, { "op": [ "is", 0 ], "ops": [ [ "is", 0 ] ], "counter": 11 }, { "op": [ "is", 1 ], "ops": [ [ "is", 1 ] ], "counter": 12 } ] }, "trace": "undefined", "contexts": [ { "number": "many", "text": "pistols rifles grenades mines and shotguns are weapons", "marker": "is", "word": "are", "range": { "start": 0, "end": 53 }, "one": { "number": "many", "marker": "list", "default": true, "word": "and", "text": "pistols rifles grenades mines and shotguns", "range": { "start": 0, "end": 53 }, "types": [ "list", "unknown" ], "listable": true, "isList": true, "value": [ { "value": "pistols", "unknown": true, "text": "pistols", "marker": "unknown", "word": "pistols", "range": { "start": 0, "end": 6 }, "dead": true, "types": [ "unknown" ], "level": 0 }, { "value": "rifles", "unknown": true, "text": "rifles", "marker": "unknown", "word": "rifles", "range": { "start": 8, "end": 13 }, "dead": true, "types": [ "unknown" ], "level": 0 }, { "value": "grenades", "unknown": true, "text": "grenades", "marker": "unknown", "word": "grenades", "range": { "start": 15, "end": 22 }, "dead": true, "types": [ "unknown" ], "level": 0 }, { "value": "mines", "unknown": true, "text": "mines", "marker": "unknown", "word": "mines", "range": { "start": 24, "end": 28 }, "types": [ "unknown" ], "dead": true, "level": 0 }, { "value": "shotguns", "unknown": true, "text": "shotguns", "marker": "unknown", "word": "shotguns", "range": { "start": 34, "end": 41 }, "types": [ "unknown" ], "dead": true, "level": 0 } ], "level": 1 }, "two": { "value": "weapons", "unknown": true, "text": "weapons", "marker": "unknown", "word": "weapons", "range": { "start": 47, "end": 53 }, "dead": true, "types": [ "unknown" ], "level": 0, "concept": true }, "dead": true, "level": 2, "context_index": 1, "topLevel": true, "context_id": 2, "touchedBy": [ "pipboy#call2" ] } ], "generated": [ "" ], "paraphrases": [ "pistols, rifles, grenades, mines and shotguns are weapons" ], "paraphrasesParenthesized": [], "generatedParenthesized": [], "responses": [ "" ], "associations": [ [ [ "is", 0 ], [ "list", 0 ], [ "unknown", 0 ] ], [ [ "is", 0 ], [ "list", 1 ], [ "unknown", 0 ] ], [ [ "is", 0 ], [ "list", 1 ], [ "unknown", 0 ] ] ], "summaries": [ { "summaries": [ { "operators": [ { "marker": [ "unknown", 0 ], "range": { "start": 0, "end": 6 } }, { "marker": [ "unknown", 0 ], "range": { "start": 8, "end": 13 } }, { "marker": [ "unknown", 0 ], "range": { "start": 15, "end": 22 } }, { "marker": [ "unknown", 0 ], "range": { "start": 24, "end": 28 } }, { "marker": [ "list", 0 ], "range": { "start": 30, "end": 32 } }, { "marker": [ "unknown", 0 ], "range": { "start": 34, "end": 41 } }, { "marker": [ "is", 0 ], "range": { "start": 43, "end": 45 } }, { "marker": [ "unknown", 0 ], "range": { "start": 47, "end": 53 } } ], "counter": 1 }, { "operators": [ { "marker": [ "unknown", 0 ], "range": { "start": 0, "end": 6 } }, { "marker": [ "unknown", 0 ], "range": { "start": 8, "end": 13 } }, { "marker": [ "unknown", 0 ], "range": { "start": 15, "end": 22 } }, { "marker": [ "unknown", 0 ], "range": { "start": 24, "end": 28 } }, { "marker": [ "list", 0 ], "range": { "start": 30, "end": 32 } }, { "marker": [ "unknown", 0 ], "range": { "start": 34, "end": 41 } }, { "marker": [ "is", 0 ], "range": { "start": 43, "end": 45 } }, { "marker": [ "unknown", 0 ], "range": { "start": 47, "end": 53 } } ], "counter": 2 }, { "operators": [ { "marker": [ "unknown", 0 ], "range": { "start": 0, "end": 6 } }, { "marker": [ "unknown", 0 ], "range": { "start": 8, "end": 13 } }, { "marker": [ "unknown", 0 ], "range": { "start": 15, "end": 22 } }, { "marker": [ "unknown", 0 ], "range": { "start": 24, "end": 28 } }, { "marker": [ "list", 0 ], "range": { "start": 30, "end": 32 } }, { "marker": [ "unknown", 0 ], "range": { "start": 34, "end": 41 } }, { "marker": [ "is", 0 ], "range": { "start": 43, "end": 45 } }, { "marker": [ "unknown", 0 ], "range": { "start": 47, "end": 53 } } ], "counter": 3 }, { "operators": [ { "marker": [ "unknown", 0 ], "range": { "start": 0, "end": 6 } }, { "marker": [ "unknown", 0 ], "range": { "start": 8, "end": 13 } }, { "marker": [ "unknown", 0 ], "range": { "start": 15, "end": 22 } }, { "marker": [ "unknown", 0 ], "range": { "start": 24, "end": 28 } }, { "marker": [ "list", 0 ], "range": { "start": 30, "end": 32 } }, { "marker": [ "unknown", 0 ], "range": { "start": 34, "end": 41 } }, { "marker": [ "is", 0 ], "range": { "start": 43, "end": 45 } }, { "marker": [ "unknown", 0 ], "range": { "start": 47, "end": 53 } } ], "counter": 4 }, { "operators": [ { "marker": [ "unknown", 0 ], "range": { "start": 0, "end": 6 } }, { "marker": [ "unknown", 0 ], "range": { "start": 8, "end": 13 } }, { "marker": [ "unknown", 0 ], "range": { "start": 15, "end": 22 } }, { "marker": [ "unknown", 0 ], "range": { "start": 24, "end": 28 } }, { "marker": [ "list", 0 ], "range": { "start": 30, "end": 32 } }, { "marker": [ "unknown", 0 ], "range": { "start": 34, "end": 41 } }, { "marker": [ "is", 0 ], "range": { "start": 43, "end": 45 } }, { "marker": [ "unknown", 0 ], "range": { "start": 47, "end": 53 } } ], "counter": 5 }, { "operators": [ { "marker": [ "unknown", 0 ], "range": { "start": 0, "end": 6 } }, { "marker": [ "unknown", 0 ], "range": { "start": 8, "end": 13 } }, { "marker": [ "unknown", 0 ], "range": { "start": 15, "end": 22 } }, { "marker": [ "unknown", 0 ], "range": { "start": 24, "end": 28 } }, { "marker": [ "list", 0 ], "range": { "start": 30, "end": 32 } }, { "marker": [ "unknown", 0 ], "range": { "start": 34, "end": 41 } }, { "marker": [ "is", 0 ], "range": { "start": 43, "end": 45 } }, { "marker": [ "unknown", 0 ], "range": { "start": 47, "end": 53 }