public static Term makeConfiguration( Term kast, String stdin, RunProcess rp, boolean hasTerm, Context context) throws TransformerException, IOException { if (hasTerm) { if (kast == null) { return rp.runParserOrDie(K.getProgramParser(), K.term, false, null, context); } else { Error.report("You cannot specify both the term and the configuration\nvariables."); } } HashMap<String, Term> output = new HashMap<String, Term>(); boolean hasPGM = false; Enumeration<Object> en = K.configuration_variables.keys(); while (en.hasMoreElements()) { String name = (String) en.nextElement(); String value = K.configuration_variables.getProperty(name); String parser = K.cfg_parsers.getProperty(name); // TODO: get sort from configuration term in definition and pass it // here Term parsed = null; if (parser == null) { parser = "kast -groundParser -e"; } parsed = rp.runParserOrDie(parser, value, false, null, context); output.put("$" + name, parsed); hasPGM = hasPGM || name.equals("$PGM"); } if (!hasPGM && kast != null) { output.put("$PGM", kast); } if (!K.io && stdin == null) { stdin = ""; } if (stdin != null) { KApp noIO = KApp.of(KLabelConstant.of("'#noIO", context)); if (K.backend.equals("java")) { DataStructureSort myList = context.dataStructureListSortOf(DataStructureSort.DEFAULT_LIST_SORT); if (myList != null) { output.put("$noIO", DataStructureBuiltin.element(myList, noIO)); } } else { output.put("$noIO", new ListItem(noIO)); } output.put("$stdin", StringBuiltin.kAppOf(stdin + "\n")); } else { if (K.backend.equals("java")) { DataStructureSort myList = context.dataStructureListSortOf(DataStructureSort.DEFAULT_LIST_SORT); if (myList != null) { output.put("$noIO", DataStructureBuiltin.empty(myList)); } } else { output.put("$noIO", org.kframework.kil.List.EMPTY); } output.put("$stdin", StringBuiltin.EMPTY); } if (GlobalSettings.verbose) sw.printIntermediate("Make configuration"); return plug(output, context); }