Added for .NET backend.
All process consists of :
YAR => semantic tree => call codegen(Semantic tree, .NET backend) => IL ASM
Here is a sample:
YAR
function abc < T,U,Z > (a:integer;b:U):Z;
c,d:T;
e:Z;
f:U;
begin
c:=d;
f:=b;
result:=e;
end;
=>
IL ASM
.method static public !!Z abc < T,U,Z > (int32 a,!!U b) cil managed
{
.locals init(!!U f,!!Z e,!!T c,!!T d)
ldloc d
stloc c
ldarg b
stloc f
ldloc e
ret
}
вторник, 21 сентября 2010 г.
понедельник, 13 сентября 2010 г.
Обновление синтаксического анализатора YAR и проверка типов
Разбор YAR построен на восходящем синтаксическом анализаторе. И при использовании
символов < и > для указания параметров типов создаются конфликты в состояниях анализатора. После некоторых манипуляций в синтаксический анализатор YAR добавлен механизм для устранения таких конфликтов. То есть выражения вида TList < tlist < t,z,u >,TList < t,z,tlist < z > > > и A < 5 будут успешно разрешены.
Механизм проверки типов также корректно проверят unbound параметры, считая их только самосовместимыми.
function abc < t,u,z >(a:integer;b:U):Z;
c,d:T;
e:Z;
f:U;
begin
c:=d;
f:=b;
result:=e;
end;
Кодогенератор и BackEnd для .NET будет расширен, как только будет закончена работа в front-end части.
символов < и > для указания параметров типов создаются конфликты в состояниях анализатора. После некоторых манипуляций в синтаксический анализатор YAR добавлен механизм для устранения таких конфликтов. То есть выражения вида TList < tlist < t,z,u >,TList < t,z,tlist < z > > > и A < 5 будут успешно разрешены.
Механизм проверки типов также корректно проверят unbound параметры, считая их только самосовместимыми.
function abc < t,u,z >(a:integer;b:U):Z;
c,d:T;
e:Z;
f:U;
begin
c:=d;
f:=b;
result:=e;
end;
Кодогенератор и BackEnd для .NET будет расширен, как только будет закончена работа в front-end части.
вторник, 24 августа 2010 г.
понедельник, 23 августа 2010 г.
суббота, 14 августа 2010 г.
Обновление YAR
-Добавлена оптимизация в работе операторов +, *, -, <, <=, =, <>, >=, > при операндах константах.
Код вычислений не генерируется.
-Оптимизировано вычисление предиката конструкции if и генерация кода аналогично.
Автоматически распространится на все Backend'ы.
Код вычислений не генерируется.
-Оптимизировано вычисление предиката конструкции if и генерация кода аналогично.
Автоматически распространится на все Backend'ы.
среда, 4 августа 2010 г.
пятница, 9 июля 2010 г.
Working with .NET unmanaged API.
I started translating cor.h corhdr.h to pas analogues yesterday.
Today I'm testing the results. 5 min a normal fly. :)
Today I'm testing the results. 5 min a normal fly. :)
Подписаться на:
Сообщения (Atom)