Exemplos.java

Go to the documentation of this file.
00001 package plp.functional2;
00002 
00003 import java.util.Arrays;
00004 
00005 import plp.expressions2.expression.ExpSoma;
00006 import plp.expressions2.expression.Expressao;
00007 import plp.expressions2.expression.Id;
00008 import plp.expressions2.expression.ValorInteiro;
00009 import plp.expressions2.memory.VariavelJaDeclaradaException;
00010 import plp.expressions2.memory.VariavelNaoDeclaradaException;
00011 import plp.functional1.declaration.DecVariavel;
00012 import plp.functional1.declaration.DeclaracaoFuncional;
00013 import plp.functional2.declaration.DecFuncao;
00014 import plp.functional2.expression.Aplicacao;
00015 import plp.functional2.expression.ExpDeclaracao;
00016 import plp.functional2.expression.ValorFuncao;
00017 
00018 
00027 public class Exemplos {
00028 
00029         public static void main(String[] args) {
00030 
00031 
00032 //let fun add x = fn y . x + y in
00033 //let var id = add(0), var x = 4 in
00034 //  id(1) + x
00035 
00036                 Id idAdd = new Id("add");
00037                 Id idX = new Id("x");
00038                 Id idY = new Id("y");
00039                 Id idId = new Id("id");
00040         
00041                 Aplicacao aplicId =
00042                         new Aplicacao(
00043                                 idId,
00044                                 Arrays.asList(new Expressao[] { new ValorInteiro(1)}));
00045                 Aplicacao aplicAdd =
00046                         new Aplicacao(
00047                                 idAdd,
00048                                 Arrays.asList(new Expressao[] { new ValorInteiro(0)}));
00049                 DecVariavel decVarId = new DecVariavel(idId, aplicAdd);
00050                 DecVariavel decVarX = new DecVariavel(idX, new ValorInteiro(4));
00051         
00052                 ExpSoma expSomaFinal = new ExpSoma(aplicId, idX);
00053         
00054                 ExpDeclaracao expdecId =
00055                         new ExpDeclaracao(
00056                                 Arrays.asList(new DeclaracaoFuncional[] { decVarId, decVarX }),
00057                                 expSomaFinal);
00058         
00059                 ExpSoma expSoma = new ExpSoma(idX, idY);
00060                 ValorFuncao valorFuncaoLambda =
00061                         new ValorFuncao(Arrays.asList(new Id[] { idY }), expSoma);
00062                 ValorFuncao valorFuncaoAdd =
00063                         new ValorFuncao(
00064                                 Arrays.asList(new Id[] { idX }),
00065                                 valorFuncaoLambda);
00066                 DecFuncao decFunAdd = new DecFuncao(idAdd, valorFuncaoAdd);
00067         
00068                 ExpDeclaracao expdecAdd =
00069                         new ExpDeclaracao(
00070                                 Arrays.asList(new DeclaracaoFuncional[] { decFunAdd }),
00071                                 expdecId);
00072         
00073                 Programa prg = new Programa(expdecAdd);
00074                 try {
00075                         System.out.println(prg.executar());
00076                 } catch (VariavelJaDeclaradaException e) {
00077                         e.printStackTrace();
00078                 } catch (VariavelNaoDeclaradaException e) {
00079                         e.printStackTrace();
00080                 }
00081         }
00082 }

Generated on Tue Jul 18 22:04:30 2006 for PLP by  doxygen 1.4.7