Sha256: 9edca845974cfd46d7cc2206055ee1d4f8f2d7bc280e9edbcd82f709d765f7ca
Contents?: true
Size: 1.17 KB
Versions: 6
Compression:
Stored size: 1.17 KB
Contents
require "forwardable" require "lrama/grammar/code/destructor_code" require "lrama/grammar/code/initial_action_code" require "lrama/grammar/code/no_reference_code" require "lrama/grammar/code/printer_code" require "lrama/grammar/code/rule_action" module Lrama class Grammar class Code extend Forwardable def_delegators "token_code", :s_value, :line, :column, :references attr_reader :type, :token_code def initialize(type:, token_code:) @type = type @token_code = token_code end def ==(other) self.class == other.class && self.type == other.type && self.token_code == other.token_code end # $$, $n, @$, @n are translated to C code def translated_code t_code = s_value.dup references.reverse_each do |ref| first_column = ref.first_column last_column = ref.last_column str = reference_to_c(ref) t_code[first_column...last_column] = str end return t_code end private def reference_to_c(ref) raise NotImplementedError.new("#reference_to_c is not implemented") end end end end
Version data entries
6 entries across 6 versions & 1 rubygems