From e77ac481d846f8d5d73bf7dbf14da01d45e5dc50 Mon Sep 17 00:00:00 2001 From: Sami Samhuri Date: Sun, 20 Jan 2013 22:50:51 -0800 Subject: [PATCH] ruby 1.9 compatible case statements --- asm/binary.rb | 6 +++-- asm/machofile.rb | 6 +++-- build.rb | 12 ++++++---- compiler.rb | 57 ++++++++++++++++++++++++++++++++---------------- 4 files changed, 54 insertions(+), 27 deletions(-) diff --git a/asm/binary.rb b/asm/binary.rb index a8bc65d..caa8231 100644 --- a/asm/binary.rb +++ b/asm/binary.rb @@ -637,8 +637,10 @@ module Assembler if register?(dest) opcode = case - when rm?(src, :byte): 0xb6 # movzx Gv, Eb - when rm?(src, :word): 0xb7 # movzx Gv, Ew + when rm?(src, :byte) + 0xb6 # movzx Gv, Eb + when rm?(src, :word) + 0xb7 # movzx Gv, Ew else raise "unsupported MOVZX instruction, dest=#{dest.inspect} << src=#{src.inspect} >>" end diff --git a/asm/machofile.rb b/asm/machofile.rb index 93b09e0..6064b7e 100644 --- a/asm/machofile.rb +++ b/asm/machofile.rb @@ -358,8 +358,10 @@ module Assembler def segname_based_on_filetype(segname) case @header[:filetype] - when MH_OBJECT: '' - when MH_EXECUTE: segname + when MH_OBJECT + '' + when MH_EXECUTE + segname else raise "unsupported MachO file type: #{@header.inspect}" end diff --git a/build.rb b/build.rb index 86ab4d3..3de6117 100755 --- a/build.rb +++ b/build.rb @@ -76,8 +76,10 @@ end def link(filename, outdir, platform='linux') f = base(filename) cmd, args = *case platform - when 'darwin': ['gcc', '-arch i386'] - when 'linux': ['ld', ''] + when 'darwin' + ['gcc', '-arch i386'] + when 'linux' + ['ld', ''] else raise "unsupported platform: #{platform}" end @@ -90,8 +92,10 @@ def build(filename, outdir, platform='linux', binformat='elf') objfile = File.join(outdir, base(filename) + '.o') symtab, objwriter_class = case binformat - when 'elf': [Assembler::ELFSymtab.new, Assembler::ELFFile] - when 'macho': [Assembler::MachOSymtab.new, Assembler::MachOFile] + when 'elf' + [Assembler::ELFSymtab.new, Assembler::ELFFile] + when 'macho' + [Assembler::MachOSymtab.new, Assembler::MachOFile] else raise "unsupported binary format: #{binformat}" end diff --git a/compiler.rb b/compiler.rb index a0d5b18..c21beed 100644 --- a/compiler.rb +++ b/compiler.rb @@ -156,8 +156,10 @@ class Compiler while op?(:mul, @look) asm.push(EAX) case @look - when '*': multiply - when '/': divide + when '*' + multiply + when '/' + divide end end end @@ -170,8 +172,10 @@ class Compiler while op_char?(@look, :add) asm.push(EAX) case @look - when '+': add - when '-': subtract + when '+' + add + when '-' + subtract end end end @@ -230,9 +234,12 @@ class Compiler while op?(:bit, @look) scan case @value - when '|': bitor_expression - when '^': bitxor_expression - when '&': bitand_expression + when '|' + bitor_expression + when '^' + bitxor_expression + when '&' + bitand_expression else backtrack return @@ -357,12 +364,18 @@ class Compiler scan asm.push(EAX) case @value - when '==': eq_relation - when '!=': neq_relation - when '>': gt_relation - when '>=': ge_relation - when '<': lt_relation - when '<=': le_relation + when '==' + eq_relation + when '!=' + neq_relation + when '>' + gt_relation + when '>=' + ge_relation + when '<' + lt_relation + when '<=' + le_relation end end end @@ -921,12 +934,18 @@ class Compiler def print_token print(case @token - when :keyword: '[kw] ' - when :number: '[nu] ' - when :identifier: '[id] ' - when :op: '[op] ' - when :boolean: '[bo] ' - when :newline: '' + when :keyword + '[kw] ' + when :number + '[nu] ' + when :identifier + '[id] ' + when :op + '[op] ' + when :boolean + '[bo] ' + when :newline + '' else raise "print doesn't know about #{@token}: #{@value}" end)