Sfoglia il codice sorgente

Add eberon to html page.

Vladislav Folts 11 anni fa
parent
commit
b2a2c3f4c7
4 ha cambiato i file con 23 aggiunte e 7 eliminazioni
  1. 5 2
      browser/linkjs.py
  2. 13 2
      browser/oberonjs.html
  3. 4 1
      build.py
  4. 1 2
      src/oc.js

+ 5 - 2
browser/linkjs.py

@@ -53,7 +53,7 @@ def encode_to_js_string(s):
 		s = s.replace(e[0], e[1])
 	return '"%s"' % s
 
-def link(input_path, output_path, dirs, version = None):
+def link(input_paths, output_path, dirs, version = None):
 	with open(output_path, "w") as out:
 		prolog = ""
 		if not version is None:
@@ -62,7 +62,10 @@ def link(input_path, output_path, dirs, version = None):
 		prolog += "var imports = {};\n"
 		prolog += 'function require(module){return imports[module];}\n'
 		out.write(prolog)
-		process(input_path, out, [], [], dirs)
+		resolved = []
+		resolving = []
+		for input_path in input_paths:
+			process(input_path, out, resolved, resolving, dirs)
 
 def parse_args(args):
 	parser = OptionParser('Usage: linkjs.py [options] <input js> <output js>')

+ 13 - 2
browser/oberonjs.html

@@ -16,7 +16,14 @@
         </style>
     </head>
 <body>
-    <p>Oberon module(s):</p>
+
+<p>
+<form action="">
+Oberon module(s):
+<input type="radio" name="compiler" value="oberon" checked>Oberon
+<input type="radio" name="compiler" value="eberon" id="eberon">Eberon
+</form>
+</p>
 
 <div class="code">
 <textarea id="source" rows="10" cols="80">
@@ -71,7 +78,11 @@ END test.
         var errors = "";
         var start = new Date();
         try {
-            result = require("oc.js").compile(src, undefined, function(e){
+            var grammar = require(
+                document.getElementById("eberon").checked
+                    ? "eberon/eberon_grammar.js"
+                    : "oberon/oberon_grammar.js").grammar;
+            result = require("oc.js").compile(src, grammar, function(e){
                 errors += e;
             });
             }

+ 4 - 1
build.py

@@ -74,7 +74,10 @@ def build(out, use_git):
     if not os.path.exists(out):
         os.mkdir(out)
 
-    link('oc.js', os.path.join(out, 'oc.js'), ['src', 'src/oberon.js'], version)
+    link(['oc.js', 'oberon/oberon_grammar.js', 'eberon/eberon_grammar.js'],
+         os.path.join(out, 'oc.js'),
+         ['src', 'src/oberon.js'],
+         version)
     copy('browser/oberonjs.html', out)
     for d in ['codemirror', 'jslibs']:
         copytree(os.path.join('browser', d), os.path.join(out, d))

+ 1 - 2
src/oc.js

@@ -3,7 +3,6 @@
 var Class = require("rtl.js").Class;
 var Code = require("code.js");
 var Context = require("context.js");
-var defaultGrammar = require("oberon/oberon_grammar.js").grammar;
 var Errors = require("js/Errors.js");
 var Lexer = require("js/Lexer.js");
 var RTL = require("rtl_code.js").RTL;
@@ -110,7 +109,7 @@ function compile(text, grammar, handleErrors){
     var rtl = new RTL();
     var moduleCode = function(name, imports){return new Code.ModuleGenerator(name, imports);};
     var resolver = makeResolver(
-            grammar || defaultGrammar,
+            grammar,
             function(moduleResolver){
                 return new Context.Context(new Code.Generator(),
                                            moduleCode,