package ai.d.ai01;
import drjava.util.GUIUtil;
import drjava.util.StringUtil;
import prophecy.common.gui.ProphecyFrame;
import structcom.sc03.ParserMatch;
import structcom.sc03.StdGrammar;
import javax.swing.*;
import java.util.HashMap;
import java.util.List;
import java.util.Map;
public class ApplicationManagerRunner {
  private static Map<String, Object> objects = new HashMap<String, Object>();
  public static void main(String[] args) {
    String def = "a table of applications.\n" +
      "a window with the table in it.\n" +
      "the window is called \"Application Manager\".\n";
    List<String> lines = toLines(def);
    for (String line : lines) {
      // Note: this might mismatch on "a tablecloth" etc., but we don't have that in the target language, so it's ok.
      if (StdGrammar.matchesFull("\"a table\" optspace rest@any", line)) {
        store("table", new JScrollPane(new DummyTable()));
        System.out.println("table made");
        continue;
      }
      if (StdGrammar.matchesFull("\"a window.\"", line)) {
        store("window", new ProphecyFrame());
        System.out.println("window made");
        continue;
      }
      ParserMatch match = StdGrammar.matchFullSilent("\"a window with the \" thing@word \" in it.\"", line);
      if (match != null) {
        String thing = match.getLabeledString("thing");
        JComponent component = (JComponent) objects.get(thing);
        ProphecyFrame window = new ProphecyFrame();
        window.getContentPane().add(component);
        store("window", window);
        System.out.println("window made with " + component);
        continue;
      }
      match = StdGrammar.matchFullSilent("\"the window is called\" space name@stringlit \".\"", line);
      if (match != null) {
        ProphecyFrame window = (ProphecyFrame) objects.get("window");
        String name = StdGrammar.unquote(match.getLabeledString("name"));
        window.setTitle(name);
        System.out.println("window is now labeled: " + name);
        continue;
      }
      throw new RuntimeException("huch: " + line);
    }
    ProphecyFrame window = (ProphecyFrame) objects.get("window");
    if (window != null)
      GUIUtil.showFrame(window);
    else
      System.out.println("No window defined, exiting...");
  }
  private static void store(String name, Object object) {
    objects.put(name, object);
  }
  private static List<String> toLines(String def) {
    return StringUtil.toLines(def);
  }
}
A Java class. Works. (Well, the table has dummy contents.) See http://tinybrain.blog.de/2014/09/03/let-s-program-in-poems-19322169/
Travelled to 12 computer(s): aoiabmzegqzx, bhatertpkbcr, cbybwowwnfue, gwrvuhgaqvyk, ishqpsrjomds, lpdgvwnxivlt, mqqgnosmbjvj, pyentgdyhuwx, pzhvpgtvlbxg, tslmcundralx, tvejysmllsmz, vouqrxazstgt
No comments. add comment
| Recognizer | Recognition Result | Visualize | Recalc | 
|---|---|---|---|
| #308 | 2548 | [visualize] | 
| Snippet ID: | #280 | 
| Snippet name: | ApplicationManagerRunner | 
| Eternal ID of this version: | #280/1 | 
| Text MD5: | c778ab4f6d7eed0f606bf1886c7523ca | 
| Author: | stefan | 
| Category: | |
| Type: | Document | 
| Public (visible to everyone): | Yes | 
| Archived (hidden from active list): | No | 
| Created/modified: | 2014-09-03 19:59:32 | 
| Source code size: | 2548 bytes / 73 lines | 
| Pitched / IR pitched: | No / Yes | 
| Views / Downloads: | 1053 / 269 | 
| Referenced in: | [show references] |