33 lines
672 B
Crystal
33 lines
672 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
|
||
|
|
||
|
|
||
|
specs = Specs.parse recipe_file_name
|
||
|
pp! specs
|