1
0
forked from GitHub/gf-core

in the javascript version of extractTrees filter out the duplicated parse trees

This commit is contained in:
krasimir
2010-01-04 12:20:53 +00:00
parent 36de4d8c54
commit 819e6e6757

View File

@@ -100,6 +100,17 @@ Fun.prototype.isComplete = function() {
Fun.prototype.isLiteral = function() {
return (/^[\"\d]/).test(this.name);
} ;
Fun.prototype.isEqual = function(obj) {
if (this.name != obj.name)
return false;
for (i in this.args) {
if (!this.args[i].isEqual(obj.args[i]))
return false;
}
return true;
}
/* Concrete syntax terms */
@@ -710,8 +721,17 @@ ParseState.prototype.extractTrees = function() {
for (lbl in labels) {
var fid = this.chart.lookupPC(fid0,lbl,0);
var arg_ts = go(fid);
for (i in arg_ts) {
trees.push(arg_ts[i]);
for (var i in arg_ts) {
var isMember = false;
for (j in trees) {
if (arg_ts[i].isEqual(trees[j])) {
isMember = true;
break;
}
}
if (!isMember)
trees.push(arg_ts[i]);
}
}
}