BRL.java 2.9 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121
  1. package gnu.kawa.brl;
  2. import gnu.mapping.*;
  3. import kawa.standard.Scheme;
  4. import gnu.lists.*;
  5. import gnu.xml.*;
  6. import gnu.expr.*;
  7. import gnu.kawa.io.InPort;
  8. import gnu.kawa.lispexpr.ReadTable;
  9. public class BRL extends Scheme
  10. {
  11. // The following two fields need to be public so that the findLiteral
  12. // method in gnu.expr.LitTable can find them.
  13. /** Language instance for KRL dialect. */
  14. public static final BRL krl_instance;
  15. /** Language instance for BRL dialect. */
  16. public static final BRL brl_instance;
  17. static final Object emptyForm = new FString();
  18. protected static final SimpleEnvironment brlEnvironment
  19. = Environment.make("brl-environment", Scheme.kawaEnvironment);
  20. static BRLReaderString brlReader = new BRLReaderString();
  21. static
  22. {
  23. krl_instance = new BRL(brlEnvironment);
  24. brl_instance = new BRL(brlEnvironment);
  25. brl_instance.setBrlCompatible(true);
  26. Environment saveEnv = Environment.setSaveCurrent(brlEnvironment);
  27. try
  28. {
  29. krl_instance.initBRL();
  30. }
  31. finally
  32. {
  33. Environment.restoreCurrent(saveEnv);
  34. }
  35. }
  36. protected BRL (Environment env)
  37. {
  38. super(env);
  39. }
  40. void initBRL ()
  41. {
  42. ModuleBody.setMainPrintValues(true);
  43. try
  44. {
  45. loadClass("gnu.brl.stringfun");
  46. loadClass("gnu.kawa.brl.progfun");
  47. loadClass("gnu.kawa.servlet.HTTP");
  48. }
  49. catch (Exception ex)
  50. {
  51. System.err.println("caught "+ex);
  52. }
  53. }
  54. public static Language getInstance(boolean brlCompatible)
  55. {
  56. return brlCompatible ? getBrlInstance() : getBrlInstance();
  57. }
  58. public static BRL getKrlInstance()
  59. {
  60. return krl_instance;
  61. }
  62. public static BRL getBrlInstance()
  63. {
  64. return brl_instance;
  65. }
  66. boolean brlCompatible = false;
  67. public boolean isBrlCompatible() { return brlCompatible; }
  68. public void setBrlCompatible(boolean compat) { brlCompatible = compat; }
  69. public boolean appendBodyValues () { return ! isBrlCompatible(); }
  70. public gnu.kawa.lispexpr.LispReader getLexer(InPort inp, gnu.text.SourceMessages messages)
  71. {
  72. Compilation.defaultCallConvention = Compilation.CALL_WITH_CONSUMER;
  73. BRLRead lexer = new BRLRead(inp, messages);
  74. lexer.setBrlCompatible(isBrlCompatible());
  75. return lexer;
  76. }
  77. public Consumer getOutputConsumer(java.io.Writer out)
  78. {
  79. if (isBrlCompatible())
  80. return super.getOutputConsumer(out);
  81. return new XMLPrinter(out, false);
  82. }
  83. /** The compiler insert calls to this method for applications and applets. */
  84. public static void registerEnvironment()
  85. {
  86. Language.setDefaults(getKrlInstance());
  87. }
  88. public ReadTable createReadTable ()
  89. {
  90. ReadTable rt = super.createReadTable();
  91. if (isBrlCompatible())
  92. rt.setInitialColonIsKeyword(true);
  93. rt.setBracketMode(1);
  94. rt.set(']', brlReader);
  95. return rt;
  96. }
  97. @Override
  98. public String getPrimaryPrompt() { return "<!--BRL:%N-->"; }
  99. @Override
  100. public String getSecondaryPrompt() { return "<!--%P.:%N-->"; }
  101. }