Class: DeepAlgo::IL::Backend::Latex

Inherits:
Generic
  • Object
show all
Defined in:
lib/backend_manager.rb

Instance Method Summary collapse

Methods inherited from Generic

#expr, #factor, #number, #terminal

Constructor Details

#initializeLatex

Returns a new instance of Latex.



131
132
133
# File 'lib/backend_manager.rb', line 131

def initialize
  @curr_backend = nil
end

Instance Method Details

#add_expr(tree) ⇒ Object



145
146
147
# File 'lib/backend_manager.rb', line 145

def add_expr(tree)
  tree.elements[0].value(@curr_backend)
end

#args(tree) ⇒ Object



237
238
239
240
241
242
243
244
245
246
247
248
# 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) ⇒ Object



149
150
151
152
153
# 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) ⇒ Object



192
193
194
# File 'lib/backend_manager.rb', line 192

def atom(tree)
  tree.text_value
end

#call(tree) ⇒ Object



225
226
227
228
229
# 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) ⇒ Object



183
184
185
186
# File 'lib/backend_manager.rb', line 183

def color(tree)
  tree.elements[1].value(@curr_backend)
  # tree.text_value
end

#colorcode(tree) ⇒ Object



188
189
190
# File 'lib/backend_manager.rb', line 188

def colorcode(tree)
  tree.text_value
end

#colored(tree) ⇒ Object



177
178
179
180
181
# 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) ⇒ Object



256
257
258
259
260
261
# 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) ⇒ Object



275
276
277
278
279
280
281
282
# 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) ⇒ Object



263
264
265
266
267
268
269
270
271
272
273
# 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) ⇒ Object



284
285
286
287
288
# 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) ⇒ Object



141
142
143
# File 'lib/backend_manager.rb', line 141

def document(tree)
  tree.elements[0].value(@curr_backend)
end

#dotted_expr(tree) ⇒ Object



210
211
212
213
214
215
216
217
218
219
220
221
222
223
# 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) ⇒ Object



231
232
233
234
235
# 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) ⇒ Object



135
136
137
138
139
# 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) ⇒ Object



294
295
296
# File 'lib/backend_manager.rb', line 294

def identifier(tree)
  tree.text_value
end

#minus_expr(tree) ⇒ Object



161
162
163
164
165
# 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) ⇒ Object



173
174
175
# File 'lib/backend_manager.rb', line 173

def parenthesed(tree)
  "\\left( #{tree.elements[2].value(@curr_backend)} \\right)"
end

#plus_expr(tree) ⇒ Object



155
156
157
158
159
# 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) ⇒ Object



250
251
252
253
254
# 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) ⇒ Object



206
207
208
# File 'lib/backend_manager.rb', line 206

def text(tree)
  tree.text_value
end

#time_expr(tree) ⇒ Object



167
168
169
170
171
# 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) ⇒ Object



290
291
292
# File 'lib/backend_manager.rb', line 290

def unary_minus(tree)
  "-#{tree.elements[2].value(@curr_backend)}"
end

#while_cond_expr(tree) ⇒ Object



202
203
204
# File 'lib/backend_manager.rb', line 202

def while_cond_expr(tree)
  "_{ \\text{ while #{tree.elements[4].value(@curr_backend)} } }"
end

#while_expr(tree) ⇒ Object



196
197
198
199
200
# 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