Crear ast
Enviado por karlo • 11 de Diciembre de 2018 • 847 Palabras (4 Páginas) • 289 Visitas
...
NODO::=punto id:a
{:
Nodo padre = new Nodo("ATRIBUTO",aleft,aright);
Nodo hijo =new Nodo(a,aleft,aright);
padre.hijos.add(hijo);
RESULT = padre;
:}
|punto id:a apar cpar
{:
Nodo padre =new Nodo("METODOO1",aleft,aright);
Nodo hijo =new Nodo(a,aleft,aright);
padre.hijos.add(hijo);
RESULT = padre;
:}
|punto id:a apar PARAMETROS:b cpar
{:
Nodo padre =new Nodo("METODOO2",aleft,aright);
Nodo hijo = new Nodo(a,aleft,aright);
padre.hijos.add(hijo);
padre.hijos.add(b);
RESULT = padre;
:};
//----------------------------------en el interprete
public void ejecutarOBJECTO(Nodo nodo){
Metodos m;
InterpreteGraphik clase;
ArrayList parametros=new ArrayList();
String instancia=nodo.hijos.get(0).hijos.get(0).valor;
String objetoinstancia=nodo.hijos.get(0).hijos.get(1).valor;
clase=gurdandoArbol.interG.get(instancia);
clase.aumentarAmbito();
if(nodo.hijos.get(0).valor.equals("NMETODO")){
if(clase.getMetodo(objetoinstancia,parametros)!=null){
m=clase.getMetodo(objetoinstancia,parametros);
if(m.nodo.hijos.size()==3){
clase.ejecutarSENTENCIAS(m.nodo.hijos.get(2));
}else if(m.nodo.hijos.size()==4 && m.nodo.valor.equals("METODOS1")){
clase.ejecutarSENTENCIAS(m.nodo.hijos.get(2));
}else if(m.nodo.hijos.size()==4 && m.nodo.valor.equals("FUNCIONES")){
clase.ejecutarSENTENCIAS(m.nodo.hijos.get(2));
}
else if(m.nodo.hijos.size()==5 && m.nodo.valor.equals("FUNCIONES1")){
clase.ejecutarSENTENCIAS(m.nodo.hijos.get(2));
}
}
}
else if(nodo.hijos.get(0).valor.equals("NMETODOS1")){
//---------------------------parametros
System.out.println("entro al nmetodo1");
for(int i=0;i<nodo.hijos.get(0).hijos.get(2).hijos.size();i++){
Object val=evaluarExpresion(nodo.hijos.get(0).hijos.get(2).hijos.get(i));
int tipo=tipoO.tobjeto(val);
parametros.add(tipo);
}
if(clase.getMetodollamada(objetoinstancia,parametros)!=null){
m=clase.getMetodollamada(objetoinstancia,parametros);
System.out.println("entro a NMETODOS1");
for(int i=0;i<m.nodo.hijos.get(2).hijos.size();i++){
String t=m.nodo.hijos.get(2).hijos.get(i).hijos.get(0).valor;
String n=m.nodo.hijos.get(2).hijos.get(i).hijos.get(1).valor;
Object v=evaluarExpresion(nodo.hijos.get(0).hijos.get(2).hijos.get(i));
variables nuevo=new variables(n, t, v);
clase.saveVariable(nuevo);
}
clase.ejecutarSENTENCIAS(m.nodo.hijos.get(3));
}
}
clase.disminuirAmbito();
}
...