Add helper function on library module
This commit is contained in:
parent
43989e6e48
commit
a10d8db8a9
7 changed files with 33 additions and 6 deletions
|
@ -1,3 +1,5 @@
|
||||||
|
# frozen_string_literal: true
|
||||||
|
|
||||||
require 'namarara/version'
|
require 'namarara/version'
|
||||||
|
|
||||||
module Namarara; end
|
module Namarara; end
|
||||||
|
@ -9,3 +11,19 @@ require 'namarara/parser'
|
||||||
require 'namarara/eval_error'
|
require 'namarara/eval_error'
|
||||||
require 'namarara/errors/var_not_defined'
|
require 'namarara/errors/var_not_defined'
|
||||||
require 'namarara/errors/invalid_grammar'
|
require 'namarara/errors/invalid_grammar'
|
||||||
|
|
||||||
|
module Namarara
|
||||||
|
def self.parse_string(line, vars, debug = false)
|
||||||
|
parser = Parser.new(Lexer.new)
|
||||||
|
parser.names = vars
|
||||||
|
parser_bet = parser.parse(line.chomp, debug)
|
||||||
|
parser.check_grammar line, parser_bet
|
||||||
|
|
||||||
|
{
|
||||||
|
expr: line,
|
||||||
|
tree: parser_bet.to_s,
|
||||||
|
errors: parser_bet&.errors&.map { |e| e.message },
|
||||||
|
result: parser_bet&.compute
|
||||||
|
}
|
||||||
|
end
|
||||||
|
end
|
||||||
|
|
|
@ -1,3 +1,5 @@
|
||||||
|
# frozen_string_literal: true
|
||||||
|
|
||||||
module Namarara
|
module Namarara
|
||||||
module Errors
|
module Errors
|
||||||
class InvalidGrammar < EvalError
|
class InvalidGrammar < EvalError
|
||||||
|
|
|
@ -1,3 +1,5 @@
|
||||||
|
# frozen_string_literal: true
|
||||||
|
|
||||||
module Namarara
|
module Namarara
|
||||||
module Errors
|
module Errors
|
||||||
class VarNotDefined < EvalError
|
class VarNotDefined < EvalError
|
||||||
|
|
|
@ -1,3 +1,5 @@
|
||||||
|
# frozen_string_literal: true
|
||||||
|
|
||||||
module Namarara
|
module Namarara
|
||||||
class EvalError
|
class EvalError
|
||||||
attr_accessor :var
|
attr_accessor :var
|
||||||
|
|
|
@ -1,3 +1,5 @@
|
||||||
|
# frozen_string_literal: true
|
||||||
|
|
||||||
module Namarara
|
module Namarara
|
||||||
class Lexer < Rly::Lex
|
class Lexer < Rly::Lex
|
||||||
attr_reader :logger
|
attr_reader :logger
|
||||||
|
@ -27,11 +29,9 @@ module Namarara
|
||||||
end
|
end
|
||||||
|
|
||||||
on_error do |t|
|
on_error do |t|
|
||||||
unless t.lexer.logger.nil?
|
t.lexer.logger&.error "Illegal character #{t.value}"
|
||||||
t.lexer.logger.error "Illegal character #{t.value}"
|
|
||||||
end
|
|
||||||
t.lexer.pos += 1
|
t.lexer.pos += 1
|
||||||
nil
|
nil
|
||||||
end
|
end
|
||||||
end # class
|
end
|
||||||
end # module
|
end
|
||||||
|
|
|
@ -1,3 +1,5 @@
|
||||||
|
# frozen_string_literal: true
|
||||||
|
|
||||||
module Namarara
|
module Namarara
|
||||||
VERSION = '0.9.4'.freeze
|
VERSION = '0.9.4'
|
||||||
end
|
end
|
||||||
|
|
|
@ -32,6 +32,7 @@ Gem::Specification.new do |spec|
|
||||||
|
|
||||||
spec.add_development_dependency 'thor'
|
spec.add_development_dependency 'thor'
|
||||||
spec.add_development_dependency 'rly'
|
spec.add_development_dependency 'rly'
|
||||||
|
spec.add_development_dependency 'sinatra'
|
||||||
spec.add_development_dependency "bundler", "~> 1.15"
|
spec.add_development_dependency "bundler", "~> 1.15"
|
||||||
spec.add_development_dependency "rake", "~> 10.0"
|
spec.add_development_dependency "rake", "~> 10.0"
|
||||||
spec.add_development_dependency "minitest", "~> 5.0"
|
spec.add_development_dependency "minitest", "~> 5.0"
|
||||||
|
|
Loading…
Reference in a new issue