program test;
const
a = 1;
b = 1.222;
c = 'a';
d = true;
e = 'aaasssddd';
MaxCode = 65536;
MaxIdent = 512;
MaxType = 32;
MaxList = 10;
MaxAlfa = 20;
MaxStrLen = 255;
MaxCase = 256;
MaxBinCode = 262144;
type
TAlfa = array [1..22] of char;
TAlfa1 = TAlfa;
TAlfa2 = TAlfa1;
TAlfa3 = TAlfa2;
TIdent=record
//name :TAlfa3;
end;
TType=record
Size :TIdent;
Kind :integer;
StartIndex :integer;
EndIndex :integer;
SubType :integer;
Fields :integer;
end;
TType2=record
Size :TType;
Kind :TIdent;
StartIndex :integer;
EndIndex :integer;
SubType :integer;
Fields :integer;
end;
var
Code :array [0..22] of integer;
TokNameList :array [0..22] of integer;
CurChar :char;
LinePos :integer;
LineNum :integer;
CurTok :integer;
CurID :TAlfa;
CurNum :integer;
CurStr :array [1..MaxStrLen] of char;
CurStrLen :integer;
FuncDecl :integer;
LastOpcode :integer;
CurLevel :integer;
IsLabeled :boolean;
IdentPos :integer;
TypePos :integer;
IdentTab :array [0..MaxIdent] of TIdent;
TypeTab :array [1..MaxType] of TType;
CodePos :integer;
StackPos :real;
procedure NewParameter(var P,PS:integer);
var
R:boolean;
T:integer;
begin
end;
begin
StackPos:= b+22.134;
end.
В процедуре
create_put_variable_bytecode (bytecode.c) есть
class_index := cp_add_class('Real');
method_index := cp_add_methodref('Real', '<init>', '(LReal;)V');
bytecode_append(code, new_);
То есть реал поддержка есть, там вообще много чего хитрого есть...
Например запрет на вложенные процедуры или отрицательные интервалы
Однако по коду можно судить, что автор это сделал намерено...