main
 1#!/usr/bin/env ruby
 2
 3WHITESPACE = Regexp.new('[[:blank:]]+')
 4SPLITTABLES = [';', '(', ')']
 5
 6def tokenize(code)
 7  pattern = Regexp.new("[^#{Regexp.escape(SPLITTABLES.join)}]+")
 8  output = []
 9  tokens = code.chomp.strip.split(WHITESPACE)
10  tokens.each do |token|
11    prefix, stem, suffix = token.partition(pattern)
12    output << prefix.split('') unless prefix.empty?
13    output << stem unless stem.empty?
14    output << suffix.split('') unless suffix.empty?
15  end
16
17  output.flatten
18end
19
20
21code = ARGV[0]
22tokens = tokenize(code)
23
24puts "Input: #{code.inspect}"
25puts "Tokens: #{tokens.inspect}"