oberonjs.html 3.4 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122
  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">
  24. <a href="https://github.com/vladfolts/oberonjs/wiki/Eberon">
  25. Eberon
  26. </a>
  27. </form>
  28. </p>
  29. <div class="code">
  30. <textarea id="source" rows="10" cols="80">
  31. MODULE test;
  32. IMPORT JS;
  33. BEGIN
  34. JS.alert("Hello, World!")
  35. END test.
  36. </textarea>
  37. </div>
  38. <p>
  39. <button onclick="compile()">Compile</button>
  40. <button onclick="compile(); run()">Compile &amp; Run</button>
  41. </p>
  42. <p id="compileErrors" style="color:red"></p>
  43. <p id="compileTime"></p>
  44. <div class="code">
  45. <textarea id="result" rows="10" cols="80">
  46. </textarea>
  47. </div>
  48. <p>
  49. <button onclick="run()">Run</button>
  50. </p>
  51. <p id="runErrors" style="color:red"></p>
  52. <p id="runTime"></p>
  53. <p><a href="http://oberspace.dyndns.org">Home</a></p>
  54. <p><a href="https://github.com/vladfolts/oberonjs">Development</a></p>
  55. <p id="version"></p>
  56. <script src="oc.js"></script>
  57. <script>
  58. var oberonEditor = CodeMirror.fromTextArea(document.getElementById('source'), {
  59. lineNumbers: true,
  60. mode: "text/x-oberon07"
  61. });
  62. var javascriptEditor = CodeMirror.fromTextArea(document.getElementById('result'), {
  63. lineNumbers: true,
  64. mode: "text/javascript"
  65. });
  66. if (typeof buildVersion != "undefined")
  67. document.getElementById("version").textContent = buildVersion;
  68. function compile(){
  69. var src = oberonEditor.getValue();
  70. var result;
  71. var errors = "";
  72. var start = new Date();
  73. try {
  74. var grammar = require(
  75. document.getElementById("eberon").checked
  76. ? "eberon/eberon_grammar.js"
  77. : "oberon/oberon_grammar.js").grammar;
  78. result = require("oc.js").compile(src, grammar, function(e){
  79. errors += e;
  80. });
  81. }
  82. catch (e) {
  83. errors += e;
  84. }
  85. var compileTime = (new Date() - start) / 1000;
  86. if (!result)
  87. result = "";
  88. javascriptEditor.setValue(result);
  89. document.getElementById("compileErrors").textContent = errors;
  90. document.getElementById("compileTime").textContent = "compile time (seconds): " + compileTime;
  91. }
  92. function run(){
  93. var errElement = document.getElementById("runErrors");
  94. errElement.textContent = "";
  95. var start = new Date();
  96. try{
  97. eval(javascriptEditor.getValue());
  98. }
  99. catch (e){
  100. var errors = "" + e;
  101. errElement.textContent = errors;
  102. }
  103. var runTime = (new Date() - start) / 1000;
  104. document.getElementById("runTime").textContent = "run time (seconds): " + runTime;
  105. }
  106. </script>
  107. </body>
  108. </html>