Class: Ibex::IR::GrammarSymbol

Inherits:
Object
  • Object
show all
Defined in:
lib/ibex/ir/grammar_ir.rb,
sig/ibex/ir/grammar_ir.rbs

Overview

An interned terminal or nonterminal.

Instance Attribute Summary collapse

Instance Method Summary collapse

Constructor Details

#initialize(id:, name:, kind:, reserved: false, precedence: nil, location: nil, display_name: nil, semantic_type: nil, documentation: nil) ⇒ GrammarSymbol

Returns a new instance of GrammarSymbol.

RBS:

  • (id: Integer, name: String, kind: Symbol, ?reserved: bool, ?precedence: precedence?, ?location: location?, ?display_name: String?, ?semantic_type: String?, ?documentation: String?) -> void

Parameters:

  • id: (Integer)
  • name: (String)
  • kind: (Symbol)
  • reserved: (Boolean) (defaults to: false)
  • precedence: (precedence, nil) (defaults to: nil)
  • location: (location, nil) (defaults to: nil)
  • display_name: (String, nil) (defaults to: nil)
  • semantic_type: (String, nil) (defaults to: nil)
  • documentation: (String, nil) (defaults to: nil)


36
37
38
39
40
41
42
43
44
45
46
47
48
# File 'lib/ibex/ir/grammar_ir.rb', line 36

def initialize(id:, name:, kind:, reserved: false, precedence: nil, location: nil, display_name: nil,
               semantic_type: nil, documentation: nil)
  @id = id
  @name = name.freeze
  @kind = kind.to_sym
  @reserved = reserved
  @precedence = IR.deep_freeze(precedence)
  @location = IR.deep_freeze(location)
  @display_name = display_name&.freeze
  @semantic_type = semantic_type&.freeze
  @documentation = documentation&.freeze
  freeze
end

Instance Attribute Details

#display_nameString? (readonly)

Signature:

  • String?

Returns:

  • (String, nil)


30
31
32
# File 'lib/ibex/ir/grammar_ir.rb', line 30

def display_name
  @display_name
end

#documentationString? (readonly)

Signature:

  • String?

Returns:

  • (String, nil)


32
33
34
# File 'lib/ibex/ir/grammar_ir.rb', line 32

def documentation
  @documentation
end

#idInteger (readonly)

Signature:

  • Integer

Returns:

  • (Integer)


24
25
26
# File 'lib/ibex/ir/grammar_ir.rb', line 24

def id
  @id
end

#kindSymbol (readonly)

Signature:

  • Symbol

Returns:

  • (Symbol)


26
27
28
# File 'lib/ibex/ir/grammar_ir.rb', line 26

def kind
  @kind
end

#locationlocation? (readonly)

Signature:

  • location?

Returns:



29
30
31
# File 'lib/ibex/ir/grammar_ir.rb', line 29

def location
  @location
end

#nameString (readonly)

Signature:

  • String

Returns:

  • (String)


25
26
27
# File 'lib/ibex/ir/grammar_ir.rb', line 25

def name
  @name
end

#precedenceprecedence? (readonly)

Signature:

  • precedence?

Returns:



28
29
30
# File 'lib/ibex/ir/grammar_ir.rb', line 28

def precedence
  @precedence
end

#reservedBoolean (readonly)

Signature:

  • bool

Returns:

  • (Boolean)


27
28
29
# File 'lib/ibex/ir/grammar_ir.rb', line 27

def reserved
  @reserved
end

#semantic_typeString? (readonly)

Signature:

  • String?

Returns:

  • (String, nil)


31
32
33
# File 'lib/ibex/ir/grammar_ir.rb', line 31

def semantic_type
  @semantic_type
end

Instance Method Details

#nonterminal?Boolean

RBS:

  • () -> bool

Returns:

  • (Boolean)


53
# File 'lib/ibex/ir/grammar_ir.rb', line 53

def nonterminal? = @kind == :nonterminal

#terminal?Boolean

RBS:

  • () -> bool

Returns:

  • (Boolean)


51
52
# File 'lib/ibex/ir/grammar_ir.rb', line 51

def terminal? = @kind == :terminal
# @rbs () -> bool

#to_h(schema_version: SCHEMA_VERSION) ⇒ Hash[Symbol, untyped]

RBS:

  • (?schema_version: Integer) -> Hash[Symbol, untyped]

Parameters:

  • schema_version: (Integer) (defaults to: SCHEMA_VERSION)

Returns:

  • (Hash[Symbol, untyped])


56
57
58
59
60
61
62
63
# File 'lib/ibex/ir/grammar_ir.rb', line 56

def to_h(schema_version: SCHEMA_VERSION)
  value = { id: @id, name: @name, kind: @kind, reserved: @reserved,
            prec: @precedence, loc: @location } #: Hash[Symbol, untyped]
  value[:display_name] = @display_name if @display_name
  value[:semantic_type] = @semantic_type if @semantic_type
  value[:doc] = @documentation if schema_version >= 2
  value
end