X-Git-Url: http://nitlanguage.org diff --git a/src/parser/xss/prods.xss b/src/parser/xss/prods.xss index 387fa81..9f2b330 100644 --- a/src/parser/xss/prods.xss +++ b/src/parser/xss/prods.xss @@ -1,39 +1,38 @@ -/* This file is part of NIT ( http://www.nitlanguage.org ). - * - * Copyright 2008 Jean Privat - * 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 +$ // 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] + readable var _n_@name: List[@etype] = new List[@etype] $ else $ if @modifier - readable writable var _n_@name: nullable @etype = null + readable var _n_@name: nullable @etype = null $ else - readable writable var _n_@name: @etype + readable var _n_@name: @etype $ end $ end $ end @@ -41,9 +40,9 @@ end $ end class Start -special Prod - readable writable var _n_base: nullable $baseprod - readable writable var _n_eof: EOF + super Prod + readable var _n_base: nullable $baseprod + readable var _n_eof: EOF end $ end template @@ -51,32 +50,15 @@ $ 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")} ( $ 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 ) @@ -146,38 +128,15 @@ $ end foreach $ foreach {elem} $ if @is_list for n in _n_@{name} do - v.visit(n) - end -$ else -$ if @modifier - if _n_@{name} != null then - v.visit(_n_@{name}.as(not null)) - end -$ else - v.visit(_n_@{name}) -$ end -$ end -$ end foreach - end - - redef fun visit_all_reverse(v: Visitor) - do -$ foreach {elem} -$ if @is_list - do - var i = _n_@{name}.length - while i >= 0 do - v.visit(_n_@{name}[i]) - i = i - 1 + v.enter_visit(n) end - end $ else $ if @modifier if _n_@{name} != null then - v.visit(_n_@{name}.as(not null)) + v.enter_visit(_n_@{name}.as(not null)) end $ else - v.visit(_n_@{name}) + v.enter_visit(_n_@{name}) $ end $ end $ end foreach @@ -211,15 +170,9 @@ redef class Start redef fun visit_all(v: Visitor) do if _n_base != null then - v.visit(_n_base.as(not null)) - end - end - - redef fun visit_all_reverse(v: Visitor) - do - if _n_base != null then - v.visit(_n_base.as(not null)) + v.enter_visit(_n_base.as(not null)) end + v.enter_visit(_n_eof) end end $ end template