class DeepAlgo::IL::Backend::Latex

Public Class Methods

new() click to toggle source
# File lib/backend_manager.rb, line 131
def initialize
  @curr_backend = nil
end

Public Instance Methods

add_expr(tree) click to toggle source
# File lib/backend_manager.rb, line 145
def add_expr(tree)
  tree.elements[0].value(@curr_backend)
end
args(tree) click to toggle source
# File lib/backend_manager.rb, line 237
def args(tree)
  # parse arg, arg, arg, ...
  to_return = ''
  tree
    .elements[1]
    &.elements
    &.each do |arg|
    to_return = "#{to_return}, \
    #{arg.elements[3].value(@curr_backend)}"
  end
  "#{tree.elements[0].value(@curr_backend)}#{to_return}"
end
assignment(tree) click to toggle source
# File lib/backend_manager.rb, line 149
def assignment(tree)
  left = tree.elements[0].value(@curr_backend)
  right = tree.elements[4].value(@curr_backend)
  "#{left} \\text{equals} #{right}"
end
atom(tree) click to toggle source
# File lib/backend_manager.rb, line 192
def atom(tree)
  tree.text_value
end
call(tree) click to toggle source
# File lib/backend_manager.rb, line 225
def call(tree)
  caller_name = tree.elements[0].value(@curr_backend)
  params = tree.elements[4].value(@curr_backend)
  "#{caller_name} \\left( #{params} \\right)"
end
color(tree) click to toggle source
# File lib/backend_manager.rb, line 183
def color(tree)
  tree.elements[1].value(@curr_backend)
  # tree.text_value
end
colorcode(tree) click to toggle source
# File lib/backend_manager.rb, line 188
def colorcode(tree)
  tree.text_value
end
colored(tree) click to toggle source
# File lib/backend_manager.rb, line 177
def colored(tree)
  color = "##{tree.elements[0].value(@curr_backend)}"
  expr = tree.elements[4].value(@curr_backend)
  "\\color{ #{color} }{ #{expr} }"
end
descriptor(tree) click to toggle source
# File lib/backend_manager.rb, line 256
def descriptor(tree)
  label = tree.elements[2].value(@curr_backend)
  items = tree.elements[8].value(@curr_backend)
  "\\text{ #{label} } \
   \\left\\{\\begin{array}{l} #{items} \\\\ \\end{array}\\right."
end
descriptor_item(tree) click to toggle source
# File lib/backend_manager.rb, line 275
def descriptor_item(tree)
  label = tree.elements[4].value(@curr_backend)
  assignee = tree
             .elements[10]
             .elements[0]
             .value(@curr_backend)
  "\\text{ #{label} } = #{assignee}"
end
descriptor_items(tree) click to toggle source
# File lib/backend_manager.rb, line 263
def descriptor_items(tree)
  to_return = ''
  tree
    .elements[1]
    &.elements
    &.each do |arg|
    to_return = "#{to_return} \\\\ \
     #{arg.elements[1].value(@curr_backend)} "
  end
  "#{tree.elements[0].value(@curr_backend)} #{to_return}"
end
div_expr(tree) click to toggle source
# File lib/backend_manager.rb, line 284
def div_expr(tree)
  numerator = tree.elements[6].value(@curr_backend)
  denominator = tree.elements[14].value(@curr_backend)
  "\\dfrac{ #{numerator} }{ #{denominator} }"
end
document(tree) click to toggle source
# File lib/backend_manager.rb, line 141
def document(tree)
  tree.elements[0].value(@curr_backend)
end
dotted_expr(tree) click to toggle source
# File lib/backend_manager.rb, line 210
def dotted_expr(tree)
  to_return = ''
  if !tree.elements[1].nil? && tree.elements[1] != ''
    tree
      .elements[1]
      .elements
      .each do |son_expr|
      to_return = "#{to_return}. \
      #{son_expr.elements[2].value(@curr_backend)}"
    end
  end

  "#{tree.elements[0].value(@curr_backend)}#{to_return}"
end
dotted_terminal(tree) click to toggle source
# File lib/backend_manager.rb, line 231
def dotted_terminal(tree)
  first_expr = tree.elements[0].value(@curr_backend)
  second_expr = tree.elements[2].value(@curr_backend)
  "#{first_expr}.#{second_expr}"
end
generate(tree, curr_backend) click to toggle source
# File lib/backend_manager.rb, line 135
def generate(tree, curr_backend)
  @curr_backend = curr_backend
  latex = tree.value(@curr_backend)
  latex
end
identifier(tree) click to toggle source
# File lib/backend_manager.rb, line 294
def identifier(tree)
  tree.text_value
end
minus_expr(tree) click to toggle source
# File lib/backend_manager.rb, line 161
def minus_expr(tree)
  left = tree.elements[0].value(@curr_backend)
  right = tree.elements[4].value(@curr_backend)
  "#{left} - #{right}"
end
parenthesed(tree) click to toggle source
# File lib/backend_manager.rb, line 173
def parenthesed(tree)
  "\\left( #{tree.elements[2].value(@curr_backend)} \\right)"
end
plus_expr(tree) click to toggle source
# File lib/backend_manager.rb, line 155
def plus_expr(tree)
  left = tree.elements[0].value(@curr_backend)
  right = tree.elements[4].value(@curr_backend)
  "#{left} + #{right}"
end
tab_ref(tree) click to toggle source
# File lib/backend_manager.rb, line 250
def tab_ref(tree)
  tab = tree.elements[0].value(@curr_backend)
  index = tree.elements[6].value(@curr_backend)
  "#{tab}_{ #{index} }"
end
text(tree) click to toggle source
# File lib/backend_manager.rb, line 206
def text(tree)
  tree.text_value
end
time_expr(tree) click to toggle source
# File lib/backend_manager.rb, line 167
def time_expr(tree)
  left = tree.elements[0].value(@curr_backend)
  right = tree.elements[4].value(@curr_backend)
  "#{left} \\times #{right}"
end
unary_minus(tree) click to toggle source
# File lib/backend_manager.rb, line 290
def unary_minus(tree)
  "-#{tree.elements[2].value(@curr_backend)}"
end
while_cond_expr(tree) click to toggle source
# File lib/backend_manager.rb, line 202
def while_cond_expr(tree)
  "_{ \\text{ while #{tree.elements[4].value(@curr_backend)} } }"
end
while_expr(tree) click to toggle source
# File lib/backend_manager.rb, line 196
def while_expr(tree)
  statements = tree.elements[4].value(@curr_backend)
  cond = tree.elements[8].value(@curr_backend)
  "\\text{repeat} \\left[ #{statements} \\right]#{cond}"
end