From f5b54c5fcaaf7460bda9bffc9bcad816c49adcd9 Mon Sep 17 00:00:00 2001 From: Torsten Ruger Date: Thu, 8 Dec 2016 18:54:27 +0200 Subject: [PATCH] add cli for soml->s-exp --- to_code.rb | 36 ++++++++++++++++++++++++++++++++++++ 1 file changed, 36 insertions(+) create mode 100644 to_code.rb diff --git a/to_code.rb b/to_code.rb new file mode 100644 index 0000000..238a12b --- /dev/null +++ b/to_code.rb @@ -0,0 +1,36 @@ +require 'rubygems' +require 'bundler' + +Bundler.setup(:default, :development) + +require 'soml-parser' +require "parslet/convenience" +require "ast/sexp" +require "pp" + +class Converter + include AST::Sexp + SEPERATOR = "-- -- --" + + def to_ast + file = ARGV[0] + inn = File.new(file).read.split(SEPERATOR).first + begin + syntax = Parser::Salama.new.parse(inn) + rescue + root = file.split("/").last.split(".").first + parser = Parser::Salama.new.send root.to_sym + syntax = parser.parse_with_debug(inn ) + end + result = Parser::Transform.new.apply(syntax) + + out_file = File.new(file, "w") + out_file.puts inn + out_file.puts SEPERATOR + out_file.puts result.inspect + out_file.close + end + +end + +Converter.new.to_ast