Acceso a clase
[PL2.git] / Pila_Ambitos.java
1
2 public class Pila_Ambitos extends Pila{
3         public Pila_Ambitos(){
4                 super();
5         }
6         public void apilar_ambito(Ambito a){
7                 apilar(a);
8         }
9         public Ambito desapilar_ambito(){
10                 return (Ambito)desapilar();
11         }
12         public Ambito ambito_actual(){
13                 return (Ambito)cima();
14         }
15         //busca el simbolo s globalmente, primero en el ambito actual,
16         //si no lo encuentra en el contenedor, y asi hasta el ambito global
17         public Simbolo buscar_simbolo(String s){
18                 Ambito act = ambito_actual();
19                 return buscar_simbolo(act,s);
20         }
21         //funcion auxiliar que implementa la recursion para buscar
22         //en el contenedor del ambito actual
23         public Simbolo buscar_simbolo(Ambito act, String s){
24                 Simbolo sim = act.getDeclaracion(s);
25                 if(sim == null){
26                         Ambito cont = act.getContenedor();
27                         if (cont != null)
28                                 return buscar_simbolo(cont,s);
29                         else return null;
30                 }else{
31                         return sim;
32                 }
33         }
34 }