public class IntegerLiteral extends Expression {
	private long value;
	private int width;
	private boolean signed;
	private Type type;

	public IntegerLiteral(long value, int width, boolean signed) {
		this.value = value;
		this.width = width;
		this.signed = signed;
		this.type = new PrimitiveType(width, signed);
	}

	public long getValue() {
		return value;
	}
	public int getWidth() {
		return width;
	}
	public boolean isSigned() {
		return signed;
	}
	public Type getType() {
		return type;
	}

	public Expression evaluate() {
		return this;
	}
}

@@ -309,16 +309,155 @@
 igned);%0A
+%09%09if (this.signed && this.value %3C 0) %7B%0A%09%09%09this.value %7C= ~((1 %3C%3C (8 * width)) - 1);%0A%09%09%7D else %7B%0A%09%09%09this.value &= (1 %3C%3C (8 * width)) - 1;%0A%09%09%7D%0A
 %09%7D%0A%0A%09pub

add truncation in IntegerLiteral