oberonjs.html 3.0 KB

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