Revision: 4376
          http://vexi.svn.sourceforge.net/vexi/?rev=4376&view=rev
Author:   mkpg2
Date:     2012-03-30 00:44:28 +0000 (Fri, 30 Mar 2012)
Log Message:
-----------
Minor Refactoring. Expose parsing without JS exceptions.

Modified Paths:
--------------
    trunk/org.vexi-core.main/src/main/java/org/vexi/core/VMLBuilder.java
    trunk/org.vexi-library.js/src/main/java/org/ibex/js/ExecParser.java
    trunk/org.vexi-library.js/src/main/java/org/ibex/js/Methods.java
    trunk/org.vexi-library.js/src/main/jpp/org/vexi/js/VexiJS.jpp
    trunk/org.vexi-library.js/src/poke/java/org/ibex/js/DevUtil.java
    trunk/org.vexi-library.js/src/poke/java/org/ibex/js/RunJS.java
    trunk/org.vexi-library.js/src/test/java/test/js/exec/JSTestCase.java
    
trunk/org.vexi-library.js/src/test/java/test/js/exec/general/TestGeneral.java

Added Paths:
-----------
    
trunk/org.vexi-library.js/src/test/java/test/js/exec/general/ternary_precedence.js

Modified: trunk/org.vexi-core.main/src/main/java/org/vexi/core/VMLBuilder.java
===================================================================
--- trunk/org.vexi-core.main/src/main/java/org/vexi/core/VMLBuilder.java        
2012-03-30 00:42:21 UTC (rev 4375)
+++ trunk/org.vexi-core.main/src/main/java/org/vexi/core/VMLBuilder.java        
2012-03-30 00:44:28 UTC (rev 4376)
@@ -170,7 +170,7 @@
         }
         String contentString = content.toString();
         if (contentString.trim().length() > 0) {
-            return ExecParser.fromReader(sourceName, content_start, new 
StringReader(contentString));
+            return ExecParser.parseFromJS(sourceName, content_start, new 
StringReader(contentString));
         }
         return null;
     }

