oberonjs.html 3.3 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119
  1. <!DOCTYPE html>
  2. <html>
  3. <head>
  4. <meta charset="utf-8">
  5. <title>Oberon online compiler</title>
  6. <link rel="stylesheet" href="jslibs/codemirror/codemirror.css">
  7. <!-- <link rel="stylesheet" href="http://codemirror.net/doc/docs.css"> -->
  8. <script src="jslibs/codemirror/codemirror.js"></script>
  9. <script src="jslibs/codemirror/javascript.js"></script>
  10. <script src="jslibs/processing/processing.js"></script>
  11. <script src="codemirror/oberon07.js"></script>
  12. <style type="text/css">
  13. .code {
  14. display: inline-block;
  15. }
  16. </style>
  17. </head>
  18. <body>
  19. <p>
  20. <form action="">
  21. Oberon module(s):
  22. <input type="radio" name="compiler" value="oberon" checked>Oberon
  23. <input type="radio" name="compiler" value="eberon" id="eberon">Eberon
  24. </form>
  25. </p>
  26. <div class="code">
  27. <textarea id="source" rows="10" cols="80">
  28. MODULE test;
  29. IMPORT JS;
  30. BEGIN
  31. JS.alert("Hello, World!")
  32. END test.
  33. </textarea>
  34. </div>
  35. <p>
  36. <button onclick="compile()">Compile</button>
  37. <button onclick="compile(); run()">Compile &amp; Run</button>
  38. </p>
  39. <p id="compileErrors" style="color:red"></p>
  40. <p id="compileTime"></p>
  41. <div class="code">
  42. <textarea id="result" rows="10" cols="80">
  43. </textarea>
  44. </div>
  45. <p>
  46. <button onclick="run()">Run</button>
  47. </p>
  48. <p id="runErrors" style="color:red"></p>
  49. <p id="runTime"></p>
  50. <p><a href="http://oberspace.dyndns.org">Home</a></p>
  51. <p><a href="https://github.com/vladfolts/oberonjs">Development</a></p>
  52. <p id="version"></p>
  53. <script src="oc.js"></script>
  54. <script>
  55. var oberonEditor = CodeMirror.fromTextArea(document.getElementById('source'), {
  56. lineNumbers: true,
  57. mode: "text/x-oberon07"
  58. });
  59. var javascriptEditor = CodeMirror.fromTextArea(document.getElementById('result'), {
  60. lineNumbers: true,
  61. mode: "text/javascript"
  62. });
  63. if (typeof buildVersion != "undefined")
  64. document.getElementById("version").textContent = buildVersion;
  65. function compile(){
  66. var src = oberonEditor.getValue();
  67. var result;
  68. var errors = "";
  69. var start = new Date();
  70. try {
  71. var grammar = require(
  72. document.getElementById("eberon").checked
  73. ? "eberon/eberon_grammar.js"
  74. : "oberon/oberon_grammar.js").grammar;
  75. result = require("oc.js").compile(src, grammar, function(e){
  76. errors += e;
  77. });
  78. }
  79. catch (e) {
  80. errors += e;
  81. }
  82. var compileTime = (new Date() - start) / 1000;
  83. if (!result)
  84. result = "";
  85. javascriptEditor.setValue(result);
  86. document.getElementById("compileErrors").textContent = errors;
  87. document.getElementById("compileTime").textContent = "compile time (seconds): " + compileTime;
  88. }
  89. function run(){
  90. var errElement = document.getElementById("runErrors");
  91. errElement.textContent = "";
  92. var start = new Date();
  93. try{
  94. eval(javascriptEditor.getValue());
  95. }
  96. catch (e){
  97. var errors = "" + e;
  98. errElement.textContent = errors;
  99. }
  100. var runTime = (new Date() - start) / 1000;
  101. document.getElementById("runTime").textContent = "run time (seconds): " + runTime;
  102. }
  103. </script>
  104. </body>
  105. </html>