import toolcontext
import phase
-import modelbuilder #FIXME useless
-
redef class ToolContext
var literal_phase: Phase = new LiteralPhase(self, null)
end
redef class AIntExpr
# The value of the literal int once computed.
var value: nullable Int
+end
+
+redef class ADecIntExpr
redef fun accept_literal(v)
do
self.value = self.n_number.text.to_i
end
end
+redef class AHexIntExpr
+ redef fun accept_literal(v)
+ do
+ self.value = self.n_hex_number.text.substring_from(2).to_hex
+ end
+end
+
redef class AFloatExpr
# The value of the literal float once computed.
var value: nullable Float
v.toolcontext.error(self.hot_location, "Invalid character literal {txt}")
return
end
- self.value = txt[1]
+ self.value = txt.chars[1]
end
end
redef fun accept_literal(v)
do
var txt = self.n_string.text
- var skip = 1
- if txt[0] == txt[1] and txt.length >= 6 then skip = 3
- self.value = txt.substring(skip, txt.length-(2*skip)).unescape_nit
+ var behead = 1
+ var betail = 1
+ if txt.chars[0] == txt.chars[1] and txt.length >= 6 then
+ behead = 3
+ betail = 3
+ if txt.chars[0] == '"' and txt.chars[3] == '\n' then behead = 4 # ignore first \n in """
+ end
+ self.value = txt.substring(behead, txt.length - behead - betail).unescape_nit
end
end