Modified: trunk/org.vexi-library.js/src/main/java/org/ibex/js/ExecParser.java
===================================================================
--- trunk/org.vexi-library.js/src/main/java/org/ibex/js/ExecParser.java 
2012-03-30 00:42:21 UTC (rev 4375)
+++ trunk/org.vexi-library.js/src/main/java/org/ibex/js/ExecParser.java 
2012-03-30 00:44:28 UTC (rev 4376)
@@ -10,11 +10,17 @@
 public class ExecParser extends Parser implements Constants {
 
     /** parse and compile a function */
-    static public Function fromReader(String sourceName, int firstLine, Reader 
sourceCode) throws JSExn {
+    static public Function parse(String sourceName, int firstLine, Reader 
sourceCode) throws Exception{
+               if (sourceCode == null) return new Function(sourceName, 
firstLine);
+               Parser p = new ExecParser(sourceCode, sourceName, firstLine);
+               return p.parseScript();
+    }
+    
+       
+    /** parse and compile a function */
+    static public Function parseFromJS(String sourceName, int firstLine, 
Reader sourceCode) throws JSExn {
        try{
-               if (sourceCode == null) return new Function(sourceName, 
firstLine);
-               Parser p = new ExecParser(sourceCode, sourceName, firstLine);
-               return p.parseScript();
+               return parse(sourceName, firstLine, sourceCode);
        } catch(SourceException e) {
                // FEATURE create JSExn constructor that takes a 
SourceException -
                // and so pass on more information as exception properties.

Modified: trunk/org.vexi-library.js/src/main/java/org/ibex/js/Methods.java
===================================================================
--- trunk/org.vexi-library.js/src/main/java/org/ibex/js/Methods.java    
2012-03-30 00:42:21 UTC (rev 4375)
+++ trunk/org.vexi-library.js/src/main/java/org/ibex/js/Methods.java    
2012-03-30 00:44:28 UTC (rev 4376)
@@ -141,7 +141,7 @@
         JS scriptText = JSU.expectArg(args,0);
         JS globalScope = JSU.getArg(args,1,EMPTY_SCOPE);//;args.length<2?new 
JS.Obj():args[1];
         JS description = JSU.getArg(args, 2);
-        Function f = ExecParser.fromReader(
+        Function f = ExecParser.parseFromJS(
              description==null?"<eval>":JSU.toString(description), 
              1,
              new StringReader(JSU.toString(scriptText)));

Modified: trunk/org.vexi-library.js/src/main/jpp/org/vexi/js/VexiJS.jpp
===================================================================
--- trunk/org.vexi-library.js/src/main/jpp/org/vexi/js/VexiJS.jpp       
2012-03-30 00:42:21 UTC (rev 4375)
+++ trunk/org.vexi-library.js/src/main/jpp/org/vexi/js/VexiJS.jpp       
2012-03-30 00:44:28 UTC (rev 4376)
@@ -95,7 +95,7 @@
         if (script==null) {
             try {
                 InputStream is = 
VexiJS.class.getResource("script.js").openStream();
-                Function script = ExecParser.fromReader("script.js", 0, new 
InputStreamReader(is));
+                Function script = ExecParser.parseFromJS("script.js", 0, new 
InputStreamReader(is));
                 VexiJS.script = JSU.cloneWithNewGlobalScope(script, new 
JS.Obj()).apply(null, new JS[]{internal});
             }catch (IOException e) {
                 throw new JSExn(e);

Modified: trunk/org.vexi-library.js/src/poke/java/org/ibex/js/DevUtil.java
===================================================================
--- trunk/org.vexi-library.js/src/poke/java/org/ibex/js/DevUtil.java    
2012-03-30 00:42:21 UTC (rev 4375)
+++ trunk/org.vexi-library.js/src/poke/java/org/ibex/js/DevUtil.java    
2012-03-30 00:44:28 UTC (rev 4376)
@@ -194,7 +194,7 @@
 
     static public Function parseJS(InputStream is, String filename) throws 
JSExn {
                InputStreamReader isr = new InputStreamReader(is);
-               Function f = ExecParser.fromReader(filename,1,isr);
+               Function f = ExecParser.parseFromJS(filename,1,isr);
                return f;
        }
        
@@ -205,7 +205,7 @@
                if(is==null)
                        throw new JSExn("Could not find file in path: " +  
filename);
                InputStreamReader isr = new InputStreamReader(is);
-               Function f = ExecParser.fromReader(filename,1,isr);
+               Function f = ExecParser.parseFromJS(filename,1,isr);
                return f;
        } catch(IOException e){
                throw new JSExn(e);

Modified: trunk/org.vexi-library.js/src/poke/java/org/ibex/js/RunJS.java
===================================================================
--- trunk/org.vexi-library.js/src/poke/java/org/ibex/js/RunJS.java      
2012-03-30 00:42:21 UTC (rev 4375)
+++ trunk/org.vexi-library.js/src/poke/java/org/ibex/js/RunJS.java      
2012-03-30 00:44:28 UTC (rev 4376)
@@ -95,26 +95,25 @@
                return r;
        }
        
-       public Reader getReaderForFile(String filename) throws IOException, 
JSExn{
-               InputStream is = getFountainForFile(filename).getInputStream();
+       public Reader getReaderForFile(String filename) throws JSExn{
+               InputStream is;
+               try {
+                       is = getFountainForFile(filename).getInputStream();
+               } catch (IOException e) {
+                       throw new JSExn(e);
+               }
                if(is==null)
-                       throw new IOException("Could not find file in path: " + 
 filename);
-               InputStreamReader isr = new InputStreamReader(is);
-               return isr;
+                       throw new JSExn("Could not find file in path: " +  
filename);
+               return new InputStreamReader(is);
        }
        
        
        private JSFunction prepareRun(String filename, JS export) throws JSExn{
-               try{
-                       Reader isr = getReaderForFile(filename);
-                       Function f = ExecParser.fromReader(filename,1,isr);
-                       global = new GlobalObj(sysObj,export);
-                       //System.out.println(((JSFunction)f).dump());
-                       return JSU.cloneWithNewGlobalScope(f,global);
-               } catch(IOException e){
-                       throw new JSExn(e);
-               }
-               
+               Reader isr = getReaderForFile(filename);
+               Function f = ExecParser.parseFromJS(filename,1,isr);
+               global = new GlobalObj(sysObj,export);
+               //System.out.println(((JSFunction)f).dump());
+               return JSU.cloneWithNewGlobalScope(f,global);
        };
        
        public JS run(String fileName) throws Exception {

Modified: trunk/org.vexi-library.js/src/test/java/test/js/exec/JSTestCase.java
===================================================================
--- trunk/org.vexi-library.js/src/test/java/test/js/exec/JSTestCase.java        
2012-03-30 00:42:21 UTC (rev 4375)
+++ trunk/org.vexi-library.js/src/test/java/test/js/exec/JSTestCase.java        
2012-03-30 00:44:28 UTC (rev 4376)
@@ -49,9 +49,9 @@
                }
        }
        
-       public void printByteCode() throws IOException, JSExn {
+       public void printByteCode() throws JSExn {
                Reader r = new RunJS(jspath).getReaderForFile(main);
-               Function f = ExecParser.fromReader(main,1,r);
+               Function f = ExecParser.parseFromJS(main,1,r);
                System.err.println(DevUtil.dump(f));
        }
        

Modified: 
trunk/org.vexi-library.js/src/test/java/test/js/exec/general/TestGeneral.java
===================================================================
--- 
trunk/org.vexi-library.js/src/test/java/test/js/exec/general/TestGeneral.java   
    2012-03-30 00:42:21 UTC (rev 4375)
+++ 
trunk/org.vexi-library.js/src/test/java/test/js/exec/general/TestGeneral.java   
    2012-03-30 00:44:28 UTC (rev 4376)
@@ -16,7 +16,7 @@
     public static void main(String[] args) throws Throwable {
        try{
                JSTestSuite jts = new JSTestSuite(TestGeneral.class);
-               JSTestCase t = jts.createTestCase(jts.getResourceDirs(), 
"euclids.js");
+               JSTestCase t = jts.createTestCase(jts.getResourceDirs(), 
"ternary_precedence.js");
                //t.printByteCode();
                t.runBare();
        }catch(Throwable t){

Added: 
trunk/org.vexi-library.js/src/test/java/test/js/exec/general/ternary_precedence.js
===================================================================
--- 
trunk/org.vexi-library.js/src/test/java/test/js/exec/general/ternary_precedence.js
                          (rev 0)
+++ 
trunk/org.vexi-library.js/src/test/java/test/js/exec/general/ternary_precedence.js
  2012-03-30 00:44:28 UTC (rev 4376)
@@ -0,0 +1,12 @@
+
+sys.import("shared");
+
+var f = function(x,y){
+    return x?'a':
+           y?'b':'c';
+}; 
+
+assertEquals('c', f(false,false));
+assertEquals('a', f(true,false));
+assertEquals('b', f(false,true));
+

This was sent by the SourceForge.net collaborative development platform, the 
world's largest Open Source development site.


------------------------------------------------------------------------------
This SF email is sponsosred by:
Try Windows Azure free for 90 days Click Here 
http://p.sf.net/sfu/sfd2d-msazure
_______________________________________________
Vexi-svn mailing list
Vexi-svn@lists.sourceforge.net
https://lists.sourceforge.net/lists/listinfo/vexi-svn

Reply via email to