Lower global static array and record access
This commit is contained in:
45
Rakefile
45
Rakefile
@@ -38,47 +38,14 @@ end
|
||||
|
||||
desc 'Convert previous stage language into the current stage language'
|
||||
task :convert do
|
||||
File.open('boot/stage19/cl.elna', 'w') do |current_stage|
|
||||
File.readlines('boot/stage18/cl.elna').each do |line|
|
||||
current_stage << "\tf();\n" if line.include? "if _compile() then"
|
||||
File.open('boot/stage20/cl.elna', 'w') do |current_stage|
|
||||
File.readlines('boot/stage19/cl.elna').each do |line|
|
||||
if line.include? "_assign_at(@classification, 1, ElnaLexerClass.eof)"
|
||||
current_stage << "\tclassification[1] := ElnaLexerClass.eof;\n"
|
||||
else
|
||||
current_stage << line
|
||||
if line == "type\n"
|
||||
current_stage << <<-RECORD
|
||||
Pair = record
|
||||
first: Word;
|
||||
second: Word
|
||||
end;
|
||||
R1 = record
|
||||
field1: Word;
|
||||
field2: [4]Word;
|
||||
field3: Word
|
||||
end;
|
||||
R2 = record
|
||||
field1: Word;
|
||||
field3: Word;
|
||||
field4: Word;
|
||||
field5: Word;
|
||||
field6: Word;
|
||||
field2: Word
|
||||
end;
|
||||
|
||||
RECORD
|
||||
end
|
||||
end
|
||||
end
|
||||
current_stage << <<~EPILOGUE
|
||||
|
||||
proc f();
|
||||
var
|
||||
v1: Word;
|
||||
r: ^R1;
|
||||
begin
|
||||
r := malloc(#size(R1));
|
||||
|
||||
v1 := r^.field2[2];
|
||||
|
||||
printf("# %i\\n\\0", v1)
|
||||
end;
|
||||
EPILOGUE
|
||||
end
|
||||
end
|
||||
|
||||
|
||||
Reference in New Issue
Block a user