mirror of
https://github.com/GrammaticalFramework/gf-core.git
synced 2026-05-10 11:42:51 -06:00
in gflib.js declare all variables with 'var' because otherwise they are global by default
This commit is contained in:
@@ -104,7 +104,7 @@ Fun.prototype.isEqual = function(obj) {
|
|||||||
if (this.name != obj.name)
|
if (this.name != obj.name)
|
||||||
return false;
|
return false;
|
||||||
|
|
||||||
for (i in this.args) {
|
for (var i in this.args) {
|
||||||
if (!this.args[i].isEqual(obj.args[i]))
|
if (!this.args[i].isEqual(obj.args[i]))
|
||||||
return false;
|
return false;
|
||||||
}
|
}
|
||||||
@@ -426,16 +426,16 @@ function Parser(productions, functions, sequences, startCats, totalCats) {
|
|||||||
this.startCats = startCats;
|
this.startCats = startCats;
|
||||||
this.totalCats = totalCats;
|
this.totalCats = totalCats;
|
||||||
|
|
||||||
for (fid in productions) {
|
for (var fid in productions) {
|
||||||
for (i in productions[fid]) {
|
for (var i in productions[fid]) {
|
||||||
var rule = productions[fid][i];
|
var rule = productions[fid][i];
|
||||||
rule.fun = functions[rule.fun];
|
rule.fun = functions[rule.fun];
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
for (i in functions) {
|
for (var i in functions) {
|
||||||
var fun = functions[i];
|
var fun = functions[i];
|
||||||
for (j in fun.lins) {
|
for (var j in fun.lins) {
|
||||||
fun.lins[j] = sequences[fun.lins[j]];
|
fun.lins[j] = sequences[fun.lins[j]];
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
@@ -443,7 +443,7 @@ function Parser(productions, functions, sequences, startCats, totalCats) {
|
|||||||
Parser.prototype.showRules = function () {
|
Parser.prototype.showRules = function () {
|
||||||
var ruleStr = new Array();
|
var ruleStr = new Array();
|
||||||
ruleStr.push("");
|
ruleStr.push("");
|
||||||
for (i = 0, j = this.rules.length; i < j; i++) {
|
for (var i = 0, j = this.rules.length; i < j; i++) {
|
||||||
ruleStr.push(this.rules[i].show());
|
ruleStr.push(this.rules[i].show());
|
||||||
}
|
}
|
||||||
return ruleStr.join("");
|
return ruleStr.join("");
|
||||||
@@ -456,7 +456,7 @@ Parser.prototype.parseString = function (string, cat) {
|
|||||||
}
|
}
|
||||||
|
|
||||||
var ps = new ParseState(this, cat);
|
var ps = new ParseState(this, cat);
|
||||||
for (i in tokens) {
|
for (var i in tokens) {
|
||||||
if (!ps.next(tokens[i]))
|
if (!ps.next(tokens[i]))
|
||||||
return new Array();
|
return new Array();
|
||||||
}
|
}
|
||||||
@@ -479,7 +479,7 @@ Rule.prototype.isEqual = function (obj) {
|
|||||||
if (this.id != obj.id || this.fun != obj.fun || this.args.length != obj.args.length)
|
if (this.id != obj.id || this.fun != obj.fun || this.args.length != obj.args.length)
|
||||||
return false;
|
return false;
|
||||||
|
|
||||||
for (i in this.args) {
|
for (var i in this.args) {
|
||||||
if (this.args[i] != obj.args[i])
|
if (this.args[i] != obj.args[i])
|
||||||
return false;
|
return false;
|
||||||
}
|
}
|
||||||
@@ -568,7 +568,7 @@ function Trie() {
|
|||||||
}
|
}
|
||||||
Trie.prototype.insertChain = function(keys,obj) {
|
Trie.prototype.insertChain = function(keys,obj) {
|
||||||
var node = this;
|
var node = this;
|
||||||
for (i in keys) {
|
for (var i in keys) {
|
||||||
var nnode = node.items[keys[i]];
|
var nnode = node.items[keys[i]];
|
||||||
if (nnode == null) {
|
if (nnode == null) {
|
||||||
nnode = new Trie();
|
nnode = new Trie();
|
||||||
@@ -580,7 +580,7 @@ Trie.prototype.insertChain = function(keys,obj) {
|
|||||||
}
|
}
|
||||||
Trie.prototype.insertChain1 = function(keys,obj) {
|
Trie.prototype.insertChain1 = function(keys,obj) {
|
||||||
var node = this;
|
var node = this;
|
||||||
for (i in keys) {
|
for (var i in keys) {
|
||||||
var nnode = node.items[keys[i]];
|
var nnode = node.items[keys[i]];
|
||||||
if (nnode == null) {
|
if (nnode == null) {
|
||||||
nnode = new Trie();
|
nnode = new Trie();
|
||||||
@@ -600,7 +600,7 @@ Trie.prototype.isEmpty = function() {
|
|||||||
if (this.value != null)
|
if (this.value != null)
|
||||||
return false;
|
return false;
|
||||||
|
|
||||||
for (i in this.items) {
|
for (var i in this.items) {
|
||||||
return false;
|
return false;
|
||||||
}
|
}
|
||||||
|
|
||||||
@@ -617,12 +617,13 @@ function ParseState(parser, startCat) {
|
|||||||
|
|
||||||
var fids = parser.startCats[startCat];
|
var fids = parser.startCats[startCat];
|
||||||
if (fids != null) {
|
if (fids != null) {
|
||||||
|
var fid;
|
||||||
for (fid = fids.s; fid <= fids.e; fid++) {
|
for (fid = fids.s; fid <= fids.e; fid++) {
|
||||||
var exProds = this.chart.expandForest(fid);
|
var exProds = this.chart.expandForest(fid);
|
||||||
for (j in exProds) {
|
for (var j in exProds) {
|
||||||
var rule = exProds[j];
|
var rule = exProds[j];
|
||||||
var fun = rule.fun;
|
var fun = rule.fun;
|
||||||
for (lbl in fun.lins) {
|
for (var lbl in fun.lins) {
|
||||||
items.push(new ActiveItem(0,0,rule.fun,fun.lins[lbl],rule.args,fid,lbl));
|
items.push(new ActiveItem(0,0,rule.fun,fun.lins[lbl],rule.args,fid,lbl));
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
@@ -640,6 +641,7 @@ ParseState.prototype.next = function (token) {
|
|||||||
, function (tokens, item) {
|
, function (tokens, item) {
|
||||||
if (tokens[0] == token) {
|
if (tokens[0] == token) {
|
||||||
var tokens1 = new Array();
|
var tokens1 = new Array();
|
||||||
|
var i;
|
||||||
for (i = 1; i < tokens.length; i++) {
|
for (i = 1; i < tokens.length; i++) {
|
||||||
tokens1[i-1] = tokens[i];
|
tokens1[i-1] = tokens[i];
|
||||||
}
|
}
|
||||||
@@ -668,19 +670,19 @@ ParseState.prototype.extractTrees = function() {
|
|||||||
var trees = new Array();
|
var trees = new Array();
|
||||||
|
|
||||||
var rules = forest[fid];
|
var rules = forest[fid];
|
||||||
for (j in rules) {
|
for (var j in rules) {
|
||||||
var rule = rules[j];
|
var rule = rules[j];
|
||||||
|
|
||||||
var arg_ix = new Array();
|
var arg_ix = new Array();
|
||||||
var arg_ts = new Array();
|
var arg_ts = new Array();
|
||||||
for (k in rule.args) {
|
for (var k in rule.args) {
|
||||||
arg_ix[k] = 0;
|
arg_ix[k] = 0;
|
||||||
arg_ts[k] = go(rule.args[k]);
|
arg_ts[k] = go(rule.args[k]);
|
||||||
}
|
}
|
||||||
|
|
||||||
while (true) {
|
while (true) {
|
||||||
var t = new Fun(rule.fun.name);
|
var t = new Fun(rule.fun.name);
|
||||||
for (k in arg_ts) {
|
for (var k in arg_ts) {
|
||||||
t.setArg(k,arg_ts[k][arg_ix[k]]);
|
t.setArg(k,arg_ts[k][arg_ix[k]]);
|
||||||
}
|
}
|
||||||
trees.push(t);
|
trees.push(t);
|
||||||
@@ -708,22 +710,23 @@ ParseState.prototype.extractTrees = function() {
|
|||||||
var trees = new Array();
|
var trees = new Array();
|
||||||
var fids = this.parser.startCats[this.startCat];
|
var fids = this.parser.startCats[this.startCat];
|
||||||
if (fids != null) {
|
if (fids != null) {
|
||||||
|
var fid0;
|
||||||
for (fid0 = fids.s; fid0 <= fids.e; fid0++) {
|
for (fid0 = fids.s; fid0 <= fids.e; fid0++) {
|
||||||
|
|
||||||
var labels = new Object();
|
var labels = new Object();
|
||||||
var rules = this.chart.expandForest(fid0);
|
var rules = this.chart.expandForest(fid0);
|
||||||
for (i in rules) {
|
for (var i in rules) {
|
||||||
for (lbl in rules[i].fun.lins) {
|
for (var lbl in rules[i].fun.lins) {
|
||||||
labels[lbl] = true;
|
labels[lbl] = true;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
for (lbl in labels) {
|
for (var lbl in labels) {
|
||||||
var fid = this.chart.lookupPC(fid0,lbl,0);
|
var fid = this.chart.lookupPC(fid0,lbl,0);
|
||||||
var arg_ts = go(fid);
|
var arg_ts = go(fid);
|
||||||
for (var i in arg_ts) {
|
for (var i in arg_ts) {
|
||||||
var isMember = false;
|
var isMember = false;
|
||||||
for (j in trees) {
|
for (var j in trees) {
|
||||||
if (arg_ts[i].isEqual(trees[j])) {
|
if (arg_ts[i].isEqual(trees[j])) {
|
||||||
isMember = true;
|
isMember = true;
|
||||||
break;
|
break;
|
||||||
@@ -754,14 +757,14 @@ ParseState.prototype.process = function (agenda,callback) {
|
|||||||
var items = this.chart.lookupAC(fid,label);
|
var items = this.chart.lookupAC(fid,label);
|
||||||
if (items == null) {
|
if (items == null) {
|
||||||
var rules = this.chart.expandForest(fid);
|
var rules = this.chart.expandForest(fid);
|
||||||
for (j in rules) {
|
for (var j in rules) {
|
||||||
var rule = rules[j];
|
var rule = rules[j];
|
||||||
agenda.push(new ActiveItem(this.chart.offset,0,rule.fun,rule.fun.lins[label],rule.args,fid,label));
|
agenda.push(new ActiveItem(this.chart.offset,0,rule.fun,rule.fun.lins[label],rule.args,fid,label));
|
||||||
}
|
}
|
||||||
this.chart.insertAC(fid,label,[item]);
|
this.chart.insertAC(fid,label,[item]);
|
||||||
} else {
|
} else {
|
||||||
var isMember = false;
|
var isMember = false;
|
||||||
for (j in items) {
|
for (var j in items) {
|
||||||
if (items[j].isEqual(item)) {
|
if (items[j].isEqual(item)) {
|
||||||
isMember = true;
|
isMember = true;
|
||||||
break;
|
break;
|
||||||
@@ -782,7 +785,7 @@ ParseState.prototype.process = function (agenda,callback) {
|
|||||||
break;
|
break;
|
||||||
case "KP": var pitem = item.shiftOverTokn();
|
case "KP": var pitem = item.shiftOverTokn();
|
||||||
callback(sym.tokens, pitem);
|
callback(sym.tokens, pitem);
|
||||||
for (i in sym.alts) {
|
for (var i in sym.alts) {
|
||||||
var alt = sym.alts[i];
|
var alt = sym.alts[i];
|
||||||
callback(alt.tokens, pitem);
|
callback(alt.tokens, pitem);
|
||||||
}
|
}
|
||||||
@@ -796,7 +799,7 @@ ParseState.prototype.process = function (agenda,callback) {
|
|||||||
|
|
||||||
var items = this.chart.lookupACo(item.offset,item.fid,item.lbl);
|
var items = this.chart.lookupACo(item.offset,item.fid,item.lbl);
|
||||||
if (items != null) {
|
if (items != null) {
|
||||||
for (j in items) {
|
for (var j in items) {
|
||||||
var pitem = items[j];
|
var pitem = items[j];
|
||||||
var i = pitem.seq[pitem.dot].i;
|
var i = pitem.seq[pitem.dot].i;
|
||||||
agenda.push(pitem.shiftOverArg(i,fid));
|
agenda.push(pitem.shiftOverArg(i,fid));
|
||||||
@@ -808,7 +811,7 @@ ParseState.prototype.process = function (agenda,callback) {
|
|||||||
} else {
|
} else {
|
||||||
var labels = this.chart.labelsAC(fid);
|
var labels = this.chart.labelsAC(fid);
|
||||||
if (labels != null) {
|
if (labels != null) {
|
||||||
for (lbl in labels) {
|
for (var lbl in labels) {
|
||||||
agenda.push(new ActiveItem(this.chart.offset,0,item.fun,item.fun.lins[lbl],item.args,fid,lbl));
|
agenda.push(new ActiveItem(this.chart.offset,0,item.fun,item.fun.lins[lbl],item.args,fid,lbl));
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
@@ -817,7 +820,7 @@ ParseState.prototype.process = function (agenda,callback) {
|
|||||||
var rule = new Rule(item.fun,item.args);
|
var rule = new Rule(item.fun,item.args);
|
||||||
|
|
||||||
var isMember = false;
|
var isMember = false;
|
||||||
for (j in rules) {
|
for (var j in rules) {
|
||||||
if (rules[j].isEqual(rule))
|
if (rules[j].isEqual(rule))
|
||||||
isMember = true;
|
isMember = true;
|
||||||
}
|
}
|
||||||
@@ -838,7 +841,7 @@ function Chart(parser) {
|
|||||||
this.nextId = parser.totalCats;
|
this.nextId = parser.totalCats;
|
||||||
this.offset = 0;
|
this.offset = 0;
|
||||||
|
|
||||||
for (fid in parser.productions) {
|
for (var fid in parser.productions) {
|
||||||
this.forest[fid] = parser.productions[fid];
|
this.forest[fid] = parser.productions[fid];
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
@@ -893,7 +896,7 @@ Chart.prototype.expandForest = function (fid) {
|
|||||||
var forest = this.forest;
|
var forest = this.forest;
|
||||||
|
|
||||||
var go = function (rules0) {
|
var go = function (rules0) {
|
||||||
for (i in rules0) {
|
for (var i in rules0) {
|
||||||
var rule = rules0[i];
|
var rule = rules0[i];
|
||||||
switch (rule.id) {
|
switch (rule.id) {
|
||||||
case "Rule": rules.push(rule); break;
|
case "Rule": rules.push(rule); break;
|
||||||
@@ -926,7 +929,7 @@ ActiveItem.prototype.isEqual = function (obj) {
|
|||||||
}
|
}
|
||||||
ActiveItem.prototype.shiftOverArg = function (i,fid) {
|
ActiveItem.prototype.shiftOverArg = function (i,fid) {
|
||||||
var nargs = new Array();
|
var nargs = new Array();
|
||||||
for (k in this.args) {
|
for (var k in this.args) {
|
||||||
nargs[k] = this.args[k];
|
nargs[k] = this.args[k];
|
||||||
}
|
}
|
||||||
nargs[i] = fid;
|
nargs[i] = fid;
|
||||||
|
|||||||
Reference in New Issue
Block a user