$ // 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_tokens() $ foreach {//token} $ if {@parser_index} class @ename super Token end $ end $ end class EOF super Token private init noinit do end end class PError super EOF private init noinit do end end $ end template $ template make_tokens() redef class Token readable var _text: String fun parser_index: Int is abstract redef fun to_s: String do return "'{_text}'" end end $ foreach {//token} $ if {@parser_index} redef class @ename redef fun parser_index: Int do return @parser_index end $ if {not(@text)} init init_tk(text: String, loc: Location) do _text = text $ else init init_tk(loc: Location) do _text = once "${sablecc:string2escaped_unicode(@text)}" $ end _location = loc end end $ end if $ end foreach redef class EOF redef fun parser_index: Int do return ${tokens/eof/@parser_index} end init(loc: Location) do _text = "" _location = loc end end redef class PError readable var _message: String init init_error(message: String, loc: Location) do init(loc) _message = message end end $ end template