Class: LexerKit::DFA::RegexParser

Inherits:
Object
  • Object
show all
Includes:
RegexAST
Defined in:
lib/lexer_kit/dfa/regex_parser.rb

Overview

RegexParser parses a subset of regular expressions into an AST. Supported features:

  • Literal characters

  • Character classes: [a-z], [^abc], ., d, w, s, D, W, S

  • Quantifiers: *, +, ?, n, n,, n,m

  • Alternation: |

  • Grouping: (), (?:…)

  • Escapes: \, ., [, etc.

Instance Method Summary collapse

Constructor Details

#initialize(source) ⇒ RegexParser

Returns a new instance of RegexParser.



17
18
19
20
# File 'lib/lexer_kit/dfa/regex_parser.rb', line 17

def initialize(source)
  @source = source.is_a?(Regexp) ? source.source : source
  @pos = 0
end

Instance Method Details

#parseObject



22
23
24
25
26
27
# File 'lib/lexer_kit/dfa/regex_parser.rb', line 22

def parse
  result = parse_alternation
  error("unexpected character at position #{@pos}") unless eof?

  result
end