Add logger for illegal characters
This commit is contained in:
parent
40be4077fe
commit
960b3637c9
2 changed files with 19 additions and 5 deletions
|
@ -7,20 +7,26 @@ require 'rly'
|
|||
require 'pry'
|
||||
require 'mm2ep_depend'
|
||||
require 'pp'
|
||||
require 'logger'
|
||||
|
||||
module Mm2ep
|
||||
module Depend
|
||||
|
||||
class ParseCli < Thor
|
||||
desc 'parse INFILE VARS', 'Parse INFILE into tokens and evaluate vars'
|
||||
desc 'parse OPTIONS INFILE VARS', 'Parse INFILE into tokens and evaluate VARS'
|
||||
method_option :logfile, :aliases => "-l", :desc => "Logger with logfile"
|
||||
method_option :stdout, :aliases => "-f", :desc => "Logger with STDOUT"
|
||||
def parse(infile, *vars)
|
||||
logger = Logger.new('illegal_character.log') if options[:logfile]
|
||||
logger = Logger.new(STDOUT) if options[:stdout]
|
||||
line = File.read(infile).gsub(/\n/,'')
|
||||
parser = Parser.new(Lexer.new)
|
||||
lexer = Lexer.new(logger)
|
||||
parser = Parser.new(lexer)
|
||||
tab_vars = {}
|
||||
vars.each do |var|
|
||||
tab_vars[var.split('=')[0]] = var.split('=')[1]
|
||||
end
|
||||
binding.pry
|
||||
|
||||
# Give vars name and value from shell command to parser
|
||||
parser.names=tab_vars
|
||||
|
||||
|
@ -28,7 +34,6 @@ module Mm2ep
|
|||
pp token
|
||||
puts "RAW : #{line}"
|
||||
puts "EVAL: #{token.to_s}"
|
||||
|
||||
parser.check_grammar line, token
|
||||
exit 1 unless !token.nil? && token.errors.empty?
|
||||
|
||||
|
|
|
@ -1,6 +1,8 @@
|
|||
module Mm2ep
|
||||
module Depend
|
||||
class Lexer < Rly::Lex
|
||||
attr_reader :logger
|
||||
|
||||
ignore "\t\n "
|
||||
|
||||
# token :SPACE, /\s+/
|
||||
|
@ -20,8 +22,15 @@ module Mm2ep
|
|||
token :OR_OP, /OR/
|
||||
token :NOT_OP, /NOT/
|
||||
|
||||
def initialize(logger = nil)
|
||||
@logger = logger
|
||||
super()
|
||||
end
|
||||
|
||||
on_error do |t|
|
||||
puts "Illegal character #{t.value}"
|
||||
unless t.lexer.logger.nil?
|
||||
t.lexer.logger.error "Illegal character #{t.value}"
|
||||
end
|
||||
t.lexer.pos += 1
|
||||
nil
|
||||
end
|
||||
|
|
Loading…
Reference in a new issue