├── .gitignore ├── .rspec ├── Gemfile ├── LICENSE ├── README.md ├── Rakefile ├── examples └── calculator.rb ├── lib ├── whittle.rb └── whittle │ ├── error.rb │ ├── errors │ ├── grammar_error.rb │ ├── parse_error.rb │ └── unconsumed_input_error.rb │ ├── non_terminal.rb │ ├── parse_error_builder.rb │ ├── parser.rb │ ├── rule.rb │ ├── rule_set.rb │ ├── terminal.rb │ └── version.rb ├── spec ├── spec_helper.rb └── unit │ ├── parse_error_builder_spec.rb │ └── parser │ ├── empty_rule_spec.rb │ ├── empty_string_spec.rb │ ├── error_reporting_spec.rb │ ├── grouped_expr_spec.rb │ ├── multiple_match_spec.rb │ ├── multiple_precedence_spec.rb │ ├── non_terminal_ambiguity_spec.rb │ ├── noop_spec.rb │ ├── one_off_start_rule_spec.rb │ ├── pass_through_parser_spec.rb │ ├── precedence_spec.rb │ ├── premature_eof_spec.rb │ ├── reduce_reduce_conflict_spec.rb │ ├── self_referential_expr_spec.rb │ ├── skipped_tokens_spec.rb │ ├── sum_parser_spec.rb │ ├── surplus_input_spec.rb │ └── typecast_parser_spec.rb └── whittle.gemspec /.gitignore: -------------------------------------------------------------------------------- 1 | *.gem 2 | .bundle 3 | Gemfile.lock 4 | pkg/* 5 | -------------------------------------------------------------------------------- /.rspec: -------------------------------------------------------------------------------- 1 | --colour 2 | -------------------------------------------------------------------------------- /Gemfile: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/d11wtq/whittle/HEAD/Gemfile -------------------------------------------------------------------------------- /LICENSE: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/d11wtq/whittle/HEAD/LICENSE -------------------------------------------------------------------------------- /README.md: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/d11wtq/whittle/HEAD/README.md -------------------------------------------------------------------------------- /Rakefile: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/d11wtq/whittle/HEAD/Rakefile -------------------------------------------------------------------------------- /examples/calculator.rb: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/d11wtq/whittle/HEAD/examples/calculator.rb -------------------------------------------------------------------------------- /lib/whittle.rb: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/d11wtq/whittle/HEAD/lib/whittle.rb -------------------------------------------------------------------------------- /lib/whittle/error.rb: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/d11wtq/whittle/HEAD/lib/whittle/error.rb -------------------------------------------------------------------------------- /lib/whittle/errors/grammar_error.rb: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/d11wtq/whittle/HEAD/lib/whittle/errors/grammar_error.rb -------------------------------------------------------------------------------- /lib/whittle/errors/parse_error.rb: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/d11wtq/whittle/HEAD/lib/whittle/errors/parse_error.rb -------------------------------------------------------------------------------- /lib/whittle/errors/unconsumed_input_error.rb: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/d11wtq/whittle/HEAD/lib/whittle/errors/unconsumed_input_error.rb -------------------------------------------------------------------------------- /lib/whittle/non_terminal.rb: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/d11wtq/whittle/HEAD/lib/whittle/non_terminal.rb -------------------------------------------------------------------------------- /lib/whittle/parse_error_builder.rb: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/d11wtq/whittle/HEAD/lib/whittle/parse_error_builder.rb -------------------------------------------------------------------------------- /lib/whittle/parser.rb: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/d11wtq/whittle/HEAD/lib/whittle/parser.rb -------------------------------------------------------------------------------- /lib/whittle/rule.rb: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/d11wtq/whittle/HEAD/lib/whittle/rule.rb -------------------------------------------------------------------------------- /lib/whittle/rule_set.rb: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/d11wtq/whittle/HEAD/lib/whittle/rule_set.rb -------------------------------------------------------------------------------- /lib/whittle/terminal.rb: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/d11wtq/whittle/HEAD/lib/whittle/terminal.rb -------------------------------------------------------------------------------- /lib/whittle/version.rb: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/d11wtq/whittle/HEAD/lib/whittle/version.rb -------------------------------------------------------------------------------- /spec/spec_helper.rb: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/d11wtq/whittle/HEAD/spec/spec_helper.rb -------------------------------------------------------------------------------- /spec/unit/parse_error_builder_spec.rb: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/d11wtq/whittle/HEAD/spec/unit/parse_error_builder_spec.rb -------------------------------------------------------------------------------- /spec/unit/parser/empty_rule_spec.rb: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/d11wtq/whittle/HEAD/spec/unit/parser/empty_rule_spec.rb -------------------------------------------------------------------------------- /spec/unit/parser/empty_string_spec.rb: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/d11wtq/whittle/HEAD/spec/unit/parser/empty_string_spec.rb -------------------------------------------------------------------------------- /spec/unit/parser/error_reporting_spec.rb: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/d11wtq/whittle/HEAD/spec/unit/parser/error_reporting_spec.rb -------------------------------------------------------------------------------- /spec/unit/parser/grouped_expr_spec.rb: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/d11wtq/whittle/HEAD/spec/unit/parser/grouped_expr_spec.rb -------------------------------------------------------------------------------- /spec/unit/parser/multiple_match_spec.rb: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/d11wtq/whittle/HEAD/spec/unit/parser/multiple_match_spec.rb -------------------------------------------------------------------------------- /spec/unit/parser/multiple_precedence_spec.rb: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/d11wtq/whittle/HEAD/spec/unit/parser/multiple_precedence_spec.rb -------------------------------------------------------------------------------- /spec/unit/parser/non_terminal_ambiguity_spec.rb: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/d11wtq/whittle/HEAD/spec/unit/parser/non_terminal_ambiguity_spec.rb -------------------------------------------------------------------------------- /spec/unit/parser/noop_spec.rb: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/d11wtq/whittle/HEAD/spec/unit/parser/noop_spec.rb -------------------------------------------------------------------------------- /spec/unit/parser/one_off_start_rule_spec.rb: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/d11wtq/whittle/HEAD/spec/unit/parser/one_off_start_rule_spec.rb -------------------------------------------------------------------------------- /spec/unit/parser/pass_through_parser_spec.rb: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/d11wtq/whittle/HEAD/spec/unit/parser/pass_through_parser_spec.rb -------------------------------------------------------------------------------- /spec/unit/parser/precedence_spec.rb: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/d11wtq/whittle/HEAD/spec/unit/parser/precedence_spec.rb -------------------------------------------------------------------------------- /spec/unit/parser/premature_eof_spec.rb: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/d11wtq/whittle/HEAD/spec/unit/parser/premature_eof_spec.rb -------------------------------------------------------------------------------- /spec/unit/parser/reduce_reduce_conflict_spec.rb: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/d11wtq/whittle/HEAD/spec/unit/parser/reduce_reduce_conflict_spec.rb -------------------------------------------------------------------------------- /spec/unit/parser/self_referential_expr_spec.rb: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/d11wtq/whittle/HEAD/spec/unit/parser/self_referential_expr_spec.rb -------------------------------------------------------------------------------- /spec/unit/parser/skipped_tokens_spec.rb: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/d11wtq/whittle/HEAD/spec/unit/parser/skipped_tokens_spec.rb -------------------------------------------------------------------------------- /spec/unit/parser/sum_parser_spec.rb: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/d11wtq/whittle/HEAD/spec/unit/parser/sum_parser_spec.rb -------------------------------------------------------------------------------- /spec/unit/parser/surplus_input_spec.rb: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/d11wtq/whittle/HEAD/spec/unit/parser/surplus_input_spec.rb -------------------------------------------------------------------------------- /spec/unit/parser/typecast_parser_spec.rb: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/d11wtq/whittle/HEAD/spec/unit/parser/typecast_parser_spec.rb -------------------------------------------------------------------------------- /whittle.gemspec: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/d11wtq/whittle/HEAD/whittle.gemspec --------------------------------------------------------------------------------