parser: remove generated old-style accesors.
[nit.git] / src / parser / xss / prods.xss
index c09c801..1d04163 100644 (file)
@@ -19,20 +19,24 @@ $ template make_abs_prods()
 $ set baseprod = {//prod/@ename}
 
 $ foreach {//prod}
-class @ename special Prod end
+class @ename super Prod end
 $ end
 
 $ foreach {//alt}
 class @ename
-special ${../@ename}
+       super ${../@ename}
 $ foreach {elem}
 $   if @is_list
-    readable writable var _n_@name: List[@etype] = new List[@etype]
+       var n_@name: List[@etype] = new List[@etype]
 $   else
 $   if @modifier
-    readable writable var _n_@name: nullable @etype = null
+       var _n_@name: nullable @etype = null
+       fun n_@name: nullable @etype do return _n_@name
+       fun n_@name=(n_@name: nullable @etype) do _n_@name = n_@name
 $   else
-    readable writable var _n_@name: @etype
+       var _n_@name: @etype = null
+       fun n_@name: @etype do return _n_@name
+       fun n_@name=(n_@name: @etype) do _n_@name = n_@name
 $   end
 $   end
 $ end
@@ -40,9 +44,20 @@ end
 $ end
 
 class Start
-special Prod
-    readable writable var _n_base: nullable $baseprod
-    readable writable var _n_eof: EOF
+       super Prod
+       var _n_base: nullable $baseprod
+       fun n_base: nullable $baseprod do return _n_base
+       fun n_base=(n_base: nullable $baseprod_ do _n_base = n_base
+       var _n_eof: EOF
+       fun n_eof: EOF do return _n_eof
+       fun n_eof=(n_eof: EOF) do _n_eof = n_eof
+       init(
+               n_base: nullable $baseprod,
+               n_eof: EOF)
+       do
+               _n_base = n_base
+               _n_eof = n_eof
+       end
 end
 $ end template
 
@@ -50,149 +65,83 @@ $ template make_prods()
 $ set baseprod = {//prod/@ename}
 $ foreach {//alt}
 redef class @ename
-$ foreach {elem}
-$   if @is_list
-$   else
-    redef fun n_@name=(n)
-    do
-        _n_@name = n
-$   if @modifier
-        if n != null then
-           n.parent = self
-        end
-$   else
-       n.parent = self
-$   end
-    end
-$   end
-$ end
-
-    private init empty_init do end
-
 $ if {count(elem)!=0}
-    init init_${translate(@ename,"ABCDEFGHIJKLMNOPQRSTUVWXYZ","abcdefghijklmnopqrstuvwxyz")} (
+       init init_${translate(@ename,"ABCDEFGHIJKLMNOPQRSTUVWXYZ","abcdefghijklmnopqrstuvwxyz")} (
 $ foreach {elem}
 $   if {@is_list}
-            n_@{name}: Collection[Object][-sep ','-] # Should be Collection[@etype]
+               n_@{name}: Collection[Object][-sep ','-] # Should be Collection[@etype]
 $   else
-            n_@{name}: nullable @etype[-sep ','-]
+               n_@{name}: nullable @etype[-sep ','-]
 $   end
 $ end
-    )
+       )
 $ else
-    init init_${translate(@ename,"ABCDEFGHIJKLMNOPQRSTUVWXYZ","abcdefghijklmnopqrstuvwxyz")}
+       init init_${translate(@ename,"ABCDEFGHIJKLMNOPQRSTUVWXYZ","abcdefghijklmnopqrstuvwxyz")}
 $ end
-    do
-        empty_init
+       do
 $ foreach {elem}
 $   if @is_list
-       for n in n_@{name} do
-               assert n isa @{etype}
-               _n_@{name}.add(n)
-               n.parent = self
-       end
+               self.n_@{name}.unsafe_add_all(n_@{name})
 $   else
 $   if {@modifier}
-        _n_@name = n_@{name}
-       if n_@{name} != null then
-               n_@{name}.parent = self
-       end
+               _n_@name = n_@{name}
+               if n_@{name} != null then n_@{name}.parent = self
 $   else
-        _n_@name = n_@{name}.as(not null)
-       n_@{name}.parent = self
+               _n_@name = n_@{name}.as(not null)
+               n_@{name}.parent = self
 $   end
 $   end
 $ end
-    end
+       end
 
-    redef fun replace_child(old_child: PNode, new_child: nullable PNode)
-    do
+       redef fun replace_child(old_child: PNode, new_child: nullable PNode)
+       do
 $ foreach {elem}
 $   if @is_list
-        for i in [0.._n_@{name}.length[ do
-            if _n_@{name}[i] == old_child then
-                if new_child != null then
-                   assert new_child isa @etype
-                    _n_@{name}[i] = new_child
-                    new_child.parent = self
-                else
-                    _n_@{name}.remove_at(i)
-                end
-                return
-            end
-        end
+               if n_@{name}.replace_child(old_child, new_child) then return
 $   else
-        if _n_@{name} == old_child then
-            if new_child != null then
-                new_child.parent = self
-               assert new_child isa @etype
-                _n_@{name} = new_child
-           else
+               if _n_@{name} == old_child then
 $   if @modifier
-               _n_@{name} = null
+                       n_@{name} = new_child.as(nullable @etype)
 $   else
-               abort
+                       n_@{name} = new_child.as(@etype)
 $   end
-            end
-            return
-       end
+                       return
+               end
 $   end
 $ end foreach
-    end
+       end
 
-    redef fun visit_all(v: Visitor)
-    do
 $   foreach {elem}
 $     if @is_list
-            for n in _n_@{name} do
-                v.enter_visit(n)
-           end
 $     else
+       redef fun n_@{name}=(node)
+       do
+               _n_@{name} = node
 $       if @modifier
-        if _n_@{name} != null then
-            v.enter_visit(_n_@{name}.as(not null))
-        end
+               if node != null then node.parent = self
 $       else
-        v.enter_visit(_n_@{name})
+               node.parent = self
 $       end
+       end
 $     end
 $   end foreach
-    end
 
-    redef fun visit_all_reverse(v: Visitor)
-    do
+
+       redef fun visit_all(v: Visitor)
+       do
 $   foreach {elem}
 $     if @is_list
-       do
-           var i = _n_@{name}.length
-            while i >= 0 do
-                v.enter_visit(_n_@{name}[i])
-               i = i - 1
-           end
-       end
+               n_@{name}.visit_all(v)
 $     else
-$       if @modifier
-        if _n_@{name} != null then
-            v.enter_visit(_n_@{name}.as(not null))
-        end
-$       else
-        v.enter_visit(_n_@{name})
-$       end
+               v.enter_visit(_n_@{name})
 $     end
 $   end foreach
-    end
+       end
 end
 $ end foreach
 
 redef class Start
-    init(
-        n_base: nullable $baseprod,
-        n_eof: EOF)
-    do
-        _n_base = n_base
-        _n_eof = n_eof
-    end
-
     redef fun replace_child(old_child: PNode, new_child: nullable PNode)
     do
         if _n_base == old_child then
@@ -214,13 +163,5 @@ redef class Start
         end
        v.enter_visit(_n_eof)
     end
-
-    redef fun visit_all_reverse(v: Visitor)
-    do
-       v.enter_visit(_n_eof)
-        if _n_base != null then
-            v.enter_visit(_n_base.as(not null))
-        end
-    end
 end
 $ end template