*** empty log message ***
[m17n/m17n-lib-js.git] / xex.js
diff --git a/xex.js b/xex.js
index 705a99b..81353b2 100644 (file)
--- a/xex.js
+++ b/xex.js
 // Software Foundation, Inc., 51 Franklin Street, Fifth Floor,
 // Boston, MA 02110-1301, USA.
 
+// Please note that the code is not yet matured.
+
 var Xex = {};
 
-(function () {                 // Tracing
+(function () {                 // Logging
   // The logging node containing tracing information.
   var log = null;
   // Number of lines.
@@ -122,32 +124,34 @@ Xex.Error = {
   UncaughtThrow: "uncaught-throw"
 };
 
-Xex.Variable = function (domain, name, desc, val, range)
+Xex.Variable = function (name, desc, val, range)
 {
-  this.domain = domain;
-  this.name = name;
-  this.desc = desc;
+  if (name)
+    this.name = name;
+  if (desc)
+    this.desc = desc;
   this.val = val;
-  this.range = range;
+  if (range)
+    this.range = range;
 }
 
-Xex.Variable.prototype.clone = function ()
-{
-  return new Xex.Variable (this.domain, this.name, this.desc,
-                          this.val, this.range);
-}
-    
-Xex.Variable.prototype.Equals = function (obj)
-{
-  return ((obj instanceof Xex.Variable)
-         && obj.name == this.name);
-}
+Xex.Variable.prototype = {
+  clone: function ()
+  {
+    return new Xex.Variable (this.name, this.desc, this.val, this.range);
+  },
+  equals: function (obj)
+  {
+    return ((obj instanceof Xex.Variable)
+           && obj.name == this.name);
+  },
+  SetValue: function (term)
+  {
+    this.val = term;
+    return term;
+  }
+}  
 
-Xex.Variable.prototype.SetValue = function (term)
-{
-  this.val = term;
-  return term;
-}
 
 Xex.Function = function (name, with_var, min_args, max_args)
 {
@@ -318,7 +322,7 @@ Xex.Domain = function (name, parent, context)
       for (elt in parent.variables)
        {
          var vari = parent.variables[elt];
-         this.variables[elt] = new Xex.Variable (this, vari.name, vari.desc,
+         this.variables[elt] = new Xex.Variable (vari.name, vari.desc,
                                                  vari.val, vari.range);
        }
     }
@@ -440,7 +444,7 @@ Xex.Domain.prototype = {
   },
   Defvar: function (name, desc, val, range)
   {
-    var vari = new Xex.Variable (this, name, desc, val, range);
+    var vari = new Xex.Variable (name, desc, val, range);
     this.variables[name] = vari;
     return vari;
   },
@@ -467,7 +471,7 @@ Xex.Domain.prototype = {
   {
     var vari = this.variables[name];
     if (! vari)
-      vari = this.variables[name] = new Xex.Variable (this, name, null,
+      vari = this.variables[name] = new Xex.Variable (name, null,
                                                      Xex.Zero, null);
     return vari;
   },
@@ -495,13 +499,13 @@ Xex.Term.prototype = {
   IsTrue: function () { return true; },
   Eval: function (domain) { return this.Clone (); },
   Clone: function (domain) { return this; },
-  Equals: function (obj)
+  equals: function (obj)
   {
     return (this.type == obj.type
            && this.val != undefined
            && obj.val == this.val);
   },
-  Matches: function (obj) { return this.Equals (obj); },
+  Matches: function (obj) { return this.equals (obj); },
   toString: function ()
   {
     if (this.val != undefined)
@@ -771,11 +775,11 @@ Xex.Funcall = function (func, vname, args)
     return new Xex.Funcall (this.func, this.vari, this.args);
   }
 
-  proto.Equals = function (obj)
+  proto.equals = function (obj)
   {
     return (obj.type == 'funcall'
            && obj.func == this.func
-           && obj.vari.Equals (this.vari)
+           && obj.vari.equals (this.vari)
            && obj.args.length == this.func.length);
   }
 
@@ -827,7 +831,7 @@ Xex.ErrTerm = function (ename, message, stack)
     return new Xex.ErrTerm (ename, message, false);
   }
 
-  proto.Equals = function (obj)
+  proto.equals = function (obj)
   {
     return (obj.IsError
            && obj.ename == ename && obj.message == message
@@ -900,13 +904,13 @@ Xex.LstTerm = function (list) { this.val = list; };
   proto.IsTrue = function () { return this.val.length > 0; }
   proto.Clone = function () { return new Xex.LstTerm (this.val.slice (0)); }
 
-  proto.Equals = function (obj)
+  proto.equals = function (obj)
   {
     if (obj.type != 'list' || obj.val.length != this.val.length)
       return false;
     var i, len = this.val.length;
     for (i = 0; i < len; i++)
-      if (! this.val[i].Equals (obj.val[i]))
+      if (! this.val[i].equals (obj.val[i]))
        return false;
     return true;
   }
@@ -1089,7 +1093,7 @@ Xex.LstTerm = function (list) { this.val = list; };
   function Feq (domain, vari, args)
   {
     for (var i = 1; i < args.length; i++)
-      if (! args[i - 1].Equals (args[i]))
+      if (! args[i - 1].equals (args[i]))
        return Xex.Zero;
     return Xex.One;
   }