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
00033
00034
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 }