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
|