aboutsummaryrefslogtreecommitdiffstats
path: root/tool/lrama/lib/lrama/grammar/reference.rb
blob: bc178e104d1b746d5eeeebf4239a1c78de66c801 (plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
# type: :dollar or :at
# ex_tag: "$<tag>1" (Optional)

module Lrama
  class Grammar
    class Reference < Struct.new(:type, :value, :ex_tag, :first_column, :last_column, :referring_symbol, :position_in_rhs, keyword_init: true)
      def tag
        if ex_tag
          ex_tag
        else
          # FIXME: Remove this class check
          if referring_symbol.is_a?(Symbol)
            referring_symbol.tag
          else
            # Lrama::Lexer::Token (User_code) case
            nil
          end
        end
      end
    end
  end
end