Move Token/Rule out of Grammar class

This commit is contained in:
josh committed 2021-08-19 20:00:40 -04:00
1 parent f295acb593
commit 9273bfccf6
5 files changed
+61 -65

No files matched your search

-21
View File
@@ -1,21 +0,0 @@
module Imbecile
class Grammar
class Rule
attr_reader :name
attr_reader :components
attr_reader :code
def initialize(name, rule_components, code)
@name = name
@components = rule_components
@code = code
end
end
end
end
-42
View File
@@ -1,42 +0,0 @@
module Imbecile
class Grammar
class Token
# @return [String]
# Token name.
attr_reader :name
# @return [String]
# Token pattern.
attr_reader :pattern
# @return [Integer]
# Token ID.
attr_reader :id
# @return [Regex::NFA]
# Regex NFA for matching the token.
attr_reader :nfa
def initialize(name, pattern, id)
@name = name
@pattern = pattern
@id = id
regex = Regex.new(pattern)
regex.nfa.end_state.accepts = self
@nfa = regex.nfa
end
def c_name
@name.upcase
end
def to_s
@name
end
end
end
end
+19
View File
@@ -0,0 +1,19 @@
module Imbecile
class Rule
attr_reader :name
attr_reader :components
attr_reader :code
def initialize(name, rule_components, code)
@name = name
@components = rule_components
@code = code
end
end
end
+40
View File
@@ -0,0 +1,40 @@
module Imbecile
class Token
# @return [String]
# Token name.
attr_reader :name
# @return [String]
# Token pattern.
attr_reader :pattern
# @return [Integer]
# Token ID.
attr_reader :id
# @return [Regex::NFA]
# Regex NFA for matching the token.
attr_reader :nfa
def initialize(name, pattern, id)
@name = name
@pattern = pattern
@id = id
regex = Regex.new(pattern)
regex.nfa.end_state.accepts = self
@nfa = regex.nfa
end
def c_name
@name.upcase
end
def to_s
@name
end
end
end