Class: Ibex::Runtime::CST::Kind
- Inherits:
-
Object
- Object
- Ibex::Runtime::CST::Kind
- Defined in:
- lib/json5/generated_parser.rb
Overview
Grammar-specific integer kind names and interval predicates.
Instance Method Summary collapse
- #error?(kind) ⇒ Boolean
- #fetch(name) ⇒ Object
-
#fields(kind) ⇒ Object
Return the named field-to-physical-slot mapping for a kind.
-
#initialize(metadata, slots: {}) ⇒ Kind
constructor
A new instance of Kind.
- #name(kind) ⇒ Object
- #nonterminal?(kind) ⇒ Boolean
-
#nonterminal_of(kind) ⇒ Object
Map a named node kind to its physical nonterminal kind.
- #terminal?(kind) ⇒ Boolean
-
#to_h ⇒ Object
Return the serialization-safe kind metadata.
- #trivia?(kind) ⇒ Boolean
Constructor Details
#initialize(metadata, slots: {}) ⇒ Kind
Returns a new instance of Kind.
174 175 176 177 178 179 180 181 182 183 184 |
# File 'lib/json5/generated_parser.rb', line 174 def initialize(, slots: {}) @names = .fetch(:names).dup.freeze @terminal_range = .fetch(:terminal_range).dup.freeze @nonterminal_range = .fetch(:nonterminal_range).dup.freeze @named = .fetch(:named).dup.freeze @named_nonterminals = .fetch(:named_nonterminals).dup.freeze @trivia = .fetch(:trivia).dup.freeze @synthetic = .fetch(:synthetic).dup.freeze @field_slots = build_field_slots(slots) freeze end |
Instance Method Details
#error?(kind) ⇒ Boolean
209 210 211 |
# File 'lib/json5/generated_parser.rb', line 209 def error?(kind) kind == @synthetic["lexical_error_token"] || kind == @synthetic["error_node"] end |
#fetch(name) ⇒ Object
192 193 194 195 |
# File 'lib/json5/generated_parser.rb', line 192 def fetch(name) key = name.to_s @named[key] || @trivia[key] || @synthetic.fetch(key) end |
#fields(kind) ⇒ Object
Return the named field-to-physical-slot mapping for a kind.
221 |
# File 'lib/json5/generated_parser.rb', line 221 def fields(kind) = @field_slots.fetch(kind, EMPTY_FIELDS) |
#name(kind) ⇒ Object
187 188 189 |
# File 'lib/json5/generated_parser.rb', line 187 def name(kind) @names.fetch(kind) end |
#nonterminal?(kind) ⇒ Boolean
201 202 203 |
# File 'lib/json5/generated_parser.rb', line 201 def nonterminal?(kind) within?(@nonterminal_range, kind) || @named_nonterminals.key?(kind) end |
#nonterminal_of(kind) ⇒ Object
Map a named node kind to its physical nonterminal kind.
215 216 217 |
# File 'lib/json5/generated_parser.rb', line 215 def nonterminal_of(kind) @named_nonterminals.fetch(kind, kind) end |
#terminal?(kind) ⇒ Boolean
198 |
# File 'lib/json5/generated_parser.rb', line 198 def terminal?(kind) = within?(@terminal_range, kind) |
#to_h ⇒ Object
Return the serialization-safe kind metadata.
225 226 227 228 229 230 231 232 |
# File 'lib/json5/generated_parser.rb', line 225 def to_h value = { names: @names, terminal_range: @terminal_range, nonterminal_range: @nonterminal_range, named: @named, named_nonterminals: @named_nonterminals, trivia: @trivia, synthetic: @synthetic } #: metadata value.freeze end |
#trivia?(kind) ⇒ Boolean
206 |
# File 'lib/json5/generated_parser.rb', line 206 def trivia?(kind) = @trivia.value?(kind) |