/** * Construct a record by assigning the fields values given by the children nodes. * * @param node The record constructor node. * @exception IllegalActionException If an evaluation error occurs. */ public void visitRecordConstructNode(ASTPtRecordConstructNode node) throws IllegalActionException { if (node.isConstant() && node.isEvaluated()) { _evaluatedChildToken = node.getToken(); return; } ptolemy.data.Token[] tokens = _evaluateAllChildren(node); int numChildren = node.jjtGetNumChildren(); _assert( node.getFieldNames().size() == numChildren, node, "The number of labels and values does not " + "match in parsing a record expression."); String[] labels = (String[]) node.getFieldNames().toArray(new String[numChildren]); _evaluatedChildToken = (new RecordToken(labels, tokens)); if (node.isConstant()) { node.setToken(_evaluatedChildToken); } }