class EPUB::CFI::Parser
Constants
- Racc_arg
- Racc_debug_parser
- Racc_token_to_s_table
- UNICODE_CHARACTER_EXCLUDING_SPECIAL_CHARS_AND_SPACE_AND_DOT_AND_COLON_AND_TILDE_AND_ATMARK_AND_SOLIDUS_AND_EXCLAMATION_MARK_PATTERN
- UNICODE_CHARACTER_PATTERN
Public Class Methods
new(debug: $DEBUG)
click to toggle source
Calls superclass method
# File lib/epub/cfi/parser.rb, line 15 def initialize(debug: $DEBUG) @yydebug = debug super() end
parse(string, debug: $DEBUG)
click to toggle source
# File lib/epub/cfi/parser.rb, line 10 def parse(string, debug: $DEBUG) new(debug: debug).parse(string) end
Public Instance Methods
_reduce_none(val, _values, result)
click to toggle source
reduce 80 omitted
# File lib/epub/cfi/parser.tab.rb, line 692 def _reduce_none(val, _values, result) val[0] end
next_token()
click to toggle source
# File lib/epub/cfi/parser.rb, line 28 def next_token return [false, false] if @scanner.eos? case when @scanner.scan(/[1-9]/) [:DIGIT_NON_ZERO, @scanner[0]] when @scanner.scan(/0/) [:ZERO, @scanner[0]] when @scanner.scan(/ /) [:SPACE, @scanner[0]] when @scanner.scan(/\^/) [:CIRCUMFLEX, @scanner[0]] when @scanner.scan(/\[/) [:OPENING_SQUARE_BRACKET, @scanner[0]] when @scanner.scan(/\]/) [:CLOSING_SQUARE_BRACKET, @scanner[0]] when @scanner.scan(/\(/) [:OPENING_PARENTHESIS, @scanner[0]] when @scanner.scan(/\)/) [:CLOSING_PARENTHESIS, @scanner[0]] when @scanner.scan(/,/) [:COMMA, @scanner[0]] when @scanner.scan(/;/) [:SEMICOLON, @scanner[0]] when @scanner.scan(/=/) [:EQUAL, @scanner[0]] when @scanner.scan(/\./) [:DOT, @scanner[0]] when @scanner.scan(/:/) [:COLON, @scanner[0]] when @scanner.scan(/~/) [:TILDE, @scanner[0]] when @scanner.scan(/@/) [:ATMARK, @scanner[0]] when @scanner.scan(/\//) [:SOLIDUS, @scanner[0]] when @scanner.scan(/!/) [:EXCLAMATION_MARK, @scanner[0]] when @scanner.scan(UNICODE_CHARACTER_EXCLUDING_SPECIAL_CHARS_AND_SPACE_AND_DOT_AND_COLON_AND_TILDE_AND_ATMARK_AND_SOLIDUS_AND_EXCLAMATION_MARK_PATTERN) [:UNICODE_CHARACTER_EXCLUDING_SPECIAL_CHARS_AND_SPACE_AND_DOT_AND_COLON_AND_TILDE_AND_ATMARK_AND_SOLIDUS_AND_EXCLAMATION_MARK, @scanner[0]] else raise 'unexpected character' end end
parse(string)
click to toggle source
# File lib/epub/cfi/parser.rb, line 20 def parse(string) if string.start_with? 'epubcfi(' string = string['epubcfi('.length .. -2] end @scanner = StringScanner.new(string, true) do_parse end