Class: Ibex::Runtime::CST::SyntaxToken
- Inherits:
-
Object
- Object
- Ibex::Runtime::CST::SyntaxToken
- Defined in:
- lib/json5/generated_parser.rb
Overview
Lightweight Red facade for one Green token occurrence.
Instance Attribute Summary collapse
- #green ⇒ Object readonly
- #index ⇒ Object readonly
- #offset ⇒ Object readonly
- #parent ⇒ Object readonly
Instance Method Summary collapse
- #==(other) ⇒ Object
- #children ⇒ Object
- #contains_error? ⇒ Boolean
- #deconstruct ⇒ Object
- #deconstruct_keys(_keys) ⇒ Object
- #error? ⇒ Boolean
- #full_span ⇒ Object
- #full_text ⇒ Object (also: #to_source)
-
#initialize(green:, parent:, index:, offset:) ⇒ SyntaxToken
constructor
A new instance of SyntaxToken.
- #kind ⇒ Object
- #kind_name ⇒ Object
- #leading_trivia ⇒ Object
- #location ⇒ Object
- #missing? ⇒ Boolean
- #next_sibling ⇒ Object
- #prev_sibling ⇒ Object
- #replace_with(replacement) ⇒ Object
- #root ⇒ Object
- #same_node?(other) ⇒ Boolean
- #span ⇒ Object
- #symbol ⇒ Object
- #text ⇒ Object
- #to_h ⇒ Object
-
#value ⇒ Object
Compatibility projection for the legacy token API.
- #with_leading(trivia) ⇒ Object
- #with_text(value) ⇒ Object
- #with_trailing(trivia) ⇒ Object
Constructor Details
#initialize(green:, parent:, index:, offset:) ⇒ SyntaxToken
Returns a new instance of SyntaxToken.
970 971 972 973 974 975 976 |
# File 'lib/json5/generated_parser.rb', line 970 def initialize(green:, parent:, index:, offset:) @green = green @parent = parent @index = index @offset = offset freeze end |
Instance Attribute Details
#green ⇒ Object (readonly)
964 965 966 |
# File 'lib/json5/generated_parser.rb', line 964 def green @green end |
#index ⇒ Object (readonly)
966 967 968 |
# File 'lib/json5/generated_parser.rb', line 966 def index @index end |
#offset ⇒ Object (readonly)
967 968 969 |
# File 'lib/json5/generated_parser.rb', line 967 def offset @offset end |
#parent ⇒ Object (readonly)
965 966 967 |
# File 'lib/json5/generated_parser.rb', line 965 def parent @parent end |
Instance Method Details
#==(other) ⇒ Object
1081 1082 1083 |
# File 'lib/json5/generated_parser.rb', line 1081 def ==(other) other.is_a?(SyntaxToken) && @green == other.green end |
#children ⇒ Object
999 |
# File 'lib/json5/generated_parser.rb', line 999 def children = [] |
#contains_error? ⇒ Boolean
1027 |
# File 'lib/json5/generated_parser.rb', line 1027 def contains_error? = @green.flags.anybits?(Flags::CONTAINS_ERROR) |
#deconstruct ⇒ Object
1086 |
# File 'lib/json5/generated_parser.rb', line 1086 def deconstruct = [] |
#deconstruct_keys(_keys) ⇒ Object
1089 1090 1091 1092 1093 1094 |
# File 'lib/json5/generated_parser.rb', line 1089 def deconstruct_keys(_keys) { kind: :token, symbol: symbol, value: value, location: location, leading_trivia: leading_trivia }.freeze end |
#error? ⇒ Boolean
1021 |
# File 'lib/json5/generated_parser.rb', line 1021 def error? = @parent.kinds.error?(kind) |
#full_span ⇒ Object
1006 1007 1008 1009 |
# File 'lib/json5/generated_parser.rb', line 1006 def full_span ensure_coordinates! @offset...(@offset + @green.full_width) end |
#full_text ⇒ Object Also known as: to_source
1002 |
# File 'lib/json5/generated_parser.rb', line 1002 def full_text = @green.to_source |
#kind ⇒ Object
979 |
# File 'lib/json5/generated_parser.rb', line 979 def kind = @green.kind |
#kind_name ⇒ Object
982 |
# File 'lib/json5/generated_parser.rb', line 982 def kind_name = @parent.kinds.name(kind) |
#leading_trivia ⇒ Object
996 |
# File 'lib/json5/generated_parser.rb', line 996 def leading_trivia = @green.leading |
#location ⇒ Object
1018 |
# File 'lib/json5/generated_parser.rb', line 1018 def location = @parent.source_text.location(span) |
#missing? ⇒ Boolean
1024 |
# File 'lib/json5/generated_parser.rb', line 1024 def missing? = @green.flags.anybits?(Flags::CONTAINS_MISSING) |
#next_sibling ⇒ Object
1063 |
# File 'lib/json5/generated_parser.rb', line 1063 def next_sibling = @parent.children[@index + 1] |
#prev_sibling ⇒ Object
1066 1067 1068 1069 1070 |
# File 'lib/json5/generated_parser.rb', line 1066 def prev_sibling return if @index.zero? @parent.children[@index - 1] end |
#replace_with(replacement) ⇒ Object
1030 |
# File 'lib/json5/generated_parser.rb', line 1030 def replace_with(replacement) = Editing.replace(self, replacement) |
#same_node?(other) ⇒ Boolean
1076 1077 1078 |
# File 'lib/json5/generated_parser.rb', line 1076 def same_node?(other) root.equal?(other.root) && @green.equal?(other.green) && @offset == other.offset end |
#span ⇒ Object
1012 1013 1014 1015 |
# File 'lib/json5/generated_parser.rb', line 1012 def span ensure_coordinates! (@offset + @green.leading_width)...(@offset + @green.full_width - @green.trailing_width) end |
#symbol ⇒ Object
985 |
# File 'lib/json5/generated_parser.rb', line 985 def symbol = kind_name |
#text ⇒ Object
988 |
# File 'lib/json5/generated_parser.rb', line 988 def text = @green.text |
#to_h ⇒ Object
1097 |
# File 'lib/json5/generated_parser.rb', line 1097 def to_h = deconstruct_keys(nil) |
#value ⇒ Object
Compatibility projection for the legacy token API. Semantic lexer values remain on the parser value path; syntax exposes source bytes.
993 |
# File 'lib/json5/generated_parser.rb', line 993 def value = text |
#with_leading(trivia) ⇒ Object
1043 1044 1045 1046 1047 1048 1049 1050 |
# File 'lib/json5/generated_parser.rb', line 1043 def with_leading(trivia) replace_with( GreenToken.new( kind: @green.kind, text: @green.text, leading: trivia, trailing: @green.trailing, flags: @green.flags, expected_kind: @green.expected_kind ) ) end |
#with_text(value) ⇒ Object
1033 1034 1035 1036 1037 1038 1039 1040 |
# File 'lib/json5/generated_parser.rb', line 1033 def with_text(value) replace_with( GreenToken.new( kind: @green.kind, text: value, leading: @green.leading, trailing: @green.trailing, flags: @green.flags, expected_kind: @green.expected_kind ) ) end |
#with_trailing(trivia) ⇒ Object
1053 1054 1055 1056 1057 1058 1059 1060 |
# File 'lib/json5/generated_parser.rb', line 1053 def with_trailing(trivia) replace_with( GreenToken.new( kind: @green.kind, text: @green.text, leading: @green.leading, trailing: trivia, flags: @green.flags, expected_kind: @green.expected_kind ) ) end |