Module: LexerKit::DFA
- Defined in:
- lib/lexer_kit/dfa.rb,
lib/lexer_kit/dfa/nfa.rb,
lib/lexer_kit/dfa/regex_ast.rb,
lib/lexer_kit/dfa/utf8_range.rb,
lib/lexer_kit/dfa/dfa_builder.rb,
lib/lexer_kit/dfa/case_folding.rb,
lib/lexer_kit/dfa/regex_parser.rb,
lib/lexer_kit/dfa/dfa_minimizer.rb,
lib/lexer_kit/dfa/byte_class_builder.rb,
lib/lexer_kit/dfa/utf8_range_pattern.rb,
lib/lexer_kit/dfa/char_class_collector.rb
Overview
DFA module provides regex to DFA compilation.
Defined Under Namespace
Modules: CaseFolding, RegexAST, Utf8Range Classes: ByteClassBuilder, CharClassCollector, DFABuilder, DFAMinimizer, NFA, RegexParser, Utf8RangePattern
Class Method Summary collapse
-
.compile_regex(regex, token_id = 0) ⇒ IR::DFATable
Compile a Regex to DFA.
-
.first_byte_set(regex) ⇒ Set<Integer>
Compute the set of possible first bytes for a Regex.
Class Method Details
.compile_regex(regex, token_id = 0) ⇒ IR::DFATable
Compile a Regex to DFA
20 21 22 23 24 25 |
# File 'lib/lexer_kit/dfa.rb', line 20 def self.compile_regex(regex, token_id = 0) raise ArgumentError, "expected Regex, got #{regex.class}" unless regex.is_a?(RegexAST::Regex) nfa = NFA.from_regex(regex, token_id) DFABuilder.new(nfa).build end |
.first_byte_set(regex) ⇒ Set<Integer>
Compute the set of possible first bytes for a Regex
30 31 32 33 34 35 |
# File 'lib/lexer_kit/dfa.rb', line 30 def self.first_byte_set(regex) raise ArgumentError, "expected Regex, got #{regex.class}" unless regex.is_a?(RegexAST::Regex) nfa = NFA.from_regex(regex, 0) nfa.first_byte_set end |