lib/lrama/option_parser.rb in lrama-0.6.3 vs lib/lrama/option_parser.rb in lrama-0.6.4
- old
+ new
@@ -62,57 +62,70 @@
o.separator ''
o.separator 'Output:'
o.on('-H', '--header=[FILE]', 'also produce a header file named FILE') {|v| @options.header = true; @options.header_file = v }
o.on('-d', 'also produce a header file') { @options.header = true }
o.on('-r', '--report=THINGS', Array, 'also produce details on the automaton') {|v| @report = v }
+ o.on_tail ''
+ o.on_tail 'Valid Reports:'
+ o.on_tail " #{VALID_REPORTS.join(' ')}"
+
o.on('--report-file=FILE', 'also produce details on the automaton output to a file named FILE') {|v| @options.report_file = v }
o.on('-o', '--output=FILE', 'leave output to FILE') {|v| @options.outfile = v }
+
o.on('--trace=THINGS', Array, 'also output trace logs at runtime') {|v| @trace = v }
+ o.on_tail ''
+ o.on_tail 'Valid Traces:'
+ o.on_tail " #{VALID_TRACES.join(' ')}"
+
o.on('-v', 'reserved, do nothing') { }
o.separator ''
o.separator 'Error Recovery:'
o.on('-e', 'enable error recovery') {|v| @options.error_recovery = true }
o.separator ''
o.separator 'Other options:'
o.on('-V', '--version', "output version information and exit") {|v| puts "lrama #{Lrama::VERSION}"; exit 0 }
o.on('-h', '--help', "display this help and exit") {|v| puts o; exit 0 }
- o.separator ''
+ o.on_tail
o.parse!(argv)
end
end
+ BISON_REPORTS = %w[states itemsets lookaheads solved counterexamples cex all none]
+ OTHER_REPORTS = %w[verbose]
+ NOT_SUPPORTED_REPORTS = %w[cex none]
+ VALID_REPORTS = BISON_REPORTS + OTHER_REPORTS - NOT_SUPPORTED_REPORTS
+
def validate_report(report)
- bison_list = %w[states itemsets lookaheads solved counterexamples cex all none]
- others = %w[verbose]
- list = bison_list + others
- not_supported = %w[cex none]
+ list = VALID_REPORTS
h = { grammar: true }
report.each do |r|
- if list.include?(r) && !not_supported.include?(r)
+ if list.include?(r)
h[r.to_sym] = true
else
raise "Invalid report option \"#{r}\"."
end
end
if h[:all]
- (bison_list - not_supported).each do |r|
+ (BISON_REPORTS - NOT_SUPPORTED_REPORTS).each do |r|
h[r.to_sym] = true
end
h.delete(:all)
end
return h
end
+ VALID_TRACES = %w[
+ none locations scan parse automaton bitsets
+ closure grammar rules resource sets muscles tools
+ m4-early m4 skeleton time ielr cex all
+ ]
+
def validate_trace(trace)
- list = %w[
- none locations scan parse automaton bitsets
- closure grammar rules resource sets muscles tools
- m4-early m4 skeleton time ielr cex all
- ]
+ list = VALID_TRACES
h = {}
trace.each do |t|
if list.include?(t)
h[t.to_sym] = true