package test.antlr.pie; /*** * Excerpted from "Language Implementation Patterns", * published by The Pragmatic Bookshelf. * Copyrights apply to this code. It may not be used to create training material, * courses, books, articles, and the like. Contact us if you are in doubt. * We make no guarantees that this code is fit for any purpose. * Visit http://www.pragmaticprogrammer.com/titles/tpdsl for more book information. ***/ /** A scope holding fields of a struct instance. There can be * multiple struct instances but only one StructSymbol (definition). */ public class StructInstance extends MemorySpace { StructSymbol def; // what kind of struct am I? public StructInstance(StructSymbol struct) { super(struct.name+" instance"); this.def = struct; } public String toString() { StringBuilder buf = new StringBuilder(); buf.append("{"); boolean first = true; for (String fieldName : def.fields.keySet()) { Object v = members.get(fieldName); if ( !first ) buf.append(", "); else first = false; buf.append(fieldName); buf.append('='); buf.append(v); } buf.append("}"); return buf.toString(); } }