summaryrefslogtreecommitdiffstats
path: root/src/java/com/sun/gluegen/cgram
diff options
context:
space:
mode:
Diffstat (limited to 'src/java/com/sun/gluegen/cgram')
-rw-r--r--src/java/com/sun/gluegen/cgram/HeaderParser.g4
-rw-r--r--src/java/com/sun/gluegen/cgram/TNode.java10
2 files changed, 12 insertions, 2 deletions
diff --git a/src/java/com/sun/gluegen/cgram/HeaderParser.g b/src/java/com/sun/gluegen/cgram/HeaderParser.g
index f91f146..7c13968 100644
--- a/src/java/com/sun/gluegen/cgram/HeaderParser.g
+++ b/src/java/com/sun/gluegen/cgram/HeaderParser.g
@@ -597,7 +597,7 @@ enumerator[EnumType enumeration, long defaultValue] returns [long newDefaultValu
: eName:ID ( ASSIGN eVal:expr )? {
long value = 0;
if (eVal != null) {
- String vTxt = eVal.getText();
+ String vTxt = eVal.getAllChildrenText();
if (enumHash.containsKey(vTxt)) {
EnumType oldEnumType = (EnumType) enumHash.get(vTxt);
value = oldEnumType.getEnumValue(vTxt);
@@ -605,7 +605,7 @@ enumerator[EnumType enumeration, long defaultValue] returns [long newDefaultValu
try {
value = Long.decode(vTxt).longValue();
} catch (NumberFormatException e) {
- System.err.println("NumberFormatException: " + enumerator_AST_in);
+ System.err.println("NumberFormatException: ID[" + eName.getText() + "], VALUE=[" + vTxt + "]");
throw e;
}
}
diff --git a/src/java/com/sun/gluegen/cgram/TNode.java b/src/java/com/sun/gluegen/cgram/TNode.java
index f5b2c17..9fca506 100644
--- a/src/java/com/sun/gluegen/cgram/TNode.java
+++ b/src/java/com/sun/gluegen/cgram/TNode.java
@@ -153,6 +153,16 @@ public void initialize(AST tr) {
text = text_;
}
+ /** Returns the text for this node and all children */
+ public String getAllChildrenText() {
+ StringBuffer buf = new StringBuffer();
+ buf.append(getText());
+ for (TNode node = (TNode) getFirstChild(); node != null; node = (TNode) node.getNextSibling()) {
+ buf.append(node.getText());
+ }
+ return buf.toString();
+ }
+
/** return the last child of this node, or null if there is none */
public TNode getLastChild() {
TNode down = (TNode)getFirstChild();