Skip to content

Commit

Permalink
Merge pull request #10 from zenspider/cleanup
Browse files Browse the repository at this point in the history
Fixed broken samples and readme wrt macros, which need to be surrounded by curly braces.
  • Loading branch information
tenderlove committed Jul 16, 2014
2 parents 7f7434f + 30300d9 commit 092f672
Show file tree
Hide file tree
Showing 7 changed files with 277 additions and 104 deletions.
2 changes: 1 addition & 1 deletion README.rdoc
Expand Up @@ -17,7 +17,7 @@ Here is a sample lexical definition:
macro
BLANK [\ \t]+
rule
BLANK # no action
{BLANK} # no action
\d+ { [:digit, text.to_i] }
\w+ { [:word, text] }
\n
Expand Down
2 changes: 1 addition & 1 deletion sample/error1.rex
Expand Up @@ -7,7 +7,7 @@ class Error1
macro
BLANK [\ \t]+
rule
BLANK # no action
{BLANK} # no action
\d+ { [:digit, text.to_i] }
\w+ { [:word, text] }
\n
Expand Down
89 changes: 89 additions & 0 deletions sample/error1.rex.rb
@@ -0,0 +1,89 @@
#--
# DO NOT MODIFY!!!!
# This file is automatically generated by rex 1.0.5
# from lexical definition file "sample/error1.rex".
#++

require 'racc/parser'
#
# eooro1.rex
# lexical definition sample for rex
#

class Error1 < Racc::Parser
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


def next_token
return if @ss.eos?

# skips empty actions
until token = _next_token or @ss.eos?; end
token
end

def _next_token
text = @ss.peek(1)
@lineno += 1 if text == "\n"
token = case @state
when nil
case
when (text = @ss.scan(/[ \t]+/))
;

when (text = @ss.scan(/\d+/))
action { [:digit, text.to_i] }

when (text = @ss.scan(/\w+/))
action { [:word, text] }

when (text = @ss.scan(/\n/))
;


else
text = @ss.string[@ss.pos .. -1]
raise ScanError, "can not match: '" + text + "'"
end # if

else
raise ScanError, "undefined state: '" + state.to_s + "'"
end # case state
token
end # def _next_token

end # class
2 changes: 1 addition & 1 deletion sample/error2.rex
Expand Up @@ -7,7 +7,7 @@ class Error2
macro
BLANK [\ \t]+
rule
BLANK # no action
{BLANK} # no action
\d+ { [:digit, text.to_i] }
\w+ { [:word, text] }
\n
Expand Down
92 changes: 92 additions & 0 deletions sample/error2.rex.rb
@@ -0,0 +1,92 @@
#--
# DO NOT MODIFY!!!!
# This file is automatically generated by rex 1.0.5
# from lexical definition file "sample/error2.rex".
#++

require 'racc/parser'
#
# error2.rex
# lexical definition sample for rex
#

class Error2 < Racc::Parser
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


def next_token
return if @ss.eos?

# skips empty actions
until token = _next_token or @ss.eos?; end
token
end

def _next_token
text = @ss.peek(1)
@lineno += 1 if text == "\n"
token = case @state
when nil
case
when (text = @ss.scan(/[ \t]+/))
;

when (text = @ss.scan(/\d+/))
action { [:digit, text.to_i] }

when (text = @ss.scan(/\w+/))
action { [:word, text] }

when (text = @ss.scan(/\n/))
;

when (text = @ss.scan(/./))
action { state = :NONDEF ; [text, text] }


else
text = @ss.string[@ss.pos .. -1]
raise ScanError, "can not match: '" + text + "'"
end # if

else
raise ScanError, "undefined state: '" + state.to_s + "'"
end # case state
token
end # def _next_token

end # class
2 changes: 1 addition & 1 deletion sample/sample.rex
Expand Up @@ -7,7 +7,7 @@ class Sample
macro
BLANK [\ \t]+
rule
BLANK # no action
{BLANK} # no action
\d+ { [:digit, text.to_i] }
\w+ { [:word, text] }
\n
Expand Down

0 comments on commit 092f672

Please sign in to comment.