/* 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 end class PError special EOF end $ end template $ template make_tokens() redef class Token readable writable attr _text: String readable attr _filename: String readable attr _line: Int readable attr _pos: Int meth parser_index: Int is abstract redef meth to_s: String do return "'{_text}'" end end $ foreach {//token} $ if {@parser_index} redef class @ename redef meth parser_index: Int do return @parser_index end $ if {not(@text)} init(text: String, fname: String, line: Int, pos: Int) do _text = text $ else init(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 meth 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 attr _message: String init init_error(fname: String, line: Int, pos: Int, message: String) do init(fname, line, pos) _message = message end end $ end template