parser: remove generated old-style accesors.
[nit.git] / src / parser / xss / prods.xss
index dd0b67d..1d04163 100644 (file)
@@ -1,39 +1,42 @@
-/* This file is part of NIT ( http://www.nitlanguage.org ).
- *
- * Copyright 2008 Jean Privat <jean@pryen.org>
- * Based on algorithms developped for ( http://www.sablecc.org/ ).
- *
- * Licensed under the Apache License, Version 2.0 (the "License");
- * you may not use this file except in compliance with the License.
- * You may obtain a copy of the License at
- *
- *     http://www.apache.org/licenses/LICENSE-2.0
- *
- * Unless required by applicable law or agreed to in writing, software
- * distributed under the License is distributed on an "AS IS" BASIS,
- * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
- * See the License for the specific language governing permissions and
- * limitations under the License.
- */
+$ // This file is part of NIT ( http://www.nitlanguage.org ).
+$ //
+$ // Copyright 2008 Jean Privat <jean@pryen.org>
+$ // Based on algorithms developped for ( http://www.sablecc.org/ ).
+$ //
+$ // Licensed under the Apache License, Version 2.0 (the "License");
+$ // you may not use this file except in compliance with the License.
+$ // You may obtain a copy of the License at
+$ //
+$ //     http://www.apache.org/licenses/LICENSE-2.0
+$ //
+$ // Unless required by applicable law or agreed to in writing, software
+$ // distributed under the License is distributed on an "AS IS" BASIS,
+$ // WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+$ // See the License for the specific language governing permissions and
+$ // limitations under the License.
 
 $ 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
@@ -41,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
 
@@ -51,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
@@ -213,13 +161,7 @@ redef class Start
         if _n_base != null then
             v.enter_visit(_n_base.as(not null))
         end
-    end
-
-    redef fun visit_all_reverse(v: Visitor)
-    do
-        if _n_base != null then
-            v.enter_visit(_n_base.as(not null))
-        end
+       v.enter_visit(_n_eof)
     end
 end
 $ end template