*** empty log message ***
[m17n/m17n-lib-cs.git] / XmlExpr.cs
index 4646dec..2b4481d 100644 (file)
@@ -633,6 +633,7 @@ namespace System.Xml.Expression
 
       public Domain (Domain parent, object context)
       {
+       termtypes = new Dictionary<Symbol, TermType> (parent.termtypes);
        functions = new Dictionary<Symbol, Function> (parent.functions);
        variables = new Dictionary<Symbol, Variable> (parent.variables);
        this.context = context;
@@ -693,9 +694,9 @@ namespace System.Xml.Expression
          }
       }
 
-      public void DefType (Symbol name, NewObject new_object)
+      public void DefTerm (Symbol name, TermParser parser)
       {
-       termtypes[name] = new TermType (name, new_object);
+       termtypes[name] = new TermType (name, parser);
       }
 
       public void DefSubr (Builtin builtin, string str, bool setvar,
@@ -992,7 +993,7 @@ namespace System.Xml.Expression
 
     static Xexpression ()
     {
-      basic.DefType ("funcall", Funcall.New);
+      basic.DefTerm ("funcall", Funcall.parser);
 
       basic.DefSubr (Fset, "set", true, 1, 1, "=");
       basic.DefSubr (Fnot, "not", false, 1, 1, "!");
@@ -1539,17 +1540,17 @@ namespace System.Xml.Expression
       return (args.Length == 1 ? Zero : args[1]);
     }
 
-    public delegate TermValue NewObject (Domain domain, XmlNode node);
+    public delegate TermValue TermParser (Domain domain, XmlNode node);
 
     public class TermType
     {
       public readonly Symbol type;
-      internal readonly NewObject New;
+      internal readonly TermParser parser;
 
-      public TermType (Symbol type, NewObject new_object)
+      public TermType (Symbol type, TermParser parser)
       {
        this.type = type;
-       New = new_object;
+       this.parser = parser;
       }
     }
 
@@ -1591,7 +1592,7 @@ namespace System.Xml.Expression
            vari = domain.GetVar (vname, true);
        }
 
-      internal static TermValue New (Domain domain, XmlNode node)
+      internal static TermValue parser (Domain domain, XmlNode node)
        {
          Symbol fname = node.Name;
          Symbol vname = Nnull;
@@ -1684,9 +1685,9 @@ namespace System.Xml.Expression
                  TermType term_type;
 
                  if (domain.termtypes.TryGetValue (name, out term_type))
-                   objval = term_type.New (domain, node);
+                   objval = term_type.parser (domain, node);
                  else
-                   objval = Funcall.New (domain, node);
+                   objval = Funcall.parser (domain, node);
                }
            }
        }