1*0c56280aSSorin Basca /* 2*0c56280aSSorin Basca * Licensed to the Apache Software Foundation (ASF) under one or more 3*0c56280aSSorin Basca * contributor license agreements. See the NOTICE file distributed with 4*0c56280aSSorin Basca * this work for additional information regarding copyright ownership. 5*0c56280aSSorin Basca * The ASF licenses this file to You under the Apache License, Version 2.0 6*0c56280aSSorin Basca * (the "License"); you may not use this file except in compliance with 7*0c56280aSSorin Basca * the License. You may obtain a copy of the License at 8*0c56280aSSorin Basca * 9*0c56280aSSorin Basca * http://www.apache.org/licenses/LICENSE-2.0 10*0c56280aSSorin Basca * 11*0c56280aSSorin Basca * Unless required by applicable law or agreed to in writing, software 12*0c56280aSSorin Basca * distributed under the License is distributed on an "AS IS" BASIS, 13*0c56280aSSorin Basca * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. 14*0c56280aSSorin Basca * See the License for the specific language governing permissions and 15*0c56280aSSorin Basca * limitations under the License. 16*0c56280aSSorin Basca * 17*0c56280aSSorin Basca */ 18*0c56280aSSorin Basca package Mini; 19*0c56280aSSorin Basca import org.apache.bcel.generic.LocalVariableGen; 20*0c56280aSSorin Basca 21*0c56280aSSorin Basca /** 22*0c56280aSSorin Basca * Represents a variable declared in a LET expression or a FUN declaration. 23*0c56280aSSorin Basca * 24*0c56280aSSorin Basca * @version $Id$ 25*0c56280aSSorin Basca */ 26*0c56280aSSorin Basca public class Variable implements EnvEntry { 27*0c56280aSSorin Basca private ASTIdent name; // Reference to the original declaration 28*0c56280aSSorin Basca private boolean reserved; // Is a key word? 29*0c56280aSSorin Basca 30*0c56280aSSorin Basca private int line, column; // Extracted from name.getToken() 31*0c56280aSSorin Basca private String var_name; // Short for name.getName() 32*0c56280aSSorin Basca private LocalVariableGen local_var; // local var associated with this variable 33*0c56280aSSorin Basca Variable(ASTIdent name)34*0c56280aSSorin Basca public Variable(ASTIdent name) { 35*0c56280aSSorin Basca this(name, false); 36*0c56280aSSorin Basca } 37*0c56280aSSorin Basca Variable(ASTIdent name, boolean reserved)38*0c56280aSSorin Basca public Variable(ASTIdent name, boolean reserved) { 39*0c56280aSSorin Basca this.name = name; 40*0c56280aSSorin Basca this.reserved = reserved; 41*0c56280aSSorin Basca 42*0c56280aSSorin Basca var_name = name.getName(); 43*0c56280aSSorin Basca line = name.getLine(); 44*0c56280aSSorin Basca column = name.getColumn(); 45*0c56280aSSorin Basca } 46*0c56280aSSorin Basca 47*0c56280aSSorin Basca @Override toString()48*0c56280aSSorin Basca public String toString() { 49*0c56280aSSorin Basca if(!reserved) { 50*0c56280aSSorin Basca return var_name + " declared at line " + line + ", column " + column; 51*0c56280aSSorin Basca } else { 52*0c56280aSSorin Basca return var_name + " <reserved key word>"; 53*0c56280aSSorin Basca } 54*0c56280aSSorin Basca } 55*0c56280aSSorin Basca getName()56*0c56280aSSorin Basca public ASTIdent getName() { return name; } getHashKey()57*0c56280aSSorin Basca public String getHashKey() { return var_name; } getLine()58*0c56280aSSorin Basca public int getLine() { return line; } getColumn()59*0c56280aSSorin Basca public int getColumn() { return column; } getType()60*0c56280aSSorin Basca public int getType() { return name.getType(); } 61*0c56280aSSorin Basca setLocalVariable(LocalVariableGen local_var)62*0c56280aSSorin Basca void setLocalVariable(LocalVariableGen local_var) { 63*0c56280aSSorin Basca this.local_var = local_var; 64*0c56280aSSorin Basca } getLocalVariable()65*0c56280aSSorin Basca LocalVariableGen getLocalVariable() { return local_var; } 66*0c56280aSSorin Basca } 67*0c56280aSSorin Basca 68