diff --git a/lib/imbecile.rb b/lib/imbecile.rb index 9790f2e..1cf254d 100644 --- a/lib/imbecile.rb +++ b/lib/imbecile.rb @@ -7,13 +7,13 @@ require_relative "imbecile/fa/state" require_relative "imbecile/fa/state/transition" require_relative "imbecile/generator" require_relative "imbecile/grammar" -require_relative "imbecile/grammar/rule" -require_relative "imbecile/grammar/token" require_relative "imbecile/lexer" require_relative "imbecile/lexer/dfa" require_relative "imbecile/regex" require_relative "imbecile/regex/nfa" require_relative "imbecile/regex/unit" +require_relative "imbecile/rule" +require_relative "imbecile/token" require_relative "imbecile/version" module Imbecile diff --git a/lib/imbecile/grammar/rule.rb b/lib/imbecile/grammar/rule.rb deleted file mode 100644 index 3e2f31b..0000000 --- a/lib/imbecile/grammar/rule.rb +++ /dev/null @@ -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 diff --git a/lib/imbecile/grammar/token.rb b/lib/imbecile/grammar/token.rb deleted file mode 100644 index aa3fc23..0000000 --- a/lib/imbecile/grammar/token.rb +++ /dev/null @@ -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 diff --git a/lib/imbecile/rule.rb b/lib/imbecile/rule.rb new file mode 100644 index 0000000..df3c251 --- /dev/null +++ b/lib/imbecile/rule.rb @@ -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 diff --git a/lib/imbecile/token.rb b/lib/imbecile/token.rb new file mode 100644 index 0000000..266ef25 --- /dev/null +++ b/lib/imbecile/token.rb @@ -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