/**
  * @see parser.IDLParserVisitor#visit(ASTprimary_expr, Object)
  */
 public Object visit(ASTprimary_expr node, Object data) {
     // possible cases (one child):
     // scoped_name
     // literal
     // const_exp
     Object result = node.jjtGetChild(0).jjtAccept(this, data);
     if (result is SymbolValue) {
         // a scoped name, which points to a symbol containing a value
         return ((SymbolValue)result).GetValueAsLiteral();
     } else if (result is Symbol) {
         // A Symbol, but no value symbol, TODO: check if this is correct behaviour
         throw new InvalidIdlException("no valid primary expression: " + result);
     } else {
         // a literal: a Literal Value
         return result;
     }
 }