REX_HEADER |
= |
<<-REX_EOT #-- # DO NOT MODIFY!!!! # This file is automatically generated by rex %s # from lexical definition file "%s". #++ REX_EOT |
|
|
REX_UTIL |
= |
<<-REX_EOT require 'strscan' class ScanError < StandardError ; end attr_reader :lineno attr_reader :filename attr_accessor :state def scan_setup(str) @ss = StringScanner.new(str) @lineno = 1 @state = nil end def action yield end def scan_str(str) scan_setup(str) do_parse end alias :scan :scan_str def load_file( filename ) @filename = filename open(filename, "r") do |f| scan_setup(f.read) end end def scan_file( filename ) load_file(filename) do_parse end REX_EOT |
REX_STUB |
= |
<<-REX_EOT if __FILE__ == $0 exit if ARGV.size != 1 filename = ARGV.shift rex = %s.new begin rex.load_file filename while token = rex.next_token p token end rescue $stderr.printf %s, rex.filename, rex.lineno, $!.message end end REX_EOT |