Set expression type for enumeration values

This commit is contained in:
2025-11-25 08:03:05 +01:00
parent c3eff02f8d
commit c20d9b7240
4 changed files with 5692 additions and 66 deletions

View File

@@ -40,43 +40,19 @@ end
desc 'Convert previous stage language into the current stage language'
task :convert do
File.open('boot/stage16.elna', 'w') do |current_stage|
skip = false
File.readlines('boot/stage15.elna').each do |line|
if line.strip == 'type'
current_stage << <<~SNIP
type
_elna_tac_declaration = record
next: Word;
name: Word;
length: Word;
body: Word
end;
_integer_literal_node = record
kind: Word;
value: Word;
length: Word
end;
SNIP
elsif line.start_with?('proc _elna_tac_declaration_size')
skip = true
elsif line.start_with?('proc _elna_tac_declaration_get_')
skip = true
elsif line.start_with?('proc _elna_tac_declaration_set_')
skip = true
elsif line.start_with?('proc _integer_literal_node_size')
skip = true
elsif line.start_with?('proc _integer_literal_node_get_')
skip = true
elsif line.start_with?('proc _integer_literal_node_set_')
skip = true
elsif line.start_with?('end') && skip
skip = false
elsif !skip
File.open('boot/stage17/cl.elna', 'w') do |current_stage|
File.readlines('boot/stage16/cl.elna').each do |line|
current_stage << line
end
end
current_stage << <<~STAGE
proc f(x: ElnaTreeExpression);
var
y: Word;
begin
y := x.kind
end;
STAGE
end
end