36 lines
756 B
Crystal
36 lines
756 B
Crystal
require "option_parser"
|
|
require "./src/spec"
|
|
|
|
def print_tree(tree, indent = 0)
|
|
indent.times { STDOUT << " " }
|
|
case tree
|
|
when Pegasus::Generated::TerminalTree
|
|
STDOUT << "Terminal: "
|
|
STDOUT.puts tree.string
|
|
when Pegasus::Generated::NonterminalTree
|
|
STDOUT << "Nonterminal: " << tree.name
|
|
STDOUT.puts
|
|
tree.children.each { |it| print_tree(it, indent + 1) }
|
|
end
|
|
end
|
|
|
|
recipe_file_name = "some-non-existant-file"
|
|
|
|
OptionParser.parse! do |parser|
|
|
parser.on "-f file", "--file file", "File to parse." do |f|
|
|
recipe_file_name = f
|
|
end
|
|
|
|
parser.on "-h", "--help", "Show this help" do
|
|
puts parser
|
|
exit 0
|
|
end
|
|
end
|
|
|
|
|
|
options = Hash(String,String).new
|
|
options["someoptionexample"] = "option"
|
|
|
|
specs = Specs.parse recipe_file_name, options
|
|
pp! specs
|