From 12079550f847a9f98eb0e1eca2fd0ea3d986a94a Mon Sep 17 00:00:00 2001 From: "John J. Camilleri" Date: Thu, 11 Jul 2019 09:29:49 +0200 Subject: [PATCH] Remove TypeScript runtime and point to new repository https://github.com/GrammaticalFramework/gf-typescript --- src/runtime/javascript/DEPRECATED.md | 5 +- src/runtime/typescript/.eslintrc | 18 - src/runtime/typescript/MOVED.md | 7 + src/runtime/typescript/README.md | 31 - src/runtime/typescript/gflib.ts | 1619 ------------------------ src/runtime/typescript/js/gflib.js | 1164 ----------------- src/runtime/typescript/js/gflib.js.map | 1 - src/runtime/typescript/tsconfig.json | 12 - 8 files changed, 8 insertions(+), 2849 deletions(-) delete mode 100644 src/runtime/typescript/.eslintrc create mode 100644 src/runtime/typescript/MOVED.md delete mode 100644 src/runtime/typescript/README.md delete mode 100644 src/runtime/typescript/gflib.ts delete mode 100644 src/runtime/typescript/js/gflib.js delete mode 100644 src/runtime/typescript/js/gflib.js.map delete mode 100644 src/runtime/typescript/tsconfig.json diff --git a/src/runtime/javascript/DEPRECATED.md b/src/runtime/javascript/DEPRECATED.md index a4a8993c6..83f4e51d6 100644 --- a/src/runtime/javascript/DEPRECATED.md +++ b/src/runtime/javascript/DEPRECATED.md @@ -1,7 +1,4 @@ # Deprecation notice As of June 2019, this JavaScript version of the GF runtime is considered deprecated, -in favour of the TypeScript version in `../typescript/gflib.ts`. - -If you don't want/need TypeScript and are just looking for a ready-to-use JavaScript version, -see `../typescript/js/gflib.js` which is generated directly from the TypeScript version. +in favour of the TypeScript version in . diff --git a/src/runtime/typescript/.eslintrc b/src/runtime/typescript/.eslintrc deleted file mode 100644 index c0fa0b95e..000000000 --- a/src/runtime/typescript/.eslintrc +++ /dev/null @@ -1,18 +0,0 @@ -{ - "parser": "@typescript-eslint/parser", - "plugins": ["@typescript-eslint"], - "extends": ["plugin:@typescript-eslint/recommended"], - "rules": { - "indent": "off", - "@typescript-eslint/indent": ["warn", 2], - "@typescript-eslint/no-use-before-define": ["error", { - "functions": false, - "classes": false - }], - "semi": "off", - "@typescript-eslint/semi": ["warn", "never"], - "quotes": ["warn", "single"], - "@typescript-eslint/camelcase": "off", - "@typescript-eslint/no-unused-vars": ["warn", { "argsIgnorePattern": "^_" }], - } -} diff --git a/src/runtime/typescript/MOVED.md b/src/runtime/typescript/MOVED.md new file mode 100644 index 000000000..3648aa226 --- /dev/null +++ b/src/runtime/typescript/MOVED.md @@ -0,0 +1,7 @@ +# Project moved + +The GF TypeScript runtime has been moved to the repository: + + +If you are looking for an updated version of the JavaScript runtime, +you should also look there. diff --git a/src/runtime/typescript/README.md b/src/runtime/typescript/README.md deleted file mode 100644 index e7905af89..000000000 --- a/src/runtime/typescript/README.md +++ /dev/null @@ -1,31 +0,0 @@ -# GF TypeScript Runtime - -`gflib.ts` is a TypeScript implementation of the GF runtime. -It is ported from an older JavaScript implementation [`gflib.js`](../javascript/gflib.js), -with some improvements. - -Importantly, all **future** updates will only be made to this TypeScript version. - -## Applicability - -This runtime allows you use GF in pure JavaScript, and thus have GF-powered apps without the need for a server backend. -However, it has not been actively maintained as the other runtimes have been. -So its features are limited and it is not efficient, making it really only useful for smaller grammars. - -## Using - -`gflib.ts` can be transpiled to JavaScript by running `tsc` in this folder (of course you need TypeScript installed). -It has no module dependencies. -You can then include the generated `js/gflib.js` file in your application as usual. - -_This generated JavaScript version is also included under version control, -to make it easy for someone to use without having to install TypeScript._ - -Your GF grammar should be compiled with: `gf --make --output-format=js` - -For an example of a working web application using the JavaScript runtime, see `../javascript`. - -## What happened to `gflib.d.ts`? - -There was once a file here called `gflib.d.ts`, which contained TypeScript type definitions for the **old** `gflib.js`. -Since the runtime is now ported to TypeScript, those type definitions are no longer necessary (plus they contained many errors). diff --git a/src/runtime/typescript/gflib.ts b/src/runtime/typescript/gflib.ts deleted file mode 100644 index 52865e969..000000000 --- a/src/runtime/typescript/gflib.ts +++ /dev/null @@ -1,1619 +0,0 @@ -/** - * gflib.ts - * - * by John J. Camilleri - * - * A port of the pure JavaScript runtime (/src/runtime/javascript/gflib.js) into TypeScript - */ - -/** - * A GF grammar is one abstract and multiple concretes - */ -class GFGrammar { // eslint-disable-line @typescript-eslint/no-unused-vars - public abstract: GFAbstract - public concretes: {[key: string]: GFConcrete} - - public constructor(abstract: GFAbstract, concretes: {[key: string]: GFConcrete}) { - this.abstract = abstract - this.concretes = concretes - } - - public translate( - input: string, - fromLang: string, - toLang: string - ): {[key: string]: {[key: string]: string}[]} { - let outputs: {[key: string]: {[key: string]: string}[]} = {} - let fromConcs = this.concretes - if (fromLang) { - fromConcs = {} - fromConcs[fromLang] = this.concretes[fromLang] - } - let toConcs = this.concretes - if (toLang) { - toConcs = {} - toConcs[toLang] = this.concretes[toLang] - } - for (let c1 in fromConcs) { - let concrete = this.concretes[c1] - let trees = concrete.parseString(input, this.abstract.startcat) - if (trees.length > 0) { - outputs[c1] = [] - for (let i in trees) { - outputs[c1][i] = {} - for (let c2 in toConcs) { - outputs[c1][i][c2] = this.concretes[c2].linearize(trees[i]) - } - } - } - } - return outputs - } -} - -/** - * Abstract Syntax Tree - */ -class Fun { - public name: string - public args: Fun[] - public type?: string // only used for meta variables - - public constructor(name: string, ...args: Fun[]) { - this.name = name - this.args = [] - for (let i = 1; i < args.length; i++) { - this.args[i-1] = args[i] - } - } - - public print(): string { - return this.show(0) - } - - public show(prec: number): string { - if (this.isMeta()) { - if (isUndefined(this.type)) { - return '?' - } else { - let s = '?:' + this.type - if (prec > 0) { - s = '(' + s + ')' - } - return s - } - } else { - let s = this.name - let cs = this.args - for (let i in cs) { - s += ' ' + (isUndefined(cs[i]) ? 'undefined' : cs[i].show(1)) - } - if (prec > 0 && cs.length > 0) { - s = '(' + s + ')' - } - return s - } - } - - public getArg(i: number): Fun { - return this.args[i] - } - - public setArg(i: number, c: Fun): void { - this.args[i] = c - } - - public isMeta(): boolean { - return this.name == '?' - } - - public isComplete(): boolean { - if (this.isMeta()) { - return false - } else { - for (let i in this.args) { - if (!this.args[i].isComplete()) { - return false - } - } - return true - } - } - - public isLiteral(): boolean { - return (/^[\"\-\d]/).test(this.name) - } - - public isString(): boolean { - return (/^\".*\"$/).test(this.name) - } - - public isInt(): boolean { - return (/^\-?\d+$/).test(this.name) - } - - public isFloat(): boolean { - return (/^\-?\d*(\.\d*)?$/).test(this.name) && this.name != '.' && this.name != '-.' - } - - public isEqual(obj: Fun): boolean { - if (this.name != obj.name) - return false - - for (let i in this.args) { - if (!this.args[i].isEqual(obj.args[i])) - return false - } - - return true - } -} - -/** - * Abstract syntax - */ -class GFAbstract { - public startcat: string - private types: {[key: string]: Type} // key is function name - - public constructor(startcat: string, types: {[key: string]: Type}) { - this.startcat = startcat - this.types = types - } - - public addType(fun: string, args: string[], cat: string): void { - this.types[fun] = new Type(args, cat) - } - - public getArgs(fun: string): string[] { - return this.types[fun].args - } - - public getCat(fun: string): string { - return this.types[fun].cat - } - - // Annotate (only) meta variables - private annotate(tree: Fun, type?: string): Fun { - let typ: Type | undefined = this.types[tree.name] - if (tree.isMeta()) { - tree.type = type - } else if (!isUndefined(typ)) { - for (let i in tree.args) { - this.annotate(tree.args[i], typ.args[i]) - } - } - return tree - } - - public handleLiterals(tree: Fun, type: string): Fun { - if (tree.name != '?') { - if (type == 'String' || type == 'Int' || type == 'Float') { - tree.name = type + '_Literal_' + tree.name - } else { - let typ = this.types[tree.name] - for (let i in tree.args) { - this.handleLiterals(tree.args[i], typ.args[i]) - } - } - } - return tree - } - - // Hack to get around the fact that our SISR doesn't build real Fun objects. - public copyTree(x: Fun): Fun { - let t = new Fun(x.name) - if (!isUndefined(x.type)) { - t.type = x.type - } - let cs = x.args - if (!isUndefined(cs)) { - for (let i = 0; i < cs.length; i++) { - t.setArg(i, this.copyTree(cs[i])) - } - } - return t - } - - public parseTree(str: string, type?: string): Fun | null { - let pt = this.parseTree_(str.match(/[\w\u00C0-\u00FF\'\.\"]+|\(|\)|\?|\:/g) || [], 0) - return pt ? this.annotate(pt, type) : null - } - - private parseTree_(tokens: string[], prec: number): Fun | null { - if (tokens.length == 0 || tokens[0] == ')') { - return null - } - let t = tokens.shift() - if (!t) return null - if (t == '(') { - let tree = this.parseTree_(tokens, 0) - tokens.shift() - return tree - } else if (t == '?') { - // let tree = this.parseTree_(tokens, 0) - return new Fun('?') - } else { - let tree = new Fun(t) - if (prec == 0) { - let c: Fun | null - let i: number - for (i = 0; (c = this.parseTree_(tokens, 1)) !== null; i++) { - tree.setArg(i,c) - } - } - return tree - } - } -} - -/** - * Type - */ -class Type { - public args: string[] - public cat: string - - public constructor(args: string[], cat: string) { - this.args = args - this.cat = cat - } -} - -/** - * Concrete syntax - */ -class GFConcrete { - public flags: {[key: string]: string} - // private productions: {[key: number]: Rule[]} - private functions: CncFun[] - // private sequences: Sym[][] - public startCats: {[key: string]: {s: number; e: number}} - public totalFIds: number - public pproductions: {[key: number]: Rule[]} - private lproductions: {[key: string]: {fid: FId; fun: CncFun}[]} - - public constructor( - flags: {[key: string]: string}, - productions: {[key: number]: Rule[]}, - functions: CncFun[], - sequences: Sym[][], - startCats: {[key: string]: {s: number; e: number}}, - totalFIds: number - ) { - this.flags = flags - // this.productions = productions - this.functions = functions - // this.sequences = sequences - this.startCats = startCats - this.totalFIds = totalFIds - - this.pproductions = productions - this.lproductions = {} - - for (let fid0 in productions) { - let fid: number = parseInt(fid0) - for (let i in productions[fid]) { - let rule = productions[fid][i] - - if (rule.id == 'Apply') { - rule = rule as Apply - let fun: CncFun = this.functions[rule.fun as FId] - let lproductions = this.lproductions - - rule.fun = fun - - let register = function (args: PArg[], key: string, i: number): void { - if (i < args.length) { - let c = 0 - let arg = args[i].fid - - for (let k in productions[arg]) { - let rule = productions[arg][k] - if (rule.id == 'Coerce') { - rule = rule as Coerce - register(args, key + '_' + rule.arg, i+1) - c++ - } - } - - if (c == 0) { - register(args, key + '_' + arg, i+1) - } - } else { - let set = lproductions[key] - if (set == null) { - set = [] - lproductions[key] = set - } - set.push({fun: fun, fid: fid}) - } - } - register(rule.args, rule.fun.name, 0) - } - } - } - - for (let fun of functions) { - for (let j in fun.lins) { - fun.lins[j] = sequences[fun.lins[j] as number] - } - } - - } - - private linearizeSyms(tree: Fun, tag: string): {fid: FId; table: Sym[][]}[] { - let res = [] - - if (tree.isString()) { - let sym = new SymKS(tree.name) - sym.tag = tag - res.push({fid: -1, table: [[sym]]}) - } else if (tree.isInt()) { - let sym = new SymKS(tree.name) - sym.tag = tag - res.push({fid: -2, table: [[sym]]}) - } else if (tree.isFloat()) { - let sym = new SymKS(tree.name) - sym.tag = tag - res.push({fid: -3, table: [[sym]]}) - } else if (tree.isMeta()) { - // TODO: Use lindef here - let cat = this.startCats[tree.type as string] - - let sym = new SymKS(tree.name) - sym.tag = tag - - for (let fid = cat.s; fid <= cat.e; fid++) { - res.push({fid: fid, table: [[sym]]}) - } - } else { - let cs: {fid: FId; table: Sym[][]}[] = [] - for (let i in tree.args) { - // TODO: we should handle the case for nondeterministic linearization - cs.push(this.linearizeSyms(tree.args[i],tag + '-' + i)[0]) - } - let key = tree.name - for (let i in cs) { - if (isUndefined(cs[i])) { - // Some arguments into this function are undefined - console.warn(`${tree.args[i].name} is undefined`) - return [{ - fid: -5, // signal to parent that I cannot lin properly - table: [[new SymKS(`[${tree.name}]`).tagWith(tag)]] - }] - } else if (cs[i].fid === -5) { - // My child cannot lin properly, just find first matching rule for me - // TODO probably not general enough - for (let k in this.lproductions) { - if (k.includes(tree.name)) { - key = k - break - } - } - break - } else { - key = key + '_' + cs[i].fid - } - } - - for (let i in this.lproductions[key]) { - let rule = this.lproductions[key][i] - let row: {fid: FId; table: Sym[][]} = { - fid: rule.fid, - table: [] - } - for (let j in rule.fun.lins) { - let lin = rule.fun.lins[j] as Sym[] - let toks: Sym[] = [] - row.table[j] = toks - - lin.forEach((sym0: Sym): void => { - switch (sym0.id) { - case 'Arg': - case 'Lit': { - let sym = sym0 as SymCat | SymLit - let ts = cs[sym.i].table[sym.label] - for (let l in ts) { - toks.push(ts[l]) - } - break - } - case 'KS': - case 'KP': { - let sym = sym0 as SymKS | SymKP - toks.push(sym.tagWith(tag)) - break - } - } - }) - } - res.push(row) - } - } - - return res - } - - private syms2toks(syms: Sym[]): TaggedString[] { - let ts: TaggedString[] = [] - for (let i = 0; i < syms.length; i++) { - let sym0 = syms[i] - switch (sym0.id) { - case 'KS': { - let sym = sym0 as SymKS - for (let j in sym.tokens) { - ts.push(new TaggedString(sym.tokens[j], sym.tag as string)) - } - break - } - case 'KP': { - let sym = sym0 as SymKP - let addedAlt = false - if (i < syms.length-1) { - let nextSym = syms[i+1] - if (nextSym.id == 'KS') { - let nextToken = (nextSym as SymKS).tokens[0] - sym.alts.forEach((alt: Alt): void => { - // consider alts here (for handling pre) - if (alt.prefixes.some((p: string): boolean => nextToken.startsWith(p))) { - alt.tokens.forEach((symks: SymKS): void => { - symks.tokens.forEach((t: string): void => { - ts.push(new TaggedString(t, sym.tag as string)) - }) - }) - addedAlt = true - return - } - }) - } - } - if (addedAlt) break - // Fall through here when no alts (or none apply) - sym.tokens.forEach((symks: SymKS): void => { - symks.tokens.forEach((t: string): void => { - ts.push(new TaggedString(t, sym.tag as string)) - }) - }) - break - } - } - } - return ts - } - - public linearizeAll(tree: Fun): string[] { - return this.linearizeSyms(tree,'0').map((r): string => { - return this.unlex(this.syms2toks(r.table[0])) - }) - } - - public linearize(tree: Fun): string { - let res = this.linearizeSyms(tree,'0') - if (res.length > 0) - return this.unlex(this.syms2toks(res[0].table[0])) - else - return '' - } - - public tagAndLinearize(tree: Fun): TaggedString[] { - let res = this.linearizeSyms(tree,'0') - if (res.length > 0) - return this.syms2toks(res[0].table[0]) - else - return [] - } - - private unlex(ts: TaggedString[]): string { - if (ts.length == 0) { - return '' - } - - let noSpaceAfter = /^[\(\-\[]/ - let noSpaceBefore = /^[\.\,\?\!\)\:\;\-\]]/ - - let s = '' - for (let i = 0; i < ts.length; i++) { - let t: string = ts[i].s - let after: string | null = i < ts.length-1 ? ts[i+1].s : null - s += t - if (after != null - && !t.match(noSpaceAfter) - && !after.match(noSpaceBefore) - ) { - s += ' ' - } - } - return s - } - - // private tagIt(obj: Taggable, tag: string): Taggable { - // if (isString(obj)) { - // let o = new String(obj) - // o.setTag(tag) - // return o - // } else { - // let me = arguments.callee - // if (arguments.length == 2) { - // me.prototype = obj - // let o = new me() - // o.tag = tag - // return o - // } - // } - // } - - // public showRules(): string { - // let ruleStr = [] - // ruleStr.push('') - // for (let i = 0, j = this.rules.length; i < j; i++) { - // ruleStr.push(this.rules[i].show()) - // } - // return ruleStr.join('') - // } - - private tokenize(string: string): string[] { - let inToken = false - let start = 0 - let end: number - let tokens = [] - - let i: number - for (i = 0; i < string.length; i++) { - if (string.charAt(i) == ' ' // space - || string.charAt(i) == '\f' // form feed - || string.charAt(i) == '\n' // newline - || string.charAt(i) == '\r' // return - || string.charAt(i) == '\t' // horizontal tab - || string.charAt(i) == '\v' // vertical tab - || string.charAt(i) == String.fromCharCode(160) //   - ) { - if (inToken) { - end = i-1 - inToken = false - tokens.push(string.substr(start,end-start+1)) - } - } else { - if (!inToken) { - start = i - inToken = true - } - } - } - - if (inToken) { - end = i-1 - inToken = false - tokens.push(string.substr(start,end-start+1)) - } - - return tokens - } - - public parseString(string: string, cat: string): Fun[] { - let tokens = this.tokenize(string) - - let ps = new ParseState(this, cat) - for (let i in tokens) { - if (!ps.next(tokens[i])) - return [] - } - return ps.extractTrees() - } - - public complete( - input: string, - cat: string - ): {consumed: string[]; suggestions: string[]} { - // Parameter defaults - if (input == null) input = '' - // if (cat == null) cat = grammar.abstract.startcat - - // Tokenise input string & remove empty tokens - let tokens = input.trim().split(' ') - for (let i = tokens.length - 1; i >= 0; i--) { - if (tokens[i] == '') { - tokens.splice(i, 1) - } - } - - // Capture last token as it may be partial - let current = tokens.pop() - if (current == null) current = '' - - // Init parse state objects. - // ps2 is used for testing whether the final token is parsable or not. - let ps = new ParseState(this, cat) - let ps2 = new ParseState(this, cat) - - // Iterate over tokens, feed one by one to parser - for (let i = 0; i < tokens.length ; i++) { - if (!ps.next(tokens[i])) { - return { 'consumed': [], 'suggestions': [] } // Incorrect parse, nothing to suggest - } - ps2.next(tokens[i]) // also consume token in ps2 - } - - // Attempt to also parse current, knowing it may be incomplete - if (ps2.next(current)) { - ps.next(current) - tokens.push(current) - current = '' - } - - // Parse is successful so far, now get suggestions - let acc = ps.complete(current) - - // Format into just a list of strings & return - let suggs: string[] = [] - if (acc.value) { - acc.value.forEach((a: ActiveItem): void =>{ - a.seq.forEach((s: Sym): void => { - switch (s.id) { - case 'KS': { - (s as SymKS).tokens.forEach((t: string): void => { - suggs.push(t) - }) - break - } - case 'KP': { - (s as SymKP).tokens.forEach((symks: SymKS): void => { - symks.tokens.forEach((t: string): void => { - suggs.push(t) - }) - }) - break - } - } - }) - }) - } - - // Note: return used tokens too - return { 'consumed' : tokens, 'suggestions' : suggs } - } -} - -/** - * A string with a tag - * This avoids modifying the String prototype, which was messy - */ -class TaggedString { - public s: string - public tag: string - - public constructor(s: string, tag: string) { - this.s = s - this.tag = tag - } -} - -/** - * Function ID - */ -type FId = number - -/** - * Rule - */ -type Rule = Apply | Coerce | Const - -/** - * Apply - */ -class Apply { - public id: string - public fun: FId | CncFun - public args: PArg[] - - public constructor(fun: FId | CncFun, args: PArg[]) { - this.id = 'Apply' - this.fun = fun - this.args = args - } - - public show(cat: string): string { - let recStr = [] - recStr.push(cat, ' -> ', (this.fun as CncFun).name, ' [', this.args, ']') - return recStr.join('') - } - - public isEqual(obj: Apply): boolean { - if (this.id != obj.id || this.fun != obj.fun || this.args.length != obj.args.length) - return false - - for (let i in this.args) { - if (this.args[i] != obj.args[i]) - return false - } - - return true - } -} - -/** - * Coerce - */ -class Coerce { - public id: string - public arg: FId - - public constructor(arg: FId) { - this.id = 'Coerce' - this.arg = arg - } - - public show(cat: string): string { - let recStr = [] - recStr.push(cat, ' -> _ [', this.arg, ']') - return recStr.join('') - } -} - -/** - * PArg - */ -class PArg { - public fid: FId - public hypos: FId[] - - public constructor(...hypos: FId[]) { - this.fid = hypos[hypos.length-1] - if (hypos.length > 1) - this.hypos = hypos.slice(0, hypos.length-1) - else - this.hypos = [] - } -} - -/** - * Const - */ -class Const { - public id: string - public lit: Fun - public toks: string[] - - public constructor(lit: Fun, toks: string[]) { - this.id = 'Const' - this.lit = lit - this.toks = toks - } - - public show(cat: string): string { - let recStr = [] - recStr.push(cat, ' -> ', this.lit.print()) - return recStr.join('') - } - - public isEqual(obj: Const): boolean { - if (this.id != obj.id || this.lit.isEqual(obj.lit) || this.toks.length != obj.toks.length) - return false - - for (let i in this.toks) { - if (this.toks[i] != obj.toks[i]) - return false - } - - return true - } -} - -/** - * CncFun - */ -class CncFun { - public name: string - public lins: number[] | Sym[][] - - public constructor(name: string, lins: FId[]) { - this.name = name - this.lins = lins - } -} - -/** - * Sym: Definition of symbols present in linearization records - */ -type Sym = SymCat | SymKS | SymKP | SymLit - -/** - * SymCat: Object to represent argument projections in grammar rules - */ -class SymCat { - public id: string - public i: number - public label: number - - public constructor(i: number, label: number) { - this.id = 'Arg' - this.i = i - this.label = label - } - - public show(): string { - let argStr = [] - argStr.push(this.i, this.label) - return argStr.join('.') - } -} - -/** - * SymKS: Object to represent terminals in grammar rules - */ -class SymKS { - public id: string - public tokens: string[] - public tag?: string - - public constructor(...tokens: string[]) { - this.id = 'KS' - this.tokens = tokens - } - - public show(): string { - let terminalStr = [] - terminalStr.push('"', this.tokens, '"') - return terminalStr.join('') - } - - public tagWith(tag: string): SymKS { - let s = new SymKS() - s.tokens = [...this.tokens] // copy array - s.tag = tag - return s - } -} - -/** - * SymKP: Object to represent pre in grammar rules - */ -class SymKP { - public id: string - public tokens: SymKS[] - public alts: Alt[] - public tag?: string - - public constructor(tokens: SymKS[], alts: Alt[]) { - this.id = 'KP' - this.tokens = tokens - this.alts = alts - } - - public show(): string { - let terminalStr = [] - terminalStr.push('"', this.tokens, '"') - return terminalStr.join('') - } - - public tagWith(tag: string): SymKP { - let s = new SymKP([...this.tokens], [...this.alts]) // copy arguments - s.tag = tag - return s - } -} - -/** - * Alt - */ -class Alt { - public tokens: SymKS[] - public prefixes: string[] - - public constructor(tokens: SymKS[], prefixes: string[]) { - this.tokens = tokens - this.prefixes = prefixes - } -} - -/** - * SymLit: Object to represent pre in grammar rules - */ -class SymLit { - public id: string - public i: number - public label: number - - public constructor(i: number, label: number) { - this.id = 'Lit' - this.i = i - this.label = label - } - - public getId(): string { - return this.id - } - - public show(): string { - let argStr = [] - argStr.push(this.i, this.label) - return argStr.join('.') - } -} - -/** - * Trie - */ -class Trie { - public value: T[] | null - private items: {[key: string]: Trie} - - public constructor() { - this.value = null - this.items = {} - } - - public insertChain(keys: string[], obj: T[]): void { - let node: Trie = this - keys.forEach((key: string): void => { - let nnode = node.items[key] - if (nnode == null) { - nnode = new Trie() - node.items[key] = nnode - } - node = nnode - }) - node.value = obj - } - - public insertChain1(keys: string[], obj: T): void { - let node: Trie = this - keys.forEach((key: string): void => { - let nnode = node.items[key] - if (nnode == null) { - nnode = new Trie() - node.items[key] = nnode - } - node = nnode - }) - if (node.value == null) - node.value = [obj] - else - node.value.push(obj) - } - - public lookup(key: string): Trie { - return this.items[key] - } - - public isEmpty(): boolean { - if (this.value != null) - return false - - for (let _ in this.items) { - return false - } - - return true - } -} - -/** - * ParseState - */ -class ParseState { - private concrete: GFConcrete - private startCat: string - private items: Trie - private chart: Chart - - public constructor(concrete: GFConcrete, startCat: string) { - this.concrete = concrete - this.startCat = startCat - this.items = new Trie() - this.chart = new Chart(concrete) - - let items = [] - - let fids = concrete.startCats[startCat] - if (fids != null) { - let fid: FId - for (fid = fids.s; fid <= fids.e; fid++) { - let exProds = this.chart.expandForest(fid) - for (let j in exProds) { - let rule = exProds[j] as Apply - let fun = rule.fun as CncFun - for (let lbl in fun.lins) { - items.push(new ActiveItem( - 0, - 0, - rule.fun as CncFun, - fun.lins[lbl] as Sym[], - rule.args, - fid, - parseInt(lbl)) - ) - } - } - } - } - - this.items.insertChain([], items) - } - - public next(token: string): boolean { - let acc = this.items.lookup(token) - if (acc == null) { - acc = new Trie() - } - this.process( - this.items.value, - function (fid: FId): Const | null { - switch (fid) { - // String - case -1: - return new Const(new Fun('"'+token+'"'), [token]) - // Integer - case -2: { - let x = parseInt(token,10) - if (token == '0' || (x != 0 && !isNaN(x))) - return new Const(new Fun(token), [token]) - else - return null - } - // Float - case -3: { - let x = parseFloat(token) - if (token == '0' || token == '0.0' || (x != 0 && !isNaN(x))) - return new Const(new Fun(token), [token]) - else - return null - } - } - - return null - }, - function (tokens: string[], item: ActiveItem): void { - if (tokens[0] == token) { - let tokens1 = [] - for (let i = 1; i < tokens.length; i++) { - tokens1[i-1] = tokens[i] - } - acc.insertChain1(tokens1, item) - } - } - ) - - this.items = acc - this.chart.shift() - - return !this.items.isEmpty() - } - - /** - * For a ParseState and a partial input, return all possible completions - * Based closely on ParseState.next() - * currentToken could be empty or a partial string - */ - public complete(currentToken: string): Trie { - - // Initialise accumulator for suggestions - let acc = this.items.lookup(currentToken) - if (acc == null) - acc = new Trie() - - this.process( - // Items - this.items.value, - - // Deal with literal categories - function (_fid: FId): null { - // Always return null, as suggested by Krasimir - return null - }, - - // Takes an array of tokens and populates the accumulator - function (tokens: string[], item: ActiveItem): void { - if (currentToken == '' || tokens[0].indexOf(currentToken) == 0) { //if begins with... - let tokens1 = [] - for (let i = 1; i < tokens.length; i++) { - tokens1[i-1] = tokens[i] - } - acc.insertChain1(tokens1, item) - } - } - ) - - // Return matches - return acc - } - - public extractTrees(): Fun[] { - this.process( - this.items.value, - function (_fid: FId): null { - return null - }, - function (_tokens: string[], _item: ActiveItem): void { - } - ) - - let totalFIds = this.concrete.totalFIds - let forest = this.chart.forest - - function go(fid: FId): Fun[] { - if (fid < totalFIds) { - return [new Fun('?')] - } else { - let trees: Fun[] = [] - - let rules = forest[fid] // could be undefined - for (let j in rules) { - let rule: Rule = rules[j] - if (rule.id == 'Const') { - trees.push((rule as Const).lit) - } else { - rule = rule as Apply - let arg_ix: number[] = [] - let arg_ts: Fun[][] = [] - for (let k in rule.args) { - arg_ix[k] = 0 - arg_ts[k] = go(rule.args[k].fid) - } - - while (true) { - let t = new Fun((rule.fun as CncFun).name) - for (let k = 0; k < arg_ts.length; k++) { - t.setArg(k,arg_ts[k][arg_ix[k]]) - } - trees.push(t) - - let i = 0 - while (i < arg_ts.length) { - arg_ix[i]++ - if (arg_ix[i] < arg_ts[i].length) - break - - arg_ix[i] = 0 - i++ - } - - if (i >= arg_ts.length) - break - } - } - } - - return trees - } - } - - let trees = [] - let fids = this.concrete.startCats[this.startCat] - if (fids != null) { - for (let fid0 = fids.s; fid0 <= fids.e; fid0++) { - - let labels: {[key: number]: boolean} = {} - let rules = this.chart.expandForest(fid0) - rules.forEach((rule): void => { - for (let lbl in (rule.fun as CncFun).lins) { - labels[lbl] = true - } - }) - - for (let lbl0 in labels) { - let lbl: number = parseInt(lbl0) - let fid = this.chart.lookupPC(fid0, lbl, 0) - let arg_ts = go(fid) - for (let i in arg_ts) { - let isMember = false - for (let j in trees) { - if (arg_ts[i].isEqual(trees[j])) { - isMember = true - break - } - } - - if (!isMember) - trees.push(arg_ts[i]) - } - } - } - } - - return trees - } - - private process( - agenda: ActiveItem[] | null, - literalCallback: (fid: FId) => Const | null, // this is right - tokenCallback: (tokens: string[], item: ActiveItem) => void - ): void { - if (agenda != null) { - while (agenda.length > 0) { - let item = agenda.pop() as ActiveItem - let lin = item.seq - - if (item.dot < lin.length) { - let sym0 = lin[item.dot] - switch (sym0.id) { - case 'Arg': { - let sym = sym0 as SymCat - let fid = item.args[sym.i].fid - let label = sym.label - - let items = this.chart.lookupAC(fid,label) - if (items == null) { - let rules = this.chart.expandForest(fid) - for (let j in rules) { - let rule = rules[j] as Apply - agenda.push(new ActiveItem( - this.chart.offset, - 0, - rule.fun as CncFun, - ((rule.fun as CncFun).lins as Sym[][])[label], - rule.args, - fid, - label) - ) - } - this.chart.insertAC(fid,label,[item]) - } else { - let isMember = false - for (let j in items) { - if (items[j].isEqual(item)) { - isMember = true - break - } - } - - if (!isMember) { - items.push(item) - - let fid2 = this.chart.lookupPC(fid,label,this.chart.offset) - if (fid2 != null) { - agenda.push(item.shiftOverArg(sym.i,fid2)) - } - } - } - break - } - case 'KS': { - let sym = sym0 as SymKS - tokenCallback(sym.tokens, item.shiftOverTokn()) - break - } - case 'KP': { - let sym = sym0 as SymKP - let pitem = item.shiftOverTokn() - sym.tokens.forEach((symks: SymKS): void => { // TODO not sure if this is right - tokenCallback(symks.tokens, pitem) - }) - sym.alts.forEach((alt: Alt): void => { - // tokenCallback(alt.tokens, pitem) - alt.tokens.forEach((symks: SymKS): void => { // TODO not sure if this is right - tokenCallback(symks.tokens, pitem) - }) - }) - break - } - case 'Lit': { - let sym = sym0 as SymLit - let fid = item.args[sym.i].fid - let rules = this.chart.forest[fid] - if (rules != null) { - tokenCallback((rules[0] as Const).toks, item.shiftOverTokn()) - } else { - let rule = literalCallback(fid) - if (rule != null) { - fid = this.chart.nextId++ - this.chart.forest[fid] = [rule] - tokenCallback(rule.toks, item.shiftOverArg(sym.i, fid)) - } - } - break - } - } - } else { - let fid = this.chart.lookupPC(item.fid,item.lbl,item.offset) - if (fid == null) { - fid = this.chart.nextId++ - - let items = this.chart.lookupACo(item.offset,item.fid,item.lbl) - if (items != null) { - items.forEach((pitem: ActiveItem): void => { - let i = (pitem.seq[pitem.dot] as SymCat).i - agenda.push(pitem.shiftOverArg(i,fid)) - }) - } - - this.chart.insertPC(item.fid,item.lbl,item.offset,fid) - this.chart.forest[fid] = [new Apply(item.fun,item.args)] - } else { - let labels = this.chart.labelsAC(fid) - if (labels != null) { - for (let lbl in labels) { - agenda.push(new ActiveItem( - this.chart.offset, - 0, - item.fun, - item.fun.lins[lbl] as Sym[], - item.args, - fid, - parseInt(lbl)) - ) - } - } - - let rules = this.chart.forest[fid] - let rule = new Apply(item.fun,item.args) - - let isMember = false - rules.forEach((rule1): void => { - if ((rule1 as Apply).isEqual(rule)) // TODO might need to check if Coerce here - isMember = true - }) - - if (!isMember) - rules.push(rule) - } - } - } - } - } -} - -/** - * Map of label to list of ActiveItems - */ -interface ActiveItemMap {[key: number]: ActiveItem[]} - -/** - * Chart - */ -class Chart { - // private active: {[key: number]: ActiveItem} // key: FId - private active: {[key: number]: ActiveItemMap} // key: FId - private actives: {[key: number]: ActiveItemMap}[] // key: FId - private passive: {[key: string]: FId} - public forest: {[key: number]: Rule[]} // key: FId - public nextId: number - public offset: number - - public constructor(concrete: GFConcrete) { - this.active = {} - this.actives = [] - this.passive = {} - this.forest = {} - this.nextId = concrete.totalFIds - this.offset = 0 - - for (let fid in concrete.pproductions) { - this.forest[fid] = concrete.pproductions[fid] - } - } - - public lookupAC(fid: FId, label: number): ActiveItem[] | null { - let tmp = this.active[fid] - if (tmp == null) - return null - return tmp[label] - } - - public lookupACo(offset: number, fid: FId, label: number): ActiveItem[] | null { - let tmp: ActiveItemMap - - if (offset == this.offset) - tmp = this.active[fid] - else - tmp = this.actives[offset][fid] - - if (tmp == null) - return null - - return tmp[label] - } - - public labelsAC(fid: FId): ActiveItemMap { - return this.active[fid] - } - - public insertAC(fid: FId, label: number, items: ActiveItem[]): void { - let tmp: ActiveItemMap = this.active[fid] - if (tmp == null) { - tmp = {} - this.active[fid] = tmp - } - tmp[label] = items - } - - public lookupPC(fid: FId, label: number, offset: number): FId { - let key = fid+'.'+label+'-'+offset - return this.passive[key] - } - - public insertPC(fid1: FId, label: number, offset: number, fid2: FId): void { - let key = fid1+'.'+label+'-'+offset - this.passive[key] = fid2 - } - - public shift(): void { - this.actives.push(this.active) - this.active = {} - this.passive = {} - this.offset++ - } - - public expandForest(fid: FId): Apply[] { - let rules: Apply[] = [] - let forest = this.forest - - let go = function (rules0: Rule[]): void { - for (let i in rules0) { - let rule = rules0[i] - switch (rule.id) { - case 'Apply': - rules.push(rule as Apply) - break - case 'Coerce': - go(forest[(rule as Coerce).arg]) - break - } - } - } - - go(this.forest[fid]) - return rules - } -} - -/** - * ActiveItem - */ -class ActiveItem { - public offset: number - public dot: number - public fun: CncFun - public seq: Sym[] - public args: PArg[] - public fid: FId - public lbl: number - - public constructor( - offset: number, - dot: number, - fun: CncFun, - seq: Sym[], - args: PArg[], - fid: FId, - lbl: number - ) { - this.offset = offset - this.dot = dot - this.fun = fun - this.seq = seq - this.args = args - this.fid = fid - this.lbl = lbl - } - - public isEqual(obj: ActiveItem): boolean { - return (this.offset== obj.offset && - this.dot == obj.dot && - this.fun == obj.fun && - this.seq == obj.seq && - this.args == obj.args && - this.fid == obj.fid && - this.lbl == obj.lbl) - } - - public shiftOverArg(i: number, fid: FId): ActiveItem { - let nargs: PArg[] = [] - for (let k in this.args) { - nargs[k] = this.args[k] - } - nargs[i] = new PArg(fid) - return new ActiveItem(this.offset,this.dot+1,this.fun,this.seq,nargs,this.fid,this.lbl) - } - - public shiftOverTokn(): ActiveItem { - return new ActiveItem(this.offset,this.dot+1,this.fun,this.seq,this.args,this.fid,this.lbl) - } -} - -/** - * Utilities - */ - -/* from Remedial JavaScript by Douglas Crockford, http://javascript.crockford.com/remedial.html */ -// function isString(a: any): boolean { -// return typeof a == 'string' || a instanceof String -// } -// function isArray(a: any): boolean { -// return a && typeof a == 'object' && a.constructor == Array -// } -function isUndefined(a: any): boolean { // eslint-disable-line @typescript-eslint/no-explicit-any - return typeof a == 'undefined' -} -// function isBoolean(a: any): boolean { -// return typeof a == 'boolean' -// } -// function isNumber(a: any): boolean { -// return typeof a == 'number' && isFinite(a) -// } -// function isFunction(a: any): boolean { -// return typeof a == 'function' -// } -// function dumpObject (obj: any): string { -// if (isUndefined(obj)) { -// return 'undefined' -// } else if (isString(obj)) { -// return '"' + obj.toString() + '"' // FIXME: escape -// } else if (isBoolean(obj) || isNumber(obj)) { -// return obj.toString() -// } else if (isArray(obj)) { -// let x = '[' -// for (let i = 0; i < obj.length; i++) { -// x += dumpObject(obj[i]) -// if (i < obj.length-1) { -// x += ',' -// } -// } -// return x + ']' -// } else { -// let x = '{' -// for (let y in obj) { -// x += y + '=' + dumpObject(obj[y]) + ';' -// } -// return x + '}' -// } -// } - -/** - * Polyfills for older targets - */ - -interface String { - startsWith: (search: string, pos?: number) => boolean; - includes: (search: string, start?: number) => boolean; -} - -// https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/String/startsWith#Polyfill -if (!String.prototype.startsWith) { - Object.defineProperty(String.prototype, 'startsWith', { - value: function(search: string, pos?: number): boolean { - pos = !pos || pos < 0 ? 0 : +pos - return this.substring(pos, pos + search.length) === search - } - }) -} -// https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/String/includes#Polyfill -if (!String.prototype.includes) { - Object.defineProperty(String.prototype, 'includes', { - value: function(search: string, start?: number): boolean { - 'use strict' - if (typeof start !== 'number') { - start = 0 - } - - if (start + search.length > this.length) { - return false - } else { - return this.indexOf(search, start) !== -1 - } - } - }) -} - -/** - * gflib.ts as a module - * If you want to make this into a proper module, uncomment this: - */ - -// export { -// GFGrammar, -// GFAbstract, -// GFConcrete, -// Fun, -// Type, -// Apply, -// Coerce, -// PArg, -// Const, -// CncFun, -// SymCat, -// SymKS, -// SymKP, -// SymLit, -// Alt, -// } diff --git a/src/runtime/typescript/js/gflib.js b/src/runtime/typescript/js/gflib.js deleted file mode 100644 index 7c6352705..000000000 --- a/src/runtime/typescript/js/gflib.js +++ /dev/null @@ -1,1164 +0,0 @@ -"use strict"; -var GFGrammar = (function () { - function GFGrammar(abstract, concretes) { - this.abstract = abstract; - this.concretes = concretes; - } - GFGrammar.prototype.translate = function (input, fromLang, toLang) { - var outputs = {}; - var fromConcs = this.concretes; - if (fromLang) { - fromConcs = {}; - fromConcs[fromLang] = this.concretes[fromLang]; - } - var toConcs = this.concretes; - if (toLang) { - toConcs = {}; - toConcs[toLang] = this.concretes[toLang]; - } - for (var c1 in fromConcs) { - var concrete = this.concretes[c1]; - var trees = concrete.parseString(input, this.abstract.startcat); - if (trees.length > 0) { - outputs[c1] = []; - for (var i in trees) { - outputs[c1][i] = {}; - for (var c2 in toConcs) { - outputs[c1][i][c2] = this.concretes[c2].linearize(trees[i]); - } - } - } - } - return outputs; - }; - return GFGrammar; -}()); -var Fun = (function () { - function Fun(name) { - var args = []; - for (var _i = 1; _i < arguments.length; _i++) { - args[_i - 1] = arguments[_i]; - } - this.name = name; - this.args = []; - for (var i = 1; i < args.length; i++) { - this.args[i - 1] = args[i]; - } - } - Fun.prototype.print = function () { - return this.show(0); - }; - Fun.prototype.show = function (prec) { - if (this.isMeta()) { - if (isUndefined(this.type)) { - return '?'; - } - else { - var s = '?:' + this.type; - if (prec > 0) { - s = '(' + s + ')'; - } - return s; - } - } - else { - var s = this.name; - var cs = this.args; - for (var i in cs) { - s += ' ' + (isUndefined(cs[i]) ? 'undefined' : cs[i].show(1)); - } - if (prec > 0 && cs.length > 0) { - s = '(' + s + ')'; - } - return s; - } - }; - Fun.prototype.getArg = function (i) { - return this.args[i]; - }; - Fun.prototype.setArg = function (i, c) { - this.args[i] = c; - }; - Fun.prototype.isMeta = function () { - return this.name == '?'; - }; - Fun.prototype.isComplete = function () { - if (this.isMeta()) { - return false; - } - else { - for (var i in this.args) { - if (!this.args[i].isComplete()) { - return false; - } - } - return true; - } - }; - Fun.prototype.isLiteral = function () { - return (/^[\"\-\d]/).test(this.name); - }; - Fun.prototype.isString = function () { - return (/^\".*\"$/).test(this.name); - }; - Fun.prototype.isInt = function () { - return (/^\-?\d+$/).test(this.name); - }; - Fun.prototype.isFloat = function () { - return (/^\-?\d*(\.\d*)?$/).test(this.name) && this.name != '.' && this.name != '-.'; - }; - Fun.prototype.isEqual = function (obj) { - if (this.name != obj.name) - return false; - for (var i in this.args) { - if (!this.args[i].isEqual(obj.args[i])) - return false; - } - return true; - }; - return Fun; -}()); -var GFAbstract = (function () { - function GFAbstract(startcat, types) { - this.startcat = startcat; - this.types = types; - } - GFAbstract.prototype.addType = function (fun, args, cat) { - this.types[fun] = new Type(args, cat); - }; - GFAbstract.prototype.getArgs = function (fun) { - return this.types[fun].args; - }; - GFAbstract.prototype.getCat = function (fun) { - return this.types[fun].cat; - }; - GFAbstract.prototype.annotate = function (tree, type) { - var typ = this.types[tree.name]; - if (tree.isMeta()) { - tree.type = type; - } - else if (!isUndefined(typ)) { - for (var i in tree.args) { - this.annotate(tree.args[i], typ.args[i]); - } - } - return tree; - }; - GFAbstract.prototype.handleLiterals = function (tree, type) { - if (tree.name != '?') { - if (type == 'String' || type == 'Int' || type == 'Float') { - tree.name = type + '_Literal_' + tree.name; - } - else { - var typ = this.types[tree.name]; - for (var i in tree.args) { - this.handleLiterals(tree.args[i], typ.args[i]); - } - } - } - return tree; - }; - GFAbstract.prototype.copyTree = function (x) { - var t = new Fun(x.name); - if (!isUndefined(x.type)) { - t.type = x.type; - } - var cs = x.args; - if (!isUndefined(cs)) { - for (var i = 0; i < cs.length; i++) { - t.setArg(i, this.copyTree(cs[i])); - } - } - return t; - }; - GFAbstract.prototype.parseTree = function (str, type) { - var pt = this.parseTree_(str.match(/[\w\u00C0-\u00FF\'\.\"]+|\(|\)|\?|\:/g) || [], 0); - return pt ? this.annotate(pt, type) : null; - }; - GFAbstract.prototype.parseTree_ = function (tokens, prec) { - if (tokens.length == 0 || tokens[0] == ')') { - return null; - } - var t = tokens.shift(); - if (!t) - return null; - if (t == '(') { - var tree = this.parseTree_(tokens, 0); - tokens.shift(); - return tree; - } - else if (t == '?') { - return new Fun('?'); - } - else { - var tree = new Fun(t); - if (prec == 0) { - var c = void 0; - var i = void 0; - for (i = 0; (c = this.parseTree_(tokens, 1)) !== null; i++) { - tree.setArg(i, c); - } - } - return tree; - } - }; - return GFAbstract; -}()); -var Type = (function () { - function Type(args, cat) { - this.args = args; - this.cat = cat; - } - return Type; -}()); -var GFConcrete = (function () { - function GFConcrete(flags, productions, functions, sequences, startCats, totalFIds) { - this.flags = flags; - this.functions = functions; - this.startCats = startCats; - this.totalFIds = totalFIds; - this.pproductions = productions; - this.lproductions = {}; - var _loop_1 = function (fid0) { - var fid = parseInt(fid0); - var _loop_2 = function (i) { - var rule = productions[fid][i]; - if (rule.id == 'Apply') { - rule = rule; - var fun_1 = this_1.functions[rule.fun]; - var lproductions_1 = this_1.lproductions; - rule.fun = fun_1; - var register_1 = function (args, key, i) { - if (i < args.length) { - var c = 0; - var arg = args[i].fid; - for (var k in productions[arg]) { - var rule_1 = productions[arg][k]; - if (rule_1.id == 'Coerce') { - rule_1 = rule_1; - register_1(args, key + '_' + rule_1.arg, i + 1); - c++; - } - } - if (c == 0) { - register_1(args, key + '_' + arg, i + 1); - } - } - else { - var set = lproductions_1[key]; - if (set == null) { - set = []; - lproductions_1[key] = set; - } - set.push({ fun: fun_1, fid: fid }); - } - }; - register_1(rule.args, rule.fun.name, 0); - } - }; - for (var i in productions[fid]) { - _loop_2(i); - } - }; - var this_1 = this; - for (var fid0 in productions) { - _loop_1(fid0); - } - for (var _i = 0, functions_1 = functions; _i < functions_1.length; _i++) { - var fun = functions_1[_i]; - for (var j in fun.lins) { - fun.lins[j] = sequences[fun.lins[j]]; - } - } - } - GFConcrete.prototype.linearizeSyms = function (tree, tag) { - var res = []; - if (tree.isString()) { - var sym = new SymKS(tree.name); - sym.tag = tag; - res.push({ fid: -1, table: [[sym]] }); - } - else if (tree.isInt()) { - var sym = new SymKS(tree.name); - sym.tag = tag; - res.push({ fid: -2, table: [[sym]] }); - } - else if (tree.isFloat()) { - var sym = new SymKS(tree.name); - sym.tag = tag; - res.push({ fid: -3, table: [[sym]] }); - } - else if (tree.isMeta()) { - var cat = this.startCats[tree.type]; - var sym = new SymKS(tree.name); - sym.tag = tag; - for (var fid = cat.s; fid <= cat.e; fid++) { - res.push({ fid: fid, table: [[sym]] }); - } - } - else { - var cs_1 = []; - for (var i in tree.args) { - cs_1.push(this.linearizeSyms(tree.args[i], tag + '-' + i)[0]); - } - var key = tree.name; - for (var i in cs_1) { - if (isUndefined(cs_1[i])) { - console.warn(tree.args[i].name + " is undefined"); - return [{ - fid: -5, - table: [[new SymKS("[" + tree.name + "]").tagWith(tag)]] - }]; - } - else if (cs_1[i].fid === -5) { - for (var k in this.lproductions) { - if (k.includes(tree.name)) { - key = k; - break; - } - } - break; - } - else { - key = key + '_' + cs_1[i].fid; - } - } - for (var i in this.lproductions[key]) { - var rule = this.lproductions[key][i]; - var row = { - fid: rule.fid, - table: [] - }; - var _loop_3 = function (j) { - var lin = rule.fun.lins[j]; - var toks = []; - row.table[j] = toks; - lin.forEach(function (sym0) { - switch (sym0.id) { - case 'Arg': - case 'Lit': { - var sym = sym0; - var ts = cs_1[sym.i].table[sym.label]; - for (var l in ts) { - toks.push(ts[l]); - } - break; - } - case 'KS': - case 'KP': { - var sym = sym0; - toks.push(sym.tagWith(tag)); - break; - } - } - }); - }; - for (var j in rule.fun.lins) { - _loop_3(j); - } - res.push(row); - } - } - return res; - }; - GFConcrete.prototype.syms2toks = function (syms) { - var ts = []; - var _loop_4 = function (i) { - var sym0 = syms[i]; - switch (sym0.id) { - case 'KS': { - var sym = sym0; - for (var j in sym.tokens) { - ts.push(new TaggedString(sym.tokens[j], sym.tag)); - } - break; - } - case 'KP': { - var sym_1 = sym0; - var addedAlt_1 = false; - if (i < syms.length - 1) { - var nextSym = syms[i + 1]; - if (nextSym.id == 'KS') { - var nextToken_1 = nextSym.tokens[0]; - sym_1.alts.forEach(function (alt) { - if (alt.prefixes.some(function (p) { return nextToken_1.startsWith(p); })) { - alt.tokens.forEach(function (symks) { - symks.tokens.forEach(function (t) { - ts.push(new TaggedString(t, sym_1.tag)); - }); - }); - addedAlt_1 = true; - return; - } - }); - } - } - if (addedAlt_1) - break; - sym_1.tokens.forEach(function (symks) { - symks.tokens.forEach(function (t) { - ts.push(new TaggedString(t, sym_1.tag)); - }); - }); - break; - } - } - }; - for (var i = 0; i < syms.length; i++) { - _loop_4(i); - } - return ts; - }; - GFConcrete.prototype.linearizeAll = function (tree) { - var _this = this; - return this.linearizeSyms(tree, '0').map(function (r) { - return _this.unlex(_this.syms2toks(r.table[0])); - }); - }; - GFConcrete.prototype.linearize = function (tree) { - var res = this.linearizeSyms(tree, '0'); - if (res.length > 0) - return this.unlex(this.syms2toks(res[0].table[0])); - else - return ''; - }; - GFConcrete.prototype.tagAndLinearize = function (tree) { - var res = this.linearizeSyms(tree, '0'); - if (res.length > 0) - return this.syms2toks(res[0].table[0]); - else - return []; - }; - GFConcrete.prototype.unlex = function (ts) { - if (ts.length == 0) { - return ''; - } - var noSpaceAfter = /^[\(\-\[]/; - var noSpaceBefore = /^[\.\,\?\!\)\:\;\-\]]/; - var s = ''; - for (var i = 0; i < ts.length; i++) { - var t = ts[i].s; - var after = i < ts.length - 1 ? ts[i + 1].s : null; - s += t; - if (after != null - && !t.match(noSpaceAfter) - && !after.match(noSpaceBefore)) { - s += ' '; - } - } - return s; - }; - GFConcrete.prototype.tokenize = function (string) { - var inToken = false; - var start = 0; - var end; - var tokens = []; - var i; - for (i = 0; i < string.length; i++) { - if (string.charAt(i) == ' ' - || string.charAt(i) == '\f' - || string.charAt(i) == '\n' - || string.charAt(i) == '\r' - || string.charAt(i) == '\t' - || string.charAt(i) == '\v' - || string.charAt(i) == String.fromCharCode(160)) { - if (inToken) { - end = i - 1; - inToken = false; - tokens.push(string.substr(start, end - start + 1)); - } - } - else { - if (!inToken) { - start = i; - inToken = true; - } - } - } - if (inToken) { - end = i - 1; - inToken = false; - tokens.push(string.substr(start, end - start + 1)); - } - return tokens; - }; - GFConcrete.prototype.parseString = function (string, cat) { - var tokens = this.tokenize(string); - var ps = new ParseState(this, cat); - for (var i in tokens) { - if (!ps.next(tokens[i])) - return []; - } - return ps.extractTrees(); - }; - GFConcrete.prototype.complete = function (input, cat) { - if (input == null) - input = ''; - var tokens = input.trim().split(' '); - for (var i = tokens.length - 1; i >= 0; i--) { - if (tokens[i] == '') { - tokens.splice(i, 1); - } - } - var current = tokens.pop(); - if (current == null) - current = ''; - var ps = new ParseState(this, cat); - var ps2 = new ParseState(this, cat); - for (var i = 0; i < tokens.length; i++) { - if (!ps.next(tokens[i])) { - return { 'consumed': [], 'suggestions': [] }; - } - ps2.next(tokens[i]); - } - if (ps2.next(current)) { - ps.next(current); - tokens.push(current); - current = ''; - } - var acc = ps.complete(current); - var suggs = []; - if (acc.value) { - acc.value.forEach(function (a) { - a.seq.forEach(function (s) { - switch (s.id) { - case 'KS': { - s.tokens.forEach(function (t) { - suggs.push(t); - }); - break; - } - case 'KP': { - s.tokens.forEach(function (symks) { - symks.tokens.forEach(function (t) { - suggs.push(t); - }); - }); - break; - } - } - }); - }); - } - return { 'consumed': tokens, 'suggestions': suggs }; - }; - return GFConcrete; -}()); -var TaggedString = (function () { - function TaggedString(s, tag) { - this.s = s; - this.tag = tag; - } - return TaggedString; -}()); -var Apply = (function () { - function Apply(fun, args) { - this.id = 'Apply'; - this.fun = fun; - this.args = args; - } - Apply.prototype.show = function (cat) { - var recStr = []; - recStr.push(cat, ' -> ', this.fun.name, ' [', this.args, ']'); - return recStr.join(''); - }; - Apply.prototype.isEqual = function (obj) { - if (this.id != obj.id || this.fun != obj.fun || this.args.length != obj.args.length) - return false; - for (var i in this.args) { - if (this.args[i] != obj.args[i]) - return false; - } - return true; - }; - return Apply; -}()); -var Coerce = (function () { - function Coerce(arg) { - this.id = 'Coerce'; - this.arg = arg; - } - Coerce.prototype.show = function (cat) { - var recStr = []; - recStr.push(cat, ' -> _ [', this.arg, ']'); - return recStr.join(''); - }; - return Coerce; -}()); -var PArg = (function () { - function PArg() { - var hypos = []; - for (var _i = 0; _i < arguments.length; _i++) { - hypos[_i] = arguments[_i]; - } - this.fid = hypos[hypos.length - 1]; - if (hypos.length > 1) - this.hypos = hypos.slice(0, hypos.length - 1); - else - this.hypos = []; - } - return PArg; -}()); -var Const = (function () { - function Const(lit, toks) { - this.id = 'Const'; - this.lit = lit; - this.toks = toks; - } - Const.prototype.show = function (cat) { - var recStr = []; - recStr.push(cat, ' -> ', this.lit.print()); - return recStr.join(''); - }; - Const.prototype.isEqual = function (obj) { - if (this.id != obj.id || this.lit.isEqual(obj.lit) || this.toks.length != obj.toks.length) - return false; - for (var i in this.toks) { - if (this.toks[i] != obj.toks[i]) - return false; - } - return true; - }; - return Const; -}()); -var CncFun = (function () { - function CncFun(name, lins) { - this.name = name; - this.lins = lins; - } - return CncFun; -}()); -var SymCat = (function () { - function SymCat(i, label) { - this.id = 'Arg'; - this.i = i; - this.label = label; - } - SymCat.prototype.show = function () { - var argStr = []; - argStr.push(this.i, this.label); - return argStr.join('.'); - }; - return SymCat; -}()); -var SymKS = (function () { - function SymKS() { - var tokens = []; - for (var _i = 0; _i < arguments.length; _i++) { - tokens[_i] = arguments[_i]; - } - this.id = 'KS'; - this.tokens = tokens; - } - SymKS.prototype.show = function () { - var terminalStr = []; - terminalStr.push('"', this.tokens, '"'); - return terminalStr.join(''); - }; - SymKS.prototype.tagWith = function (tag) { - var s = new SymKS(); - s.tokens = this.tokens.slice(); - s.tag = tag; - return s; - }; - return SymKS; -}()); -var SymKP = (function () { - function SymKP(tokens, alts) { - this.id = 'KP'; - this.tokens = tokens; - this.alts = alts; - } - SymKP.prototype.show = function () { - var terminalStr = []; - terminalStr.push('"', this.tokens, '"'); - return terminalStr.join(''); - }; - SymKP.prototype.tagWith = function (tag) { - var s = new SymKP(this.tokens.slice(), this.alts.slice()); - s.tag = tag; - return s; - }; - return SymKP; -}()); -var Alt = (function () { - function Alt(tokens, prefixes) { - this.tokens = tokens; - this.prefixes = prefixes; - } - return Alt; -}()); -var SymLit = (function () { - function SymLit(i, label) { - this.id = 'Lit'; - this.i = i; - this.label = label; - } - SymLit.prototype.getId = function () { - return this.id; - }; - SymLit.prototype.show = function () { - var argStr = []; - argStr.push(this.i, this.label); - return argStr.join('.'); - }; - return SymLit; -}()); -var Trie = (function () { - function Trie() { - this.value = null; - this.items = {}; - } - Trie.prototype.insertChain = function (keys, obj) { - var node = this; - keys.forEach(function (key) { - var nnode = node.items[key]; - if (nnode == null) { - nnode = new Trie(); - node.items[key] = nnode; - } - node = nnode; - }); - node.value = obj; - }; - Trie.prototype.insertChain1 = function (keys, obj) { - var node = this; - keys.forEach(function (key) { - var nnode = node.items[key]; - if (nnode == null) { - nnode = new Trie(); - node.items[key] = nnode; - } - node = nnode; - }); - if (node.value == null) - node.value = [obj]; - else - node.value.push(obj); - }; - Trie.prototype.lookup = function (key) { - return this.items[key]; - }; - Trie.prototype.isEmpty = function () { - if (this.value != null) - return false; - for (var _ in this.items) { - return false; - } - return true; - }; - return Trie; -}()); -var ParseState = (function () { - function ParseState(concrete, startCat) { - this.concrete = concrete; - this.startCat = startCat; - this.items = new Trie(); - this.chart = new Chart(concrete); - var items = []; - var fids = concrete.startCats[startCat]; - if (fids != null) { - var fid = void 0; - for (fid = fids.s; fid <= fids.e; fid++) { - var exProds = this.chart.expandForest(fid); - for (var j in exProds) { - var rule = exProds[j]; - var fun = rule.fun; - for (var lbl in fun.lins) { - items.push(new ActiveItem(0, 0, rule.fun, fun.lins[lbl], rule.args, fid, parseInt(lbl))); - } - } - } - } - this.items.insertChain([], items); - } - ParseState.prototype.next = function (token) { - var acc = this.items.lookup(token); - if (acc == null) { - acc = new Trie(); - } - this.process(this.items.value, function (fid) { - switch (fid) { - case -1: - return new Const(new Fun('"' + token + '"'), [token]); - case -2: { - var x = parseInt(token, 10); - if (token == '0' || (x != 0 && !isNaN(x))) - return new Const(new Fun(token), [token]); - else - return null; - } - case -3: { - var x = parseFloat(token); - if (token == '0' || token == '0.0' || (x != 0 && !isNaN(x))) - return new Const(new Fun(token), [token]); - else - return null; - } - } - return null; - }, function (tokens, item) { - if (tokens[0] == token) { - var tokens1 = []; - for (var i = 1; i < tokens.length; i++) { - tokens1[i - 1] = tokens[i]; - } - acc.insertChain1(tokens1, item); - } - }); - this.items = acc; - this.chart.shift(); - return !this.items.isEmpty(); - }; - ParseState.prototype.complete = function (currentToken) { - var acc = this.items.lookup(currentToken); - if (acc == null) - acc = new Trie(); - this.process(this.items.value, function (_fid) { - return null; - }, function (tokens, item) { - if (currentToken == '' || tokens[0].indexOf(currentToken) == 0) { - var tokens1 = []; - for (var i = 1; i < tokens.length; i++) { - tokens1[i - 1] = tokens[i]; - } - acc.insertChain1(tokens1, item); - } - }); - return acc; - }; - ParseState.prototype.extractTrees = function () { - this.process(this.items.value, function (_fid) { - return null; - }, function (_tokens, _item) { - }); - var totalFIds = this.concrete.totalFIds; - var forest = this.chart.forest; - function go(fid) { - if (fid < totalFIds) { - return [new Fun('?')]; - } - else { - var trees_1 = []; - var rules = forest[fid]; - for (var j in rules) { - var rule = rules[j]; - if (rule.id == 'Const') { - trees_1.push(rule.lit); - } - else { - rule = rule; - var arg_ix = []; - var arg_ts = []; - for (var k in rule.args) { - arg_ix[k] = 0; - arg_ts[k] = go(rule.args[k].fid); - } - while (true) { - var t = new Fun(rule.fun.name); - for (var k = 0; k < arg_ts.length; k++) { - t.setArg(k, arg_ts[k][arg_ix[k]]); - } - trees_1.push(t); - var i = 0; - while (i < arg_ts.length) { - arg_ix[i]++; - if (arg_ix[i] < arg_ts[i].length) - break; - arg_ix[i] = 0; - i++; - } - if (i >= arg_ts.length) - break; - } - } - } - return trees_1; - } - } - var trees = []; - var fids = this.concrete.startCats[this.startCat]; - if (fids != null) { - var _loop_5 = function (fid0) { - var labels = {}; - var rules = this_2.chart.expandForest(fid0); - rules.forEach(function (rule) { - for (var lbl in rule.fun.lins) { - labels[lbl] = true; - } - }); - for (var lbl0 in labels) { - var lbl = parseInt(lbl0); - var fid = this_2.chart.lookupPC(fid0, lbl, 0); - var arg_ts = go(fid); - for (var i in arg_ts) { - var isMember = false; - for (var j in trees) { - if (arg_ts[i].isEqual(trees[j])) { - isMember = true; - break; - } - } - if (!isMember) - trees.push(arg_ts[i]); - } - } - }; - var this_2 = this; - for (var fid0 = fids.s; fid0 <= fids.e; fid0++) { - _loop_5(fid0); - } - } - return trees; - }; - ParseState.prototype.process = function (agenda, literalCallback, tokenCallback) { - if (agenda != null) { - var _loop_6 = function () { - var item = agenda.pop(); - var lin = item.seq; - if (item.dot < lin.length) { - var sym0 = lin[item.dot]; - switch (sym0.id) { - case 'Arg': { - var sym = sym0; - var fid = item.args[sym.i].fid; - var label = sym.label; - var items = this_3.chart.lookupAC(fid, label); - if (items == null) { - var rules = this_3.chart.expandForest(fid); - for (var j in rules) { - var rule = rules[j]; - agenda.push(new ActiveItem(this_3.chart.offset, 0, rule.fun, rule.fun.lins[label], rule.args, fid, label)); - } - this_3.chart.insertAC(fid, label, [item]); - } - else { - var isMember = false; - for (var j in items) { - if (items[j].isEqual(item)) { - isMember = true; - break; - } - } - if (!isMember) { - items.push(item); - var fid2 = this_3.chart.lookupPC(fid, label, this_3.chart.offset); - if (fid2 != null) { - agenda.push(item.shiftOverArg(sym.i, fid2)); - } - } - } - break; - } - case 'KS': { - var sym = sym0; - tokenCallback(sym.tokens, item.shiftOverTokn()); - break; - } - case 'KP': { - var sym = sym0; - var pitem_1 = item.shiftOverTokn(); - sym.tokens.forEach(function (symks) { - tokenCallback(symks.tokens, pitem_1); - }); - sym.alts.forEach(function (alt) { - alt.tokens.forEach(function (symks) { - tokenCallback(symks.tokens, pitem_1); - }); - }); - break; - } - case 'Lit': { - var sym = sym0; - var fid = item.args[sym.i].fid; - var rules = this_3.chart.forest[fid]; - if (rules != null) { - tokenCallback(rules[0].toks, item.shiftOverTokn()); - } - else { - var rule = literalCallback(fid); - if (rule != null) { - fid = this_3.chart.nextId++; - this_3.chart.forest[fid] = [rule]; - tokenCallback(rule.toks, item.shiftOverArg(sym.i, fid)); - } - } - break; - } - } - } - else { - var fid_1 = this_3.chart.lookupPC(item.fid, item.lbl, item.offset); - if (fid_1 == null) { - fid_1 = this_3.chart.nextId++; - var items = this_3.chart.lookupACo(item.offset, item.fid, item.lbl); - if (items != null) { - items.forEach(function (pitem) { - var i = pitem.seq[pitem.dot].i; - agenda.push(pitem.shiftOverArg(i, fid_1)); - }); - } - this_3.chart.insertPC(item.fid, item.lbl, item.offset, fid_1); - this_3.chart.forest[fid_1] = [new Apply(item.fun, item.args)]; - } - else { - var labels = this_3.chart.labelsAC(fid_1); - if (labels != null) { - for (var lbl in labels) { - agenda.push(new ActiveItem(this_3.chart.offset, 0, item.fun, item.fun.lins[lbl], item.args, fid_1, parseInt(lbl))); - } - } - var rules = this_3.chart.forest[fid_1]; - var rule_2 = new Apply(item.fun, item.args); - var isMember_1 = false; - rules.forEach(function (rule1) { - if (rule1.isEqual(rule_2)) - isMember_1 = true; - }); - if (!isMember_1) - rules.push(rule_2); - } - } - }; - var this_3 = this; - while (agenda.length > 0) { - _loop_6(); - } - } - }; - return ParseState; -}()); -var Chart = (function () { - function Chart(concrete) { - this.active = {}; - this.actives = []; - this.passive = {}; - this.forest = {}; - this.nextId = concrete.totalFIds; - this.offset = 0; - for (var fid in concrete.pproductions) { - this.forest[fid] = concrete.pproductions[fid]; - } - } - Chart.prototype.lookupAC = function (fid, label) { - var tmp = this.active[fid]; - if (tmp == null) - return null; - return tmp[label]; - }; - Chart.prototype.lookupACo = function (offset, fid, label) { - var tmp; - if (offset == this.offset) - tmp = this.active[fid]; - else - tmp = this.actives[offset][fid]; - if (tmp == null) - return null; - return tmp[label]; - }; - Chart.prototype.labelsAC = function (fid) { - return this.active[fid]; - }; - Chart.prototype.insertAC = function (fid, label, items) { - var tmp = this.active[fid]; - if (tmp == null) { - tmp = {}; - this.active[fid] = tmp; - } - tmp[label] = items; - }; - Chart.prototype.lookupPC = function (fid, label, offset) { - var key = fid + '.' + label + '-' + offset; - return this.passive[key]; - }; - Chart.prototype.insertPC = function (fid1, label, offset, fid2) { - var key = fid1 + '.' + label + '-' + offset; - this.passive[key] = fid2; - }; - Chart.prototype.shift = function () { - this.actives.push(this.active); - this.active = {}; - this.passive = {}; - this.offset++; - }; - Chart.prototype.expandForest = function (fid) { - var rules = []; - var forest = this.forest; - var go = function (rules0) { - for (var i in rules0) { - var rule = rules0[i]; - switch (rule.id) { - case 'Apply': - rules.push(rule); - break; - case 'Coerce': - go(forest[rule.arg]); - break; - } - } - }; - go(this.forest[fid]); - return rules; - }; - return Chart; -}()); -var ActiveItem = (function () { - function ActiveItem(offset, dot, fun, seq, args, fid, lbl) { - this.offset = offset; - this.dot = dot; - this.fun = fun; - this.seq = seq; - this.args = args; - this.fid = fid; - this.lbl = lbl; - } - ActiveItem.prototype.isEqual = function (obj) { - return (this.offset == obj.offset && - this.dot == obj.dot && - this.fun == obj.fun && - this.seq == obj.seq && - this.args == obj.args && - this.fid == obj.fid && - this.lbl == obj.lbl); - }; - ActiveItem.prototype.shiftOverArg = function (i, fid) { - var nargs = []; - for (var k in this.args) { - nargs[k] = this.args[k]; - } - nargs[i] = new PArg(fid); - return new ActiveItem(this.offset, this.dot + 1, this.fun, this.seq, nargs, this.fid, this.lbl); - }; - ActiveItem.prototype.shiftOverTokn = function () { - return new ActiveItem(this.offset, this.dot + 1, this.fun, this.seq, this.args, this.fid, this.lbl); - }; - return ActiveItem; -}()); -function isUndefined(a) { - return typeof a == 'undefined'; -} -if (!String.prototype.startsWith) { - Object.defineProperty(String.prototype, 'startsWith', { - value: function (search, pos) { - pos = !pos || pos < 0 ? 0 : +pos; - return this.substring(pos, pos + search.length) === search; - } - }); -} -if (!String.prototype.includes) { - Object.defineProperty(String.prototype, 'includes', { - value: function (search, start) { - 'use strict'; - if (typeof start !== 'number') { - start = 0; - } - if (start + search.length > this.length) { - return false; - } - else { - return this.indexOf(search, start) !== -1; - } - } - }); -} -//# sourceMappingURL=gflib.js.map \ No newline at end of file diff --git a/src/runtime/typescript/js/gflib.js.map b/src/runtime/typescript/js/gflib.js.map deleted file mode 100644 index fbc04aca3..000000000 --- a/src/runtime/typescript/js/gflib.js.map +++ /dev/null @@ -1 +0,0 @@ -{"version":3,"file":"gflib.js","sourceRoot":"","sources":["../gflib.ts"],"names":[],"mappings":"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"} \ No newline at end of file diff --git a/src/runtime/typescript/tsconfig.json b/src/runtime/typescript/tsconfig.json deleted file mode 100644 index 2b2a77099..000000000 --- a/src/runtime/typescript/tsconfig.json +++ /dev/null @@ -1,12 +0,0 @@ -{ - "compilerOptions": { - "module": "none", - "target": "es3", - "strict": true, - "noImplicitAny": true, - "removeComments": true, - "outDir": "js", - "sourceMap": true - }, - "compileOnSave": true -}