Implement simple binary expressions
This commit is contained in:
32
Rakefile
32
Rakefile
@ -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
|
||||
|
Reference in New Issue
Block a user