X-Git-Url: http://nitlanguage.org diff --git a/src/parser/xss/nodes.xss b/src/parser/xss/nodes.xss index 60a1ec9..a62df55 100644 --- a/src/parser/xss/nodes.xss +++ b/src/parser/xss/nodes.xss @@ -1,36 +1,39 @@ -/* 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_nodes() # Root of the AST hierarchy abstract class PNode - readable var _location: nullable Location + var _location: nullable Location + + # Location is set during AST building. Once built, location cannon be null + # However, manual instanciated nodes may need mode care + fun location: Location do return _location.as(not null) end # Ancestor of all tokens abstract class Token -special PNode + super PNode end # Ancestor of all productions abstract class Prod -special PNode - fun location=(loc: nullable Location) do _location = loc + super PNode + fun location=(loc: Location) do _location = loc end $ end template @@ -59,46 +62,18 @@ redef class PNode # Visit all nodes in order. # Thus, call "v.visit(e)" for each node e fun visit_all(v: Visitor) is abstract - - # Visit all nodes in reverse order. - # Thus, call "v.visit(e)" for each node e starting from the last child - fun visit_all_reverse(v: Visitor) is abstract - - # Give a human readable location of the node. - fun locate: String - do - if location == null then - return "????" - end - return location.to_s - end - - # Debug method: output a message prefixed with the location. - fun printl(str: String) - do - print("{locate}: {str}\n") - end end redef class Token redef fun visit_all(v: Visitor) do end - redef fun visit_all_reverse(v: Visitor) do end redef fun replace_child(old_child: PNode, new_child: nullable PNode) do end end redef class Prod - # The first token of the production node - readable writable var _first_token: nullable Token - - # The last token of the production node - readable writable var _last_token: nullable Token - redef fun replace_with(n: PNode) do super assert n isa Prod - n.first_token = first_token - n.last_token = last_token n.location = location end end