oberonjs.html 3.0 KB

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