end
end
+redef class AImpliesExpr
+ redef fun generate_icode(v)
+ do
+ # Prepare result
+ var reg = v.new_register(stype)
+
+ # Process left operand (in a if/then)
+ var iif = new IIf(v.generate_expr(n_expr))
+ v.stmt(iif)
+ var seq_old = v.seq
+ v.seq = iif.else_seq
+ v.add_assignment(reg, v.lit_true_reg)
+
+ # Process right operand (in the else)
+ v.seq = iif.then_seq
+ v.add_assignment(reg, v.generate_expr(n_expr2))
+
+ v.seq = seq_old
+ return reg
+ end
+end
+
redef class AAndExpr
redef fun generate_icode(v)
do
# Compute _cstring and _cstring_length using string_text
protected fun compute_string_infos
do
- var len = 0
- var str = string_text
+ var str = n_string.text
+ if str.length >= 6 and str[0] == str[1] then
+ str = str.substring(3, str.length - 6)
+ else
+ str = str.substring(1, str.length - 2)
+ end
var res = new Buffer
+ var len = 0
var i = 0
while i < str.length do
var c = str[i]
res.add(c)
end
c = c2
+ else if c == '"' then
+ res.add('\\')
+ else if c == '\n' then
+ res.add('\\')
+ c = 'n'
end
len = len + 1
res.add(c)