Move grammar parsing into new Grammar class

This commit is contained in:
josh committed 2022-06-05 10:23:34 -04:00
1 parent 34eb1370ff
commit 57a3e9d9f6
6 files changed
+113 -51

No files matched your search

+16 -1
View File
@@ -14,14 +14,29 @@ class Propane
# Token ID.
attr_reader :id
# @return [Integer, nil]
# Line number where the token was defined in the input grammar.
attr_reader :line_number
# @return [Regex::NFA]
# Regex NFA for matching the token.
attr_reader :nfa
def initialize(name, pattern, id)
# Construct a Token.
#
# @param name [String]
# Token name.
# @param pattern [String]
# Token pattern.
# @param id [Integer]
# Token ID.
# @param line_number [Integer, nil]
# Line number where the token was defined in the input grammar.
def initialize(name, pattern, id, line_number)
@name = name
@pattern = pattern
@id = id
@line_number = line_number
unless pattern.nil?
regex = Regex.new(pattern)
regex.nfa.end_state.accepts = self