Implement simple binary expressions

This commit is contained in:
2025-04-26 23:14:38 +02:00
parent fee1781a5b
commit a60e623af5
4 changed files with 695 additions and 559 deletions

View File

@ -63,3 +63,35 @@ end
file 'build/stage2b' => ['build/stage2b.s', 'boot/common-boot.s'] do |t|
sh CROSS_GCC, '-nostdlib', '-o', t.name, *t.prerequisites
end
desc 'Print remaining lines to rewrite'
task :statistics do
def is_false_positive(word)
word.start_with?('(*') ||
word.start_with?('*)') ||
('A'..'Z').include?(word[0]) ||
/^[[:alpha:]][[:digit:]]$/.match(word)
end
lines = File.read('boot/stage2.elna')
.split("\n")
.select { |line| line.start_with? "\t" }
.map { |line| line.delete_prefix("\t").split(' ') }
.reject { |words| is_false_positive(words.first) }
.group_by do |words|
if words.first.length < 5
case words.first
when 'goto'
'Statements'
else
words.first
end
else
'Statements'
end
end
lines.each do |key, value|
puts "#{key}: #{value.count}"
end
end