| JLiteralLong.java |
1 // Copyright 2012- Bill Campbell, Swami Iyer and Bahar Akbal-Delibas
2
3 package jminusminus;
4
5 import static jminusminus.CLConstants.*;
6
7 /**
8 * The AST node for a long literal.
9 */
10 class JLiteralLong extends JExpression {
11 // String representation of the literal.
12 private String text;
13
14 /**
15 * Constructs an AST node for a long literal given its line number and string representation.
16 *
17 * @param line line in which the literal occurs in the source file.
18 * @param text string representation of the literal.
19 */
20 public JLiteralLong(int line, String text) {
21 super(line);
22 this.text = text;
23 }
24
25 /**
26 * Returns the literal as a long.
27 *
28 * @return the literal as a long.
29 */
30 public long toLong() {
31 return Long.parseLong(text.substring(0, text.length() - 1));
32 }
33
34 /**
35 * {@inheritDoc}
36 */
37 public JExpression analyze(Context context) {
38 // TODO
39 return this;
40 }
41
42 /**
43 * {@inheritDoc}
44 */
45 public void codegen(CLEmitter output) {
46 // TODO
47 }
48
49 /**
50 * {@inheritDoc}
51 */
52 public void toJSON(JSONElement json) {
53 JSONElement e = new JSONElement();
54 json.addChild("JLiteralLong:" + line, e);
55 e.addAttribute("type", type == null ? "" : type.toString());
56 e.addAttribute("value", text);
57 }
58 }
59