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