From a10d8db8a917ceb8724e38197f26ebb8900274ae Mon Sep 17 00:00:00 2001 From: "Glenn Y. Rolland" Date: Sat, 21 Dec 2019 20:34:47 +0100 Subject: [PATCH] Add helper function on library module --- lib/namarara.rb | 18 ++++++++++++++++++ lib/namarara/errors/invalid_grammar.rb | 2 ++ lib/namarara/errors/var_not_defined.rb | 2 ++ lib/namarara/eval_error.rb | 2 ++ lib/namarara/lexer.rb | 10 +++++----- lib/namarara/version.rb | 4 +++- namarara.gemspec | 1 + 7 files changed, 33 insertions(+), 6 deletions(-) diff --git a/lib/namarara.rb b/lib/namarara.rb index db8e448..6485596 100644 --- a/lib/namarara.rb +++ b/lib/namarara.rb @@ -1,3 +1,5 @@ +# frozen_string_literal: true + require 'namarara/version' module Namarara; end @@ -9,3 +11,19 @@ require 'namarara/parser' require 'namarara/eval_error' require 'namarara/errors/var_not_defined' 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 diff --git a/lib/namarara/errors/invalid_grammar.rb b/lib/namarara/errors/invalid_grammar.rb index 2497e16..bcfab22 100644 --- a/lib/namarara/errors/invalid_grammar.rb +++ b/lib/namarara/errors/invalid_grammar.rb @@ -1,3 +1,5 @@ +# frozen_string_literal: true + module Namarara module Errors class InvalidGrammar < EvalError diff --git a/lib/namarara/errors/var_not_defined.rb b/lib/namarara/errors/var_not_defined.rb index d3fc378..17750f9 100644 --- a/lib/namarara/errors/var_not_defined.rb +++ b/lib/namarara/errors/var_not_defined.rb @@ -1,3 +1,5 @@ +# frozen_string_literal: true + module Namarara module Errors class VarNotDefined < EvalError diff --git a/lib/namarara/eval_error.rb b/lib/namarara/eval_error.rb index 0365c08..4355b57 100644 --- a/lib/namarara/eval_error.rb +++ b/lib/namarara/eval_error.rb @@ -1,3 +1,5 @@ +# frozen_string_literal: true + module Namarara class EvalError attr_accessor :var diff --git a/lib/namarara/lexer.rb b/lib/namarara/lexer.rb index 6687934..e8264b8 100755 --- a/lib/namarara/lexer.rb +++ b/lib/namarara/lexer.rb @@ -1,3 +1,5 @@ +# frozen_string_literal: true + module Namarara class Lexer < Rly::Lex attr_reader :logger @@ -27,11 +29,9 @@ module Namarara end on_error do |t| - unless t.lexer.logger.nil? - t.lexer.logger.error "Illegal character #{t.value}" - end + t.lexer.logger&.error "Illegal character #{t.value}" t.lexer.pos += 1 nil end - end # class -end # module + end +end diff --git a/lib/namarara/version.rb b/lib/namarara/version.rb index a72851f..dba30ac 100644 --- a/lib/namarara/version.rb +++ b/lib/namarara/version.rb @@ -1,3 +1,5 @@ +# frozen_string_literal: true + module Namarara - VERSION = '0.9.4'.freeze + VERSION = '0.9.4' end diff --git a/namarara.gemspec b/namarara.gemspec index 9967559..55696d5 100644 --- a/namarara.gemspec +++ b/namarara.gemspec @@ -32,6 +32,7 @@ Gem::Specification.new do |spec| spec.add_development_dependency 'thor' spec.add_development_dependency 'rly' + spec.add_development_dependency 'sinatra' spec.add_development_dependency "bundler", "~> 1.15" spec.add_development_dependency "rake", "~> 10.0" spec.add_development_dependency "minitest", "~> 5.0"