/*
 * Copyright (c) 2003, 2005, Oracle and/or its affiliates. All rights reserved.
 * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
 *
 * This code is free software; you can redistribute it and/or modify it
 * under the terms of the GNU General Public License version 2 only, as
 * published by the Free Software Foundation.  Oracle designates this
 * particular file as subject to the "Classpath" exception as provided
 * by Oracle in the LICENSE file that accompanied this code.
 *
 * This code is distributed in the hope that it will be useful, but WITHOUT
 * ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or
 * FITNESS FOR A PARTICULAR PURPOSE.  See the GNU General Public License
 * version 2 for more details (a copy is included in the LICENSE file that
 * accompanied this code).
 *
 * You should have received a copy of the GNU General Public License version
 * 2 along with this work; if not, write to the Free Software Foundation,
 * Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA.
 *
 * Please contact Oracle, 500 Oracle Parkway, Redwood Shores, CA 94065 USA
 * or visit www.oracle.com if you need additional information or have any
 * questions.
 */

package com.sun.java_cup.internal.runtime;

Defines the Symbol class, which is used to represent all terminals and nonterminals while parsing. The lexer should pass CUP Symbols and CUP returns a Symbol.
Author: Frank Flannery
/** * Defines the Symbol class, which is used to represent all terminals * and nonterminals while parsing. The lexer should pass CUP Symbols * and CUP returns a Symbol. * * @author Frank Flannery */
/* **************************************************************** Class Symbol what the parser expects to receive from the lexer. the token is identified as follows: sym: the symbol type parse_state: the parse state. value: is the lexical value of type Object left : is the left position in the original input file right: is the right position in the original input file ******************************************************************/ public class Symbol {
Constructor for l,r values
/******************************* Constructor for l,r values *******************************/
public Symbol(int id, int l, int r, Object o) { this(id); left = l; right = r; value = o; }
Constructor for no l,r values
/******************************* Constructor for no l,r values ********************************/
public Symbol(int id, Object o) { this(id); left = -1; right = -1; value = o; }
Constructor for no value
/***************************** Constructor for no value ***************************/
public Symbol(int sym_num, int l, int r) { sym = sym_num; left = l; right = r; value = null; }
Constructor for no value or l,r
/*********************************** Constructor for no value or l,r ***********************************/
public Symbol(int sym_num) { this(sym_num, -1); left = -1; right = -1; value = null; }
Constructor to give a start state
/*********************************** Constructor to give a start state ***********************************/
public Symbol(int sym_num, int state) { sym = sym_num; parse_state = state; } /*. . . . . . . . . . . . . . . . . . . . . . . . . . . . . .*/
The symbol number of the terminal or non terminal being represented
/** The symbol number of the terminal or non terminal being represented */
public int sym; /*. . . . . . . . . . . . . . . . . . . . . . . . . . . . . .*/
The parse state to be recorded on the parse stack with this symbol. This field is for the convenience of the parser and shouldn't be modified except by the parser.
/** The parse state to be recorded on the parse stack with this symbol. * This field is for the convenience of the parser and shouldn't be * modified except by the parser. */
public int parse_state;
This allows us to catch some errors caused by scanners recycling symbols. For the use of the parser only. [CSA, 23-Jul-1999]
/** This allows us to catch some errors caused by scanners recycling * symbols. For the use of the parser only. [CSA, 23-Jul-1999] */
boolean used_by_parser = false;
The data passed to parser
/******************************* The data passed to parser *******************************/
public int left, right; public Object value;
Printing this token out. (Override for pretty-print).
/***************************** Printing this token out. (Override for pretty-print). ****************************/
public String toString() { return "#"+sym; } }