Добавил:
Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
Язык программирования FPTL и средства работы с ним.pdf
Скачиваний:
30
Добавлен:
28.06.2014
Размер:
226.48 Кб
Скачать

(I(1,2).c_succ * I(2,2).~c_succ).PLUS

);

MINUS = I(2,2).~c_null ->

I(1,2),

(

(I(1,2).~c_succ * I(2,2).~c_succ).MINUS

);

LT =

(I(1,2).~c_null * I(2,2).~c_succ) -> <true>,

(

((I(1,2).~c_succ * I(2,2).~c_succ).LT) -> <true>, <false>

);

GT =

(I(1,2).~c_succ * I(2,2).~c_null) -> <true>,

(

((I(1,2).~c_succ * I(2,2).~c_succ).GT) -> <true>, <false>

);

EQ =

(I(1,2).~c_null * I(2,2).~c_null) -> <true>,

(

((I(1,2).~c_succ * I(2,2).~c_succ).EQ) -> <true>, <false>

);

GE = (GT * EQ) . or;

LE = (LT * EQ) . or;

CNV = (id*<0>).eq -> <c_null>, (((id*<1>).minus.CNV).c_succ); COUNT = ~c_null -> <0>, (~c_succ.(COUNT * <1>).plus);

}

Application

%fib(26)

Разделение строки на лексемы – Java

package fptl.decompiler.Generated;

import ComputingBlock.InternalForm.Data.*; import java.util.*;

public class Test implements Runnable

{

public void run()

{

System.out.println("Compiled:" + split());

}

private int split()

{

return F("123 345 asdf 23453 asdfas", " ", 1000000, 0);

}

private int F(String arg0, String arg1, int arg2, int arg3)

{

while (!(arg2 == 0))

{

int argTemp2 = arg2 - 1;

int argTemp3 = S0(arg0, arg1) + arg3;

arg2 = argTemp2; arg3 = argTemp3;

}

return arg3;

}

private int S0(String arg0, String arg1)

{

return S1(arg0, arg1, 0);

}

private int S1(String arg0, String arg1, int arg2)

{

while (true)

{

String var8;

if (arg0.indexOf(arg1) == -1)

{

var8 = "";

}

else

{

int var14 = arg0.length() - arg0.indexOf(arg1); int var17 = arg0.indexOf(arg1);

var8 = arg0.substring((var17 + 1), (var17 + 1) + (var14 - 1));

}

if (var8.compareTo("") == 0) break; String var22;

if (arg0.indexOf(arg1) == -1)

{

var22 = "";

}

else

{

int var28 = arg0.length() - arg0.indexOf(arg1); int var31 = arg0.indexOf(arg1);

var22 = arg0.substring((var31 + 1), (var31 + 1) + (var28 - 1));

}

String argTemp0 = var22; int argTemp2 = arg2 + 1; arg0 = argTemp0;

arg2 = argTemp2;

}

return arg2 + 1;

}

}

Разделение строки на лексемы – FPTL

Functional Program split

Scheme split

{

//string*string*int => int @ = (id*<0>).F;

//string*string*int*int => int

F = (I(3,4)*<0>).eq -> I(4,4), ((I(1,4)*I(2,4)*I(3,4).DEC*((I(1,4)*I(2,4)).S0*I(4,4)).plus).F);

//string*string => int S0 = (id*<0>).S1;

//string*string*int => int

S1 = ((I(1,3)*I(2,3)).SP*<"">).eq -> I(3,3).INC,

(((I(1,3)*I(2,3)).SP*I(2,3)* I(3,3).INC ).S1); //string*string => string

SP = (find*<-1>).eq -> <"">, (( (I(1,2).len*find).minus.DEC * find.INC * I(1,2) ).extr);

INC = (id*<1>).plus; DEC = (id*<1>).minus;

}

Application

%split("123 345 asdf 23453 asdfas", " ", 1000000)

Любой из материалов, опубликованных на этом сервере, не может быть воспроизведен в какой бы то ни было форме и какими бы то ни было средствами без письменного разрешения владельцев авторских прав.