/* 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 special Token end $ end $ end class EOF special Token private init noinit do end end class PError special EOF private init noinit do end end $ end template $ template make_tokens() redef class Token readable writable var _text: String readable var _filename: String readable var _line: Int readable var _pos: Int 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, fname: String, line: Int, pos: Int) do _text = text $ else init init_tk(fname: String, line: Int, pos: Int) do _text = once "${sablecc:string2escaped_unicode(@text)}" $ end _filename = fname _line = line _pos = pos end end $ end if $ end foreach redef class EOF redef fun parser_index: Int do return ${tokens/eof/@parser_index} end init(fname: String, line: Int, pos: Int) do _filename = fname _text = "" _line = line _pos = pos end end redef class PError readable writable var _message: String init init_error(fname: String, line: Int, pos: Int, message: String) do init(fname, line, pos) _message = message end end $ end template