Sha256: ecfe944f765220776c27cdc50fe6e7d9b5c66f21a557ee01b85c29af1be4d96f
Contents?: true
Size: 1.17 KB
Versions: 3
Compression:
Stored size: 1.17 KB
Contents
# frozen_string_literal: true require "forwardable" require_relative "code/destructor_code" require_relative "code/initial_action_code" require_relative "code/no_reference_code" require_relative "code/printer_code" require_relative "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
3 entries across 3 versions & 1 rubygems
Version | Path |
---|---|
lrama-0.7.0 | lib/lrama/grammar/code.rb |
lrama-0.6.11 | lib/lrama/grammar/code.rb |
lrama-0.6.10 | lib/lrama/grammar/code.rb |