Class: JSGF::Parser
- Inherits:
-
Racc::Parser
- Object
- Racc::Parser
- JSGF::Parser
- Defined in:
- lib/jsgf/parser.rb
Constant Summary collapse
- Racc_arg =
[ racc_action_table, racc_action_check, racc_action_default, racc_action_pointer, racc_goto_table, racc_goto_check, racc_goto_default, racc_goto_pointer, racc_nt_base, racc_reduce_table, racc_token_table, racc_shift_n, racc_reduce_n, racc_use_result_var ]
- Racc_token_to_s_table =
[ "$end", "error", "GRAMMAR", "HEADER", "IMPORT", "PUBLIC", "TAG", "TOKEN", "WEIGHT", "\";\"", "\"<\"", "\">\"", "\"=\"", "\"|\"", "\"(\"", "\")\"", "\"[\"", "\"]\"", "\"*\"", "\"+\"", "$start", "grammar", "header", "rule_list", "import_header", "jsgf_header", "grammar_header", "import_statement", "rule_name", "rule", "alternate_list", "rule_expansion", "tagged_rule_item", "rule_item", "rule_atom", "weighted_item", "rule_group", "rule_optional" ]
- Racc_debug_parser =
false
Instance Attribute Summary collapse
-
#grammar_name ⇒ Object
readonly
Returns the value of attribute grammar_name.
-
#handler ⇒ Object
readonly
Returns the value of attribute handler.
Instance Method Summary collapse
-
#_reduce_15(val, _values, result) ⇒ Object
reduce 14 omitted.
- #_reduce_16(val, _values, result) ⇒ Object
- #_reduce_17(val, _values, result) ⇒ Object
- #_reduce_18(val, _values, result) ⇒ Object
- #_reduce_19(val, _values, result) ⇒ Object
- #_reduce_20(val, _values, result) ⇒ Object
- #_reduce_21(val, _values, result) ⇒ Object
-
#_reduce_23(val, _values, result) ⇒ Object
reduce 22 omitted.
-
#_reduce_26(val, _values, result) ⇒ Object
reduce 25 omitted.
- #_reduce_27(val, _values, result) ⇒ Object
- #_reduce_28(val, _values, result) ⇒ Object
- #_reduce_29(val, _values, result) ⇒ Object
-
#_reduce_33(val, _values, result) ⇒ Object
reduce 32 omitted.
- #_reduce_34(val, _values, result) ⇒ Object
-
#_reduce_6(val, _values, result) ⇒ Object
reduce 5 omitted.
- #_reduce_7(val, _values, result) ⇒ Object
- #_reduce_8(val, _values, result) ⇒ Object
- #_reduce_9(val, _values, result) ⇒ Object
- #_reduce_none(val, _values, result) ⇒ Object
- #define_alternation(*args) ⇒ Object
- #define_atom(atom, weight = 1.0, tags = []) ⇒ Object
- #define_optional(*args) ⇒ Object
- #define_rule(name, visibility = :private, *args) ⇒ Object
-
#initialize(tokenizer) ⇒ Parser
constructor
A new instance of Parser.
- #next_token ⇒ Object
- #parse ⇒ Object
Constructor Details
#initialize(tokenizer) ⇒ Parser
Returns a new instance of Parser.
22 23 24 25 26 27 28 |
# File 'lib/jsgf/parser.rb', line 22 def initialize(tokenizer) @private_rules = {} @public_rules = {} tokenizer = JSGF::Tokenizer.new(tokenizer) if tokenizer.is_a?(String) @tokenizer = tokenizer super() end |
Instance Attribute Details
#grammar_name ⇒ Object (readonly)
Returns the value of attribute grammar_name.
19 20 21 |
# File 'lib/jsgf/parser.rb', line 19 def grammar_name @grammar_name end |
#handler ⇒ Object (readonly)
Returns the value of attribute handler.
20 21 22 |
# File 'lib/jsgf/parser.rb', line 20 def handler @handler end |
Instance Method Details
#_reduce_15(val, _values, result) ⇒ Object
reduce 14 omitted
303 304 305 306 |
# File 'lib/jsgf/parser.rb', line 303 def _reduce_15(val, _values, result) result = val[1] result end |
#_reduce_16(val, _values, result) ⇒ Object
308 309 310 311 |
# File 'lib/jsgf/parser.rb', line 308 def _reduce_16(val, _values, result) define_rule(val[0], :private, *(val[2..-2])) result end |
#_reduce_17(val, _values, result) ⇒ Object
313 314 315 316 |
# File 'lib/jsgf/parser.rb', line 313 def _reduce_17(val, _values, result) define_rule(val[1], :public, val[3]) result end |
#_reduce_18(val, _values, result) ⇒ Object
318 319 320 321 |
# File 'lib/jsgf/parser.rb', line 318 def _reduce_18(val, _values, result) result = val.first result end |
#_reduce_19(val, _values, result) ⇒ Object
323 324 325 326 |
# File 'lib/jsgf/parser.rb', line 323 def _reduce_19(val, _values, result) result = define_alternation(*val) result end |
#_reduce_20(val, _values, result) ⇒ Object
328 329 330 331 |
# File 'lib/jsgf/parser.rb', line 328 def _reduce_20(val, _values, result) result = val.first result end |
#_reduce_21(val, _values, result) ⇒ Object
333 334 335 336 |
# File 'lib/jsgf/parser.rb', line 333 def _reduce_21(val, _values, result) result = val result end |
#_reduce_23(val, _values, result) ⇒ Object
reduce 22 omitted
340 341 342 343 |
# File 'lib/jsgf/parser.rb', line 340 def _reduce_23(val, _values, result) val[0][:tags].push(val[1]); result = val[0] result end |
#_reduce_26(val, _values, result) ⇒ Object
reduce 25 omitted
349 350 351 352 |
# File 'lib/jsgf/parser.rb', line 349 def _reduce_26(val, _values, result) val[1][:weight] = val.first[1..-2].to_f; result = val[1] result end |
#_reduce_27(val, _values, result) ⇒ Object
354 355 356 357 |
# File 'lib/jsgf/parser.rb', line 354 def _reduce_27(val, _values, result) result = val[1] result end |
#_reduce_28(val, _values, result) ⇒ Object
359 360 361 362 |
# File 'lib/jsgf/parser.rb', line 359 def _reduce_28(val, _values, result) result = define_optional(val[1]) result end |
#_reduce_29(val, _values, result) ⇒ Object
364 365 366 367 |
# File 'lib/jsgf/parser.rb', line 364 def _reduce_29(val, _values, result) result = define_atom(val.first) result end |
#_reduce_33(val, _values, result) ⇒ Object
reduce 32 omitted
375 376 377 378 |
# File 'lib/jsgf/parser.rb', line 375 def _reduce_33(val, _values, result) result = JSGF::Repetition.new(val[0], 0) result end |
#_reduce_34(val, _values, result) ⇒ Object
380 381 382 383 |
# File 'lib/jsgf/parser.rb', line 380 def _reduce_34(val, _values, result) result = JSGF::Repetition.new(val[0], 1) result end |
#_reduce_6(val, _values, result) ⇒ Object
reduce 5 omitted
273 274 275 276 |
# File 'lib/jsgf/parser.rb', line 273 def _reduce_6(val, _values, result) @version = val[1]; result end |
#_reduce_7(val, _values, result) ⇒ Object
278 279 280 281 |
# File 'lib/jsgf/parser.rb', line 278 def _reduce_7(val, _values, result) @version = val[1]; @charset = val[2]; result end |
#_reduce_8(val, _values, result) ⇒ Object
283 284 285 286 |
# File 'lib/jsgf/parser.rb', line 283 def _reduce_8(val, _values, result) @version = val[1]; @charset = val[2]; @locale = val[3]; result end |
#_reduce_9(val, _values, result) ⇒ Object
288 289 290 291 |
# File 'lib/jsgf/parser.rb', line 288 def _reduce_9(val, _values, result) @grammar_name = val[1] result end |
#_reduce_none(val, _values, result) ⇒ Object
385 386 387 |
# File 'lib/jsgf/parser.rb', line 385 def _reduce_none(val, _values, result) val[0] end |
#define_alternation(*args) ⇒ Object
30 31 32 33 34 35 36 37 |
# File 'lib/jsgf/parser.rb', line 30 def define_alternation(*args) if args.first.is_a?(JSGF::Alternation) args.first.push *(args.drop(2)) args.first else JSGF::Alternation.new(*(args.each_slice(2).map {|a,b| a})) end end |
#define_atom(atom, weight = 1.0, tags = []) ⇒ Object
48 49 50 |
# File 'lib/jsgf/parser.rb', line 48 def define_atom(atom, weight=1.0, =[]) {atom:atom, weight:weight, tags:[]} end |
#define_optional(*args) ⇒ Object
39 40 41 42 43 44 45 46 |
# File 'lib/jsgf/parser.rb', line 39 def define_optional(*args) if args.first.respond_to?(:optional) args.first.optional = true args.first else JSGF::Optional.new(*args) end end |
#define_rule(name, visibility = :private, *args) ⇒ Object
52 53 54 55 56 57 58 59 60 |
# File 'lib/jsgf/parser.rb', line 52 def define_rule(name, visibility=:private, *args) r = {name:name, visibility:visibility, atoms:args} if visibility == :private @private_rules[name] = r else @public_rules[name] = r end r end |
#next_token ⇒ Object
62 63 64 |
# File 'lib/jsgf/parser.rb', line 62 def next_token @tokenizer.next_token end |
#parse ⇒ Object
66 67 68 69 70 71 72 73 |
# File 'lib/jsgf/parser.rb', line 66 def parse do_parse JSGF::Grammar.new( character_encoding:@charset, locale:@locale, private_rules:@private_rules, public_rules:@public_rules, version:@version) end |