|
From: <ha...@us...> - 2008-06-27 00:16:31
|
Revision: 2061
http://cogkit.svn.sourceforge.net/cogkit/?rev=2061&view=rev
Author: hategan
Date: 2008-06-26 17:16:28 -0700 (Thu, 26 Jun 2008)
Log Message:
-----------
sync
Modified Paths:
--------------
branches/karajan2/src/cog/modules/karajan2/examples/order.k
branches/karajan2/src/cog/modules/karajan2/examples/scoping.k
branches/karajan2/src/cog/modules/karajan2/launchers.xml
branches/karajan2/src/cog/modules/karajan2/resources/karajan-language.gr
branches/karajan2/src/cog/modules/karajan2/src/org/globus/cog/karajan/Loader.java
branches/karajan2/src/cog/modules/karajan2/src/org/globus/cog/karajan/compiler/Compiler.java
branches/karajan2/src/cog/modules/karajan2/src/org/globus/cog/karajan/compiler/NativeFunction.java
branches/karajan2/src/cog/modules/karajan2/src/org/globus/cog/karajan/compiler/OutputContext.java
branches/karajan2/src/cog/modules/karajan2/src/org/globus/cog/karajan/compiler/Scope.java
branches/karajan2/src/cog/modules/karajan2/src/org/globus/cog/karajan/compiler/State.java
branches/karajan2/src/cog/modules/karajan2/src/org/globus/cog/karajan/compiler/Type.java
branches/karajan2/src/cog/modules/karajan2/src/org/globus/cog/karajan/compiler/VarRef.java
branches/karajan2/src/cog/modules/karajan2/src/org/globus/cog/karajan/compiler/VariableNotFoundException.java
branches/karajan2/src/cog/modules/karajan2/src/org/globus/cog/karajan/compiler/kernel/Def.java
branches/karajan2/src/cog/modules/karajan2/src/org/globus/cog/karajan/compiler/kernel/Export.java
branches/karajan2/src/cog/modules/karajan2/src/org/globus/cog/karajan/compiler/kernel/For.java
branches/karajan2/src/cog/modules/karajan2/src/org/globus/cog/karajan/compiler/kernel/Function.java
branches/karajan2/src/cog/modules/karajan2/src/org/globus/cog/karajan/compiler/kernel/GenericSeq.java
branches/karajan2/src/cog/modules/karajan2/src/org/globus/cog/karajan/compiler/kernel/If.java
branches/karajan2/src/cog/modules/karajan2/src/org/globus/cog/karajan/compiler/kernel/Import.java
branches/karajan2/src/cog/modules/karajan2/src/org/globus/cog/karajan/compiler/kernel/Invoke.java
branches/karajan2/src/cog/modules/karajan2/src/org/globus/cog/karajan/compiler/kernel/Named.java
branches/karajan2/src/cog/modules/karajan2/src/org/globus/cog/karajan/compiler/kernel/Native.java
branches/karajan2/src/cog/modules/karajan2/src/org/globus/cog/karajan/compiler/kernel/Num.java
branches/karajan2/src/cog/modules/karajan2/src/org/globus/cog/karajan/compiler/kernel/Par.java
branches/karajan2/src/cog/modules/karajan2/src/org/globus/cog/karajan/compiler/kernel/Seq.java
branches/karajan2/src/cog/modules/karajan2/src/org/globus/cog/karajan/compiler/kernel/Set.java
branches/karajan2/src/cog/modules/karajan2/src/org/globus/cog/karajan/compiler/kernel/Str.java
branches/karajan2/src/cog/modules/karajan2/src/org/globus/cog/karajan/compiler/kernel/Var.java
branches/karajan2/src/cog/modules/karajan2/src/org/globus/cog/karajan/compiler/types/ChannelType.java
branches/karajan2/src/cog/modules/karajan2/src/org/globus/cog/karajan/compiler/types/SimpleType.java
branches/karajan2/src/cog/modules/karajan2/src/org/globus/cog/karajan/compiler/types/TypeReductor.java
branches/karajan2/src/cog/modules/karajan2/src/org/globus/cog/karajan/compiler/types/Types.java
branches/karajan2/src/cog/modules/karajan2/src/org/globus/cog/karajan/compiler/types/UnknownType.java
branches/karajan2/src/cog/modules/karajan2/src/org/globus/cog/karajan/lib/sys/Echo.java
branches/karajan2/src/cog/modules/karajan2/src/org/globus/cog/karajan/lib/sys/Equals.java
branches/karajan2/src/cog/modules/karajan2/src/org/globus/cog/karajan/lib/sys/GreaterThan.java
branches/karajan2/src/cog/modules/karajan2/src/org/globus/cog/karajan/lib/sys/KException.java
branches/karajan2/src/cog/modules/karajan2/src/org/globus/cog/karajan/lib/sys/LessThan.java
branches/karajan2/src/cog/modules/karajan2/src/org/globus/cog/karajan/lib/sys/Minus.java
branches/karajan2/src/cog/modules/karajan2/src/org/globus/cog/karajan/lib/sys/Plus.java
branches/karajan2/src/cog/modules/karajan2/src/org/globus/cog/karajan/lib/sys/Print.java
branches/karajan2/src/cog/modules/karajan2/src/org/globus/cog/karajan/lib/sys/Range.java
branches/karajan2/src/cog/modules/karajan2/src/org/globus/cog/karajan/lib/sys/Throw.java
branches/karajan2/src/cog/modules/karajan2/src/org/globus/cog/karajan/lib/sys/Times.java
branches/karajan2/src/cog/modules/karajan2/src/org/globus/cog/karajan/lib/sys/Wait.java
branches/karajan2/src/cog/modules/karajan2/src/org/globus/cog/karajan/parser/Node.java
branches/karajan2/src/cog/modules/karajan2/src/org/globus/cog/karajan/runtime/Arguments.java
branches/karajan2/src/cog/modules/karajan2/src/org/globus/cog/karajan/runtime/Callable.java
branches/karajan2/src/cog/modules/karajan2/src/org/globus/cog/karajan/runtime/Channel.java
branches/karajan2/src/cog/modules/karajan2/src/org/globus/cog/karajan/runtime/Channels.java
branches/karajan2/src/cog/modules/karajan2/src/org/globus/cog/karajan/runtime/Context.java
branches/karajan2/src/cog/modules/karajan2/src/org/globus/cog/karajan/runtime/Exceptions.java
branches/karajan2/src/cog/modules/karajan2/src/org/globus/cog/karajan/runtime/ExecutionException.java
branches/karajan2/src/cog/modules/karajan2/src/org/globus/cog/karajan/runtime/MemoryChannel.java
branches/karajan2/src/cog/modules/karajan2/src/org/globus/cog/karajan/runtime/OrderedParallelChannel.java
branches/karajan2/src/cog/modules/karajan2/src/org/globus/cog/karajan/runtime/Signature.java
branches/karajan2/src/cog/modules/karajan2/src/org/globus/cog/karajan/runtime/StdSink.java
branches/karajan2/src/cog/modules/karajan2/src/org/globus/cog/karajan/threading/LWThread.java
branches/karajan2/src/cog/modules/karajan2/src/org/globus/cog/karajan/threading/LWThreadDeath.java
branches/karajan2/src/cog/modules/karajan2/src/org/globus/cog/karajan/threading/Scheduler.java
branches/karajan2/src/cog/modules/karajan2/src/org/globus/cog/karajan/threading/SchedulerThread.java
branches/karajan2/src/cog/modules/karajan2/src/org/globus/cog/karajan/threading/State.java
branches/karajan2/src/cog/modules/karajan2/src/org/globus/cog/karajan/threading/StateTables.java
branches/karajan2/src/cog/modules/karajan2/src/org/globus/cog/karajan/threading/Yield.java
branches/karajan2/src/cog/modules/karajan2/src/org/globus/cog/karajan/translator/predicates/EndElement.java
branches/karajan2/src/cog/modules/karajan2/src/org/globus/cog/karajan/translator/predicates/Identifier.java
branches/karajan2/src/cog/modules/karajan2/src/org/globus/cog/karajan/translator/predicates/StringValue.java
branches/karajan2/src/cog/modules/karajan2/src/org/globus/cog/karajan/translator/predicates/Transliterator.java
branches/karajan2/src/cog/modules/karajan2/src/org/globus/cog/karajan/translator/predicates/Variable.java
Added Paths:
-----------
branches/karajan2/src/cog/modules/karajan2/examples/parallel-exception.k
branches/karajan2/src/cog/modules/karajan2/resources/string.class
branches/karajan2/src/cog/modules/karajan2/resources/string.java
branches/karajan2/src/cog/modules/karajan2/resources/string.k
branches/karajan2/src/cog/modules/karajan2/resources/sys.class
branches/karajan2/src/cog/modules/karajan2/resources/sys.java
branches/karajan2/src/cog/modules/karajan2/resources/sys.k
branches/karajan2/src/cog/modules/karajan2/src/org/globus/cog/karajan/compiler/InlineValue.java
branches/karajan2/src/cog/modules/karajan2/src/org/globus/cog/karajan/compiler/Self.java
branches/karajan2/src/cog/modules/karajan2/src/org/globus/cog/karajan/compiler/Vars.java
branches/karajan2/src/cog/modules/karajan2/src/org/globus/cog/karajan/compiler/kernel/Access.java
branches/karajan2/src/cog/modules/karajan2/src/org/globus/cog/karajan/compiler/kernel/Catch.java
branches/karajan2/src/cog/modules/karajan2/src/org/globus/cog/karajan/compiler/kernel/FromChannel.java
branches/karajan2/src/cog/modules/karajan2/src/org/globus/cog/karajan/compiler/kernel/Future.java
branches/karajan2/src/cog/modules/karajan2/src/org/globus/cog/karajan/compiler/kernel/InvokeField.java
branches/karajan2/src/cog/modules/karajan2/src/org/globus/cog/karajan/compiler/kernel/KType.java
branches/karajan2/src/cog/modules/karajan2/src/org/globus/cog/karajan/compiler/kernel/Main.java
branches/karajan2/src/cog/modules/karajan2/src/org/globus/cog/karajan/compiler/kernel/Namespace.java
branches/karajan2/src/cog/modules/karajan2/src/org/globus/cog/karajan/compiler/kernel/Or.java
branches/karajan2/src/cog/modules/karajan2/src/org/globus/cog/karajan/compiler/kernel/ParallelFor.java
branches/karajan2/src/cog/modules/karajan2/src/org/globus/cog/karajan/compiler/kernel/StringToken.java
branches/karajan2/src/cog/modules/karajan2/src/org/globus/cog/karajan/compiler/kernel/ToChannel.java
branches/karajan2/src/cog/modules/karajan2/src/org/globus/cog/karajan/compiler/kernel/Try.java
branches/karajan2/src/cog/modules/karajan2/src/org/globus/cog/karajan/compiler/types/AltType.java
branches/karajan2/src/cog/modules/karajan2/src/org/globus/cog/karajan/compiler/types/NativeType.java
branches/karajan2/src/cog/modules/karajan2/src/org/globus/cog/karajan/compiler/types/UserType.java
branches/karajan2/src/cog/modules/karajan2/src/org/globus/cog/karajan/lib/string/
branches/karajan2/src/cog/modules/karajan2/src/org/globus/cog/karajan/lib/string/Str.java
branches/karajan2/src/cog/modules/karajan2/src/org/globus/cog/karajan/lib/sys/Div.java
branches/karajan2/src/cog/modules/karajan2/src/org/globus/cog/karajan/lib/sys/GreaterOrEqual.java
branches/karajan2/src/cog/modules/karajan2/src/org/globus/cog/karajan/lib/sys/LessOrEqual.java
branches/karajan2/src/cog/modules/karajan2/src/org/globus/cog/karajan/runtime/Abort.java
branches/karajan2/src/cog/modules/karajan2/src/org/globus/cog/karajan/runtime/ConditionalYield.java
branches/karajan2/src/cog/modules/karajan2/src/org/globus/cog/karajan/runtime/Future.java
branches/karajan2/src/cog/modules/karajan2/src/org/globus/cog/karajan/runtime/FutureListener.java
branches/karajan2/src/cog/modules/karajan2/src/org/globus/cog/karajan/runtime/FutureValue.java
branches/karajan2/src/cog/modules/karajan2/src/org/globus/cog/karajan/runtime/FutureValueChannel.java
branches/karajan2/src/cog/modules/karajan2/src/org/globus/cog/karajan/runtime/Futures.java
branches/karajan2/src/cog/modules/karajan2/src/org/globus/cog/karajan/runtime/LookAheadIterator.java
branches/karajan2/src/cog/modules/karajan2/src/org/globus/cog/karajan/runtime/NativeCallable.java
branches/karajan2/src/cog/modules/karajan2/src/org/globus/cog/karajan/threading/LWRunnable.java
branches/karajan2/src/cog/modules/karajan2/src/org/globus/cog/karajan/threading/LWSignal.java
branches/karajan2/src/cog/modules/karajan2/tests/
branches/karajan2/src/cog/modules/karajan2/tests/channels1.k
branches/karajan2/src/cog/modules/karajan2/tests/channels1.k.expected
branches/karajan2/src/cog/modules/karajan2/tests/clean
branches/karajan2/src/cog/modules/karajan2/tests/currying.k
branches/karajan2/src/cog/modules/karajan2/tests/currying.k.expected
branches/karajan2/src/cog/modules/karajan2/tests/future.k
branches/karajan2/src/cog/modules/karajan2/tests/future.k.expected
branches/karajan2/src/cog/modules/karajan2/tests/overloading.k
branches/karajan2/src/cog/modules/karajan2/tests/overloading.k.expected
branches/karajan2/src/cog/modules/karajan2/tests/parallel-exception.k
branches/karajan2/src/cog/modules/karajan2/tests/parallel-exception.k.expected
branches/karajan2/src/cog/modules/karajan2/tests/parallelFor.k
branches/karajan2/src/cog/modules/karajan2/tests/parallelFor.k.expected
branches/karajan2/src/cog/modules/karajan2/tests/recursion.k
branches/karajan2/src/cog/modules/karajan2/tests/recursion.k.expected
branches/karajan2/src/cog/modules/karajan2/tests/run
branches/karajan2/src/cog/modules/karajan2/tests/scoping.k
branches/karajan2/src/cog/modules/karajan2/tests/scoping.k.expected
branches/karajan2/src/cog/modules/karajan2/tests/string-functions.k
branches/karajan2/src/cog/modules/karajan2/tests/string-functions.k.expected
branches/karajan2/src/cog/modules/karajan2/tests/types.k
branches/karajan2/src/cog/modules/karajan2/tests/types.k.expected
Removed Paths:
-------------
branches/karajan2/src/cog/modules/karajan2/examples/sys.k
branches/karajan2/src/cog/modules/karajan2/src/org/globus/cog/karajan/compiler/kernel/Karajan.java
branches/karajan2/src/cog/modules/karajan2/src/org/globus/cog/karajan/runtime/KFile.java
branches/karajan2/src/cog/modules/karajan2/src/org/globus/cog/karajan/runtime/KIterator.java
branches/karajan2/src/cog/modules/karajan2/src/org/globus/cog/karajan/runtime/KLine.java
branches/karajan2/src/cog/modules/karajan2/src/org/globus/cog/karajan/runtime/Types.java
branches/karajan2/src/cog/modules/karajan2/src/org/globus/cog/karajan/threading/KRunnable.java
Modified: branches/karajan2/src/cog/modules/karajan2/examples/order.k
===================================================================
--- branches/karajan2/src/cog/modules/karajan2/examples/order.k 2008-06-26 09:33:15 UTC (rev 2060)
+++ branches/karajan2/src/cog/modules/karajan2/examples/order.k 2008-06-27 00:16:28 UTC (rev 2061)
@@ -11,4 +11,4 @@
echo("a2")
print("b2")
)
-)
\ No newline at end of file
+)
Added: branches/karajan2/src/cog/modules/karajan2/examples/parallel-exception.k
===================================================================
--- branches/karajan2/src/cog/modules/karajan2/examples/parallel-exception.k (rev 0)
+++ branches/karajan2/src/cog/modules/karajan2/examples/parallel-exception.k 2008-06-27 00:16:28 UTC (rev 2061)
@@ -0,0 +1,6 @@
+import(sys)
+
+par(
+ (wait(delay=100), throw(Exception("testing2")))
+ (wait(delay=200), echo("grr"))
+)
\ No newline at end of file
Modified: branches/karajan2/src/cog/modules/karajan2/examples/scoping.k
===================================================================
--- branches/karajan2/src/cog/modules/karajan2/examples/scoping.k 2008-06-26 09:33:15 UTC (rev 2060)
+++ branches/karajan2/src/cog/modules/karajan2/examples/scoping.k 2008-06-27 00:16:28 UTC (rev 2061)
@@ -15,4 +15,4 @@
echo(x)
-echo(f())
\ No newline at end of file
+echo(f())
Deleted: branches/karajan2/src/cog/modules/karajan2/examples/sys.k
===================================================================
--- branches/karajan2/src/cog/modules/karajan2/examples/sys.k 2008-06-26 09:33:15 UTC (rev 2060)
+++ branches/karajan2/src/cog/modules/karajan2/examples/sys.k 2008-06-27 00:16:28 UTC (rev 2061)
@@ -1,16 +0,0 @@
-echo := native(org.globus.cog.karajan.lib.sys.Echo)
-print := native(org.globus.cog.karajan.lib.sys.Print)
-range := native(org.globus.cog.karajan.lib.sys.Range)
-wait := native(org.globus.cog.karajan.lib.sys.Wait)
-__eq___eq_ := native(org.globus.cog.karajan.lib.sys.Equals)
-__gt_ := native(org.globus.cog.karajan.lib.sys.GreaterThan)
-__lt_ := native(org.globus.cog.karajan.lib.sys.LessThan)
-__plus_ := native(org.globus.cog.karajan.lib.sys.Plus)
-__minus_ := native(org.globus.cog.karajan.lib.sys.Minus)
-__times_ := native(org.globus.cog.karajan.lib.sys.Times)
-
-throw := native(org.globus.cog.karajan.lib.sys.Throw)
-Exception := native(org.globus.cog.karajan.lib.sys.KException)
-
-export(echo, print, range, wait, __eq___eq_, __plus_, __minus_,
- throw, Exception, __gt_, __lt_, __times_)
Modified: branches/karajan2/src/cog/modules/karajan2/launchers.xml
===================================================================
--- branches/karajan2/src/cog/modules/karajan2/launchers.xml 2008-06-26 09:33:15 UTC (rev 2060)
+++ branches/karajan2/src/cog/modules/karajan2/launchers.xml 2008-06-27 00:16:28 UTC (rev 2061)
@@ -1,11 +1,14 @@
<project name="Launchers" default="create" basedir=".">
- <target name="create">
- <ant antfile="${main.buildfile}" target="launcher">
- <property name="launcher-name" value="k"/>
- <property name="class-name"
- value="org.globus.cog.karajan.Loader"/>
- </ant>
- </target>
- <target name="webstart">
- </target>
+ <target name="create">
+ <ant antfile="${main.buildfile}" target="launcher">
+ <property name="launcher-name" value="k"/>
+ <property name="class-name" value="org.globus.cog.karajan.Loader"/>
+ </ant>
+ <ant antfile="${main.buildfile}" target="launcher">
+ <property name="launcher-name" value="kc"/>
+ <property name="class-name" value="org.globus.cog.karajan.compiler.Compiler"/>
+ </ant>
+ </target>
+ <target name="webstart">
+ </target>
</project>
Modified: branches/karajan2/src/cog/modules/karajan2/resources/karajan-language.gr
===================================================================
--- branches/karajan2/src/cog/modules/karajan2/resources/karajan-language.gr 2008-06-26 09:33:15 UTC (rev 2060)
+++ branches/karajan2/src/cog/modules/karajan2/resources/karajan-language.gr 2008-06-27 00:16:28 UTC (rev 2061)
@@ -1,4 +1,4 @@
-program := HVSPACES() IDENTIFIER("karajan") BEGINELEMENT() body ENDELEMENT() ;
+program := HVSPACES() IDENTIFIER("main") BEGINELEMENT() body ENDELEMENT() ;
body :=
items EOF() |
@@ -20,14 +20,19 @@
comment moreItems |
expression moreItems |
LITERAL(":=") IDENTIFIER("k.set") op |
+ LITERAL(":") HSPACES() IDENTIFIER() HSPACES() typedecl? |
LITERAL("=") IDENTIFIER("k.map") op |
LITERAL("->") sigdef |
LITERAL("...") IDENTIFIER("...") VARIABLE() moreItems |
LITERAL(".") IDENTIFIER() HSPACES() invocation SWAP() ADDCHILD() itemOrCommentOrNone |
E() ;
-
+
op := BEGINELEMENT() SWAP() HVSPACES() expression maybeElse ENDELEMENT() moreItems ;
+typedecl? :=
+ LITERAL("=") IDENTIFIER("k.set") BEGINELEMENT() ROT() HVSPACES() expression ENDELEMENT() moreItems |
+ IDENTIFIER("k.typedecl") BEGINELEMENT() ROT() ENDELEMENT() moreItems ;
+
/* Rather crappy this one */
sigdef :=
REMOVECHILD() IDENTIFIER("k.sig") BEGINELEMENT() ENDELEMENT() SWAP() ADDCHILD()
@@ -64,7 +69,7 @@
seq := LITERAL("(") IDENTIFIER("k.seq") BEGINELEMENT() moreItems LITERAL(")") ENDELEMENT() ;
-value := number | string STRING() ;
+value := number | STRING() ;
action :=
invocation |
@@ -81,8 +86,6 @@
E() ;
block := IDENTIFIER("k.block") BEGINELEMENT() items LITERAL("}") ENDELEMENT() ;
-
-string := LITERAL(""") stringExpression LITERAL(""") ;
number :=
DIGITS() fractional |
@@ -92,14 +95,6 @@
fractional :=
LITERAL(".") DIGITS() FLOAT() NUMBER() |
E() NUMBER() ;
-
-stringExpression :=
- NOTLITERAL(""") ANYTOKEN() moreStringExpression |
- E() EMPTYSTRING() ;
-
-moreStringExpression :=
- NOTLITERAL(""") ANYTOKEN() CONCAT() moreStringExpression |
- E() ;
expression :=
comment expression |
@@ -121,7 +116,8 @@
ge0 := e0 | E() ;
o0 :=
- LITERAL("^") IDENTIFIER("^") ;
+ LITERAL("^") IDENTIFIER("^") |
+ LITERAL("::") IDENTIFIER("::") ;
e1 :=
comment |
Added: branches/karajan2/src/cog/modules/karajan2/resources/string.class
===================================================================
(Binary files differ)
Property changes on: branches/karajan2/src/cog/modules/karajan2/resources/string.class
___________________________________________________________________
Name: svn:mime-type
+ application/octet-stream
Added: branches/karajan2/src/cog/modules/karajan2/resources/string.java
===================================================================
--- branches/karajan2/src/cog/modules/karajan2/resources/string.java (rev 0)
+++ branches/karajan2/src/cog/modules/karajan2/resources/string.java 2008-06-27 00:16:28 UTC (rev 2061)
@@ -0,0 +1,218 @@
+import org.globus.cog.karajan.threading.LWThread;
+import org.globus.cog.karajan.threading.Yield;
+import org.globus.cog.karajan.runtime.Context;
+import org.globus.cog.karajan.runtime.Channel;
+import org.globus.cog.karajan.runtime.Exceptions;
+import org.globus.cog.karajan.runtime.Callable;
+import org.globus.cog.karajan.runtime.StdSink.StdoutSink;
+import org.globus.cog.karajan.runtime.StdSink.StderrSink;
+import org.globus.cog.karajan.runtime.NVPair;
+import org.globus.cog.karajan.runtime.Arguments;
+import java.util.Collection;
+import org.globus.cog.karajan.threading.StateTables;
+import org.globus.cog.karajan.threading.LWThreadDeath;
+import org.globus.cog.karajan.runtime.OrderedParallelChannel;
+import java.util.Iterator;
+import org.globus.cog.karajan.runtime.LookAheadIterator;
+import org.globus.cog.karajan.runtime.ExecutionException;
+import org.globus.cog.karajan.runtime.Abort;
+import org.globus.cog.karajan.compiler.VariableNotFoundException;
+import org.globus.cog.karajan.runtime.FutureValueChannel;
+import org.globus.cog.karajan.runtime.Futures;
+import org.globus.cog.karajan.compiler.Compiler;
+
+
+public final class string implements Runnable {
+ public static final String __ORIGNAME = "string.k";
+ public static void main(String[] args) {
+ LWThread thread = new LWThread(new string());
+ thread.start();
+ try {
+ thread.waitFor();
+ }
+ catch (InterruptedException e) {
+ e.printStackTrace();
+ }
+ }
+
+
+ public void run() {
+ final LWThread thread = LWThread.currentThread();
+ thread.checkSlice();
+ int __state__ = thread.popState();
+ switch(__state__) {
+ case 0: //main (string:1)
+ thread.ctx = new Context(33, thread.ctx);
+ case 1: //main (string:1)
+ thread.ctx.pushChannel(1, new StdoutSink());
+ thread.ctx.pushChannel(2, new StderrSink());
+ //[toUpperCase, matches, startsWith, toLowerCase, substring, lastIndexOf, indexOf, trim, endsWith, concat]
+ thread.ctx = new Context(10, thread.ctx);
+ case 2: //main (string:1)
+ k_dot_set_1_0000();
+ case 3: //main (string:1)
+ k_dot_set_3_0001();
+ case 4: //main (string:1)
+ k_dot_set_4_0002();
+ case 5: //main (string:1)
+ k_dot_set_5_0003();
+ case 6: //main (string:1)
+ k_dot_set_6_0004();
+ case 7: //main (string:1)
+ k_dot_set_7_0005();
+ case 8: //main (string:1)
+ k_dot_set_8_0006();
+ case 9: //main (string:1)
+ k_dot_set_10_0007();
+ case 10: //main (string:1)
+ k_dot_set_11_0008();
+ case 11: //main (string:1)
+ k_dot_set_12_0009();
+ case 12: //main (string:1)
+ // namespace (string:14)
+ k_dot_block_15_0010();
+ thread.popCtx();
+ thread.popCtx();
+ }
+ }
+
+ private void checkMismatch(int expected, int actual) throws ExecutionException {
+ if(expected != actual) {
+ throw new ExecutionException("Got " + expected + " identifier(s) and " + actual + " values");
+ }
+ }
+ // k.set (string:1)
+ private void k_dot_set_1_0000() {
+ LWThread thread = LWThread.currentThread();
+ thread.ctx.pushChannel(0);
+ // native (string:1)
+ thread.ctx.append(0, new org.globus.cog.karajan.lib.string.Str.Substring());
+ Channel def = thread.ctx.popChannel(0);
+ thread.ctx.set(0, def.get(0));
+ }
+
+ // k.set (string:3)
+ private void k_dot_set_3_0001() {
+ LWThread thread = LWThread.currentThread();
+ thread.ctx.pushChannel(0);
+ // native (string:3)
+ thread.ctx.append(0, new org.globus.cog.karajan.lib.string.Str.Concat());
+ Channel def = thread.ctx.popChannel(0);
+ thread.ctx.set(1, def.get(0));
+ }
+
+ // k.set (string:4)
+ private void k_dot_set_4_0002() {
+ LWThread thread = LWThread.currentThread();
+ thread.ctx.pushChannel(0);
+ // native (string:4)
+ thread.ctx.append(0, new org.globus.cog.karajan.lib.string.Str.StartsWith());
+ Channel def = thread.ctx.popChannel(0);
+ thread.ctx.set(2, def.get(0));
+ }
+
+ // k.set (string:5)
+ private void k_dot_set_5_0003() {
+ LWThread thread = LWThread.currentThread();
+ thread.ctx.pushChannel(0);
+ // native (string:5)
+ thread.ctx.append(0, new org.globus.cog.karajan.lib.string.Str.EndsWith());
+ Channel def = thread.ctx.popChannel(0);
+ thread.ctx.set(3, def.get(0));
+ }
+
+ // k.set (string:6)
+ private void k_dot_set_6_0004() {
+ LWThread thread = LWThread.currentThread();
+ thread.ctx.pushChannel(0);
+ // native (string:6)
+ thread.ctx.append(0, new org.globus.cog.karajan.lib.string.Str.IndexOf());
+ Channel def = thread.ctx.popChannel(0);
+ thread.ctx.set(4, def.get(0));
+ }
+
+ // k.set (string:7)
+ private void k_dot_set_7_0005() {
+ LWThread thread = LWThread.currentThread();
+ thread.ctx.pushChannel(0);
+ // native (string:7)
+ thread.ctx.append(0, new org.globus.cog.karajan.lib.string.Str.LastIndexOf());
+ Channel def = thread.ctx.popChannel(0);
+ thread.ctx.set(5, def.get(0));
+ }
+
+ // k.set (string:8)
+ private void k_dot_set_8_0006() {
+ LWThread thread = LWThread.currentThread();
+ thread.ctx.pushChannel(0);
+ // native (string:8)
+ thread.ctx.append(0, new org.globus.cog.karajan.lib.string.Str.Matches());
+ Channel def = thread.ctx.popChannel(0);
+ thread.ctx.set(6, def.get(0));
+ }
+
+ // k.set (string:10)
+ private void k_dot_set_10_0007() {
+ LWThread thread = LWThread.currentThread();
+ thread.ctx.pushChannel(0);
+ // native (string:10)
+ thread.ctx.append(0, new org.globus.cog.karajan.lib.string.Str.ToUpperCase());
+ Channel def = thread.ctx.popChannel(0);
+ thread.ctx.set(7, def.get(0));
+ }
+
+ // k.set (string:11)
+ private void k_dot_set_11_0008() {
+ LWThread thread = LWThread.currentThread();
+ thread.ctx.pushChannel(0);
+ // native (string:11)
+ thread.ctx.append(0, new org.globus.cog.karajan.lib.string.Str.ToLowerCase());
+ Channel def = thread.ctx.popChannel(0);
+ thread.ctx.set(8, def.get(0));
+ }
+
+ // k.set (string:12)
+ private void k_dot_set_12_0009() {
+ LWThread thread = LWThread.currentThread();
+ thread.ctx.pushChannel(0);
+ // native (string:12)
+ thread.ctx.append(0, new org.globus.cog.karajan.lib.string.Str.Trim());
+ Channel def = thread.ctx.popChannel(0);
+ thread.ctx.set(9, def.get(0));
+ }
+
+ // k.block (string:15)
+ private void k_dot_block_15_0010() {
+ final LWThread thread = LWThread.currentThread();
+ thread.checkSlice();
+ int __state__ = thread.popState();
+ switch(__state__) {
+ case 0: //k.block (string:15)
+ // export (string:16)
+ thread.ctx.getChannel(0).append(thread.ctx.get(0));
+ thread.ctx.getChannel(0).append(thread.ctx.get(1));
+ thread.ctx.getChannel(0).append(thread.ctx.get(2));
+ thread.ctx.getChannel(0).append(thread.ctx.get(3));
+ thread.ctx.getChannel(0).append(thread.ctx.get(4));
+ thread.ctx.getChannel(0).append(thread.ctx.get(5));
+ thread.ctx.getChannel(0).append(thread.ctx.get(6));
+ thread.ctx.getChannel(0).append(thread.ctx.get(7));
+ thread.ctx.getChannel(0).append(thread.ctx.get(8));
+ thread.ctx.getChannel(0).append(thread.ctx.get(9));
+ }
+ }
+
+ public static final int[] __LINE_TABLE = new int[] {
+ 44, 46, 51, 53, 55, 57, 59, 61, 63, 65, 67, 69, 71, 76, //run
+ 190//k_dot_block_15_0010
+ };
+ public static final int[] __STATE_TABLE = new int[] {
+ 0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, -1, //run
+ 0//k_dot_block_15_0010
+ };
+ static {
+ StateTables.register(string.class);
+ }
+ public static void __exports__() {
+ }
+}
Added: branches/karajan2/src/cog/modules/karajan2/resources/string.k
===================================================================
--- branches/karajan2/src/cog/modules/karajan2/resources/string.k (rev 0)
+++ branches/karajan2/src/cog/modules/karajan2/resources/string.k 2008-06-27 00:16:28 UTC (rev 2061)
@@ -0,0 +1,19 @@
+substring := native(org.globus.cog.karajan.lib.string.Str$Substring)
+//characters := native(org.globus.cog.karajan.lib.string.Str$Characters)
+concat := native(org.globus.cog.karajan.lib.string.Str$Concat)
+startsWith := native(org.globus.cog.karajan.lib.string.Str$StartsWith)
+endsWith := native(org.globus.cog.karajan.lib.string.Str$EndsWith)
+indexOf := native(org.globus.cog.karajan.lib.string.Str$IndexOf)
+lastIndexOf := native(org.globus.cog.karajan.lib.string.Str$LastIndexOf)
+matches := native(org.globus.cog.karajan.lib.string.Str$Matches)
+//split := native(org.globus.cog.karajan.lib.string.Str$Split)
+toUpperCase := native(org.globus.cog.karajan.lib.string.Str$ToUpperCase)
+toLowerCase := native(org.globus.cog.karajan.lib.string.Str$ToLowerCase)
+trim := native(org.globus.cog.karajan.lib.string.Str$Trim)
+
+namespace(string) {
+ export(
+ substring, concat, startsWith, endsWith, indexOf
+ lastIndexOf, matches, toUpperCase, toLowerCase, trim
+ )
+}
\ No newline at end of file
Added: branches/karajan2/src/cog/modules/karajan2/resources/sys.class
===================================================================
(Binary files differ)
Property changes on: branches/karajan2/src/cog/modules/karajan2/resources/sys.class
___________________________________________________________________
Name: svn:mime-type
+ application/octet-stream
Added: branches/karajan2/src/cog/modules/karajan2/resources/sys.java
===================================================================
--- branches/karajan2/src/cog/modules/karajan2/resources/sys.java (rev 0)
+++ branches/karajan2/src/cog/modules/karajan2/resources/sys.java 2008-06-27 00:16:28 UTC (rev 2061)
@@ -0,0 +1,330 @@
+import org.globus.cog.karajan.threading.LWThread;
+import org.globus.cog.karajan.threading.Yield;
+import org.globus.cog.karajan.runtime.Context;
+import org.globus.cog.karajan.runtime.Channel;
+import org.globus.cog.karajan.runtime.Exceptions;
+import org.globus.cog.karajan.runtime.Callable;
+import org.globus.cog.karajan.runtime.StdSink.StdoutSink;
+import org.globus.cog.karajan.runtime.StdSink.StderrSink;
+import org.globus.cog.karajan.runtime.NVPair;
+import org.globus.cog.karajan.runtime.Arguments;
+import java.util.Collection;
+import org.globus.cog.karajan.threading.StateTables;
+import org.globus.cog.karajan.threading.LWThreadDeath;
+import org.globus.cog.karajan.runtime.OrderedParallelChannel;
+import java.util.Iterator;
+import org.globus.cog.karajan.runtime.LookAheadIterator;
+import org.globus.cog.karajan.runtime.ExecutionException;
+import org.globus.cog.karajan.runtime.Abort;
+import org.globus.cog.karajan.compiler.VariableNotFoundException;
+import org.globus.cog.karajan.runtime.FutureValueChannel;
+import org.globus.cog.karajan.runtime.Futures;
+import org.globus.cog.karajan.compiler.Compiler;
+
+
+public final class sys implements Runnable {
+ public static final String __ORIGNAME = "sys.k";
+ public static void main(String[] args) {
+ LWThread thread = new LWThread(new sys());
+ thread.start();
+ try {
+ thread.waitFor();
+ }
+ catch (InterruptedException e) {
+ e.printStackTrace();
+ }
+ }
+
+
+ public void run() {
+ final LWThread thread = LWThread.currentThread();
+ thread.checkSlice();
+ int __state__ = thread.popState();
+ switch(__state__) {
+ case 0: //main (sys:1)
+ thread.ctx = new Context(33, thread.ctx);
+ case 1: //main (sys:1)
+ thread.ctx.pushChannel(1, new StdoutSink());
+ thread.ctx.pushChannel(2, new StderrSink());
+ //[Exception, range, __times_, __fwslash_, __gt___eq_, wait, __lt___eq_, echo, print, throw, __eq___eq_, __plus_, __gt_, __lt_, __minus_]
+ thread.ctx = new Context(15, thread.ctx);
+ case 2: //main (sys:1)
+ k_dot_set_1_0000();
+ case 3: //main (sys:1)
+ k_dot_set_2_0001();
+ case 4: //main (sys:1)
+ k_dot_set_3_0002();
+ case 5: //main (sys:1)
+ k_dot_set_4_0003();
+ case 6: //main (sys:1)
+ k_dot_set_5_0004();
+ case 7: //main (sys:1)
+ k_dot_set_6_0005();
+ case 8: //main (sys:1)
+ k_dot_set_9_0006();
+ case 9: //main (sys:1)
+ k_dot_set_13_0007();
+ case 10: //main (sys:1)
+ k_dot_set_16_0008();
+ case 11: //main (sys:1)
+ k_dot_set_20_0009();
+ case 12: //main (sys:1)
+ k_dot_set_25_0010();
+ case 13: //main (sys:1)
+ k_dot_set_29_0011();
+ case 14: //main (sys:1)
+ k_dot_set_33_0012();
+ case 15: //main (sys:1)
+ k_dot_set_37_0013();
+ case 16: //main (sys:1)
+ k_dot_set_38_0014();
+ case 17: //main (sys:1)
+ // namespace (sys:41)
+ k_dot_block_42_0015();
+ thread.popCtx();
+ thread.popCtx();
+ }
+ }
+
+ private void checkMismatch(int expected, int actual) throws ExecutionException {
+ if(expected != actual) {
+ throw new ExecutionException("Got " + expected + " identifier(s) and " + actual + " values");
+ }
+ }
+ // k.set (sys:1)
+ private void k_dot_set_1_0000() {
+ LWThread thread = LWThread.currentThread();
+ thread.ctx.pushChannel(0);
+ // native (sys:1)
+ thread.ctx.append(0, new org.globus.cog.karajan.lib.sys.Echo());
+ Channel def = thread.ctx.popChannel(0);
+ thread.ctx.set(0, def.get(0));
+ }
+
+ // k.set (sys:2)
+ private void k_dot_set_2_0001() {
+ LWThread thread = LWThread.currentThread();
+ thread.ctx.pushChannel(0);
+ // native (sys:2)
+ thread.ctx.append(0, new org.globus.cog.karajan.lib.sys.Print());
+ Channel def = thread.ctx.popChannel(0);
+ thread.ctx.set(1, def.get(0));
+ }
+
+ // k.set (sys:3)
+ private void k_dot_set_3_0002() {
+ LWThread thread = LWThread.currentThread();
+ thread.ctx.pushChannel(0);
+ // native (sys:3)
+ thread.ctx.append(0, new org.globus.cog.karajan.lib.sys.Range());
+ Channel def = thread.ctx.popChannel(0);
+ thread.ctx.set(2, def.get(0));
+ }
+
+ // k.set (sys:4)
+ private void k_dot_set_4_0003() {
+ LWThread thread = LWThread.currentThread();
+ thread.ctx.pushChannel(0);
+ // native (sys:4)
+ thread.ctx.append(0, new org.globus.cog.karajan.lib.sys.Wait());
+ Channel def = thread.ctx.popChannel(0);
+ thread.ctx.set(3, def.get(0));
+ }
+
+ // k.set (sys:5)
+ private void k_dot_set_5_0004() {
+ LWThread thread = LWThread.currentThread();
+ thread.ctx.pushChannel(0);
+ // native (sys:5)
+ thread.ctx.append(0, new org.globus.cog.karajan.lib.sys.Equals());
+ Channel def = thread.ctx.popChannel(0);
+ thread.ctx.set(4, def.get(0));
+ }
+
+ // k.set (sys:6)
+ private void k_dot_set_6_0005() {
+ LWThread thread = LWThread.currentThread();
+ thread.ctx.pushChannel(0);
+ // | (sys:8)
+ thread.ctx.pushChannel(0);
+ // native (sys:7)
+ thread.ctx.append(0, new org.globus.cog.karajan.lib.sys.GreaterThan.Real());
+ // native (sys:8)
+ thread.ctx.append(0, new org.globus.cog.karajan.lib.sys.GreaterThan.Integer());
+ thread.ctx.append(0, thread.ctx.popChannel(0));
+ Channel def = thread.ctx.popChannel(0);
+ thread.ctx.set(5, def.get(0));
+ }
+
+ // k.set (sys:9)
+ private void k_dot_set_9_0006() {
+ LWThread thread = LWThread.currentThread();
+ thread.ctx.pushChannel(0);
+ // | (sys:11)
+ thread.ctx.pushChannel(0);
+ // native (sys:10)
+ thread.ctx.append(0, new org.globus.cog.karajan.lib.sys.LessThan.Real());
+ // native (sys:11)
+ thread.ctx.append(0, new org.globus.cog.karajan.lib.sys.LessThan.Integer());
+ thread.ctx.append(0, thread.ctx.popChannel(0));
+ Channel def = thread.ctx.popChannel(0);
+ thread.ctx.set(6, def.get(0));
+ }
+
+ // k.set (sys:13)
+ private void k_dot_set_13_0007() {
+ LWThread thread = LWThread.currentThread();
+ thread.ctx.pushChannel(0);
+ // | (sys:15)
+ thread.ctx.pushChannel(0);
+ // native (sys:14)
+ thread.ctx.append(0, new org.globus.cog.karajan.lib.sys.GreaterOrEqual.Real());
+ // native (sys:15)
+ thread.ctx.append(0, new org.globus.cog.karajan.lib.sys.GreaterOrEqual.Integer());
+ thread.ctx.append(0, thread.ctx.popChannel(0));
+ Channel def = thread.ctx.popChannel(0);
+ thread.ctx.set(7, def.get(0));
+ }
+
+ // k.set (sys:16)
+ private void k_dot_set_16_0008() {
+ LWThread thread = LWThread.currentThread();
+ thread.ctx.pushChannel(0);
+ // | (sys:18)
+ thread.ctx.pushChannel(0);
+ // native (sys:17)
+ thread.ctx.append(0, new org.globus.cog.karajan.lib.sys.LessOrEqual.Real());
+ // native (sys:18)
+ thread.ctx.append(0, new org.globus.cog.karajan.lib.sys.LessOrEqual.Integer());
+ thread.ctx.append(0, thread.ctx.popChannel(0));
+ Channel def = thread.ctx.popChannel(0);
+ thread.ctx.set(8, def.get(0));
+ }
+
+ // k.set (sys:20)
+ private void k_dot_set_20_0009() {
+ LWThread thread = LWThread.currentThread();
+ thread.ctx.pushChannel(0);
+ // | (sys:22)
+ thread.ctx.pushChannel(0);
+ // native (sys:21)
+ thread.ctx.append(0, new org.globus.cog.karajan.lib.sys.Plus.Real());
+ thread.ctx.pushChannel(0);
+ // | (sys:23)
+ thread.ctx.pushChannel(0);
+ // native (sys:22)
+ thread.ctx.append(0, new org.globus.cog.karajan.lib.sys.Plus.Integer());
+ // native (sys:23)
+ thread.ctx.append(0, new org.globus.cog.karajan.lib.sys.Plus.String());
+ thread.ctx.append(0, thread.ctx.popChannel(0));
+ thread.ctx.appendAll(0, (Channel) ((Channel) thread.ctx.popChannel(0)).get(0));
+ thread.ctx.append(0, thread.ctx.popChannel(0));
+ Channel def = thread.ctx.popChannel(0);
+ thread.ctx.set(9, def.get(0));
+ }
+
+ // k.set (sys:25)
+ private void k_dot_set_25_0010() {
+ LWThread thread = LWThread.currentThread();
+ thread.ctx.pushChannel(0);
+ // | (sys:27)
+ thread.ctx.pushChannel(0);
+ // native (sys:26)
+ thread.ctx.append(0, new org.globus.cog.karajan.lib.sys.Minus.Real());
+ // native (sys:27)
+ thread.ctx.append(0, new org.globus.cog.karajan.lib.sys.Minus.Integer());
+ thread.ctx.append(0, thread.ctx.popChannel(0));
+ Channel def = thread.ctx.popChannel(0);
+ thread.ctx.set(10, def.get(0));
+ }
+
+ // k.set (sys:29)
+ private void k_dot_set_29_0011() {
+ LWThread thread = LWThread.currentThread();
+ thread.ctx.pushChannel(0);
+ // | (sys:31)
+ thread.ctx.pushChannel(0);
+ // native (sys:30)
+ thread.ctx.append(0, new org.globus.cog.karajan.lib.sys.Times.Integer());
+ // native (sys:31)
+ thread.ctx.append(0, new org.globus.cog.karajan.lib.sys.Times.Real());
+ thread.ctx.append(0, thread.ctx.popChannel(0));
+ Channel def = thread.ctx.popChannel(0);
+ thread.ctx.set(11, def.get(0));
+ }
+
+ // k.set (sys:33)
+ private void k_dot_set_33_0012() {
+ LWThread thread = LWThread.currentThread();
+ thread.ctx.pushChannel(0);
+ // | (sys:35)
+ thread.ctx.pushChannel(0);
+ // native (sys:34)
+ thread.ctx.append(0, new org.globus.cog.karajan.lib.sys.Div.Integer());
+ // native (sys:35)
+ thread.ctx.append(0, new org.globus.cog.karajan.lib.sys.Div.Real());
+ thread.ctx.append(0, thread.ctx.popChannel(0));
+ Channel def = thread.ctx.popChannel(0);
+ thread.ctx.set(12, def.get(0));
+ }
+
+ // k.set (sys:37)
+ private void k_dot_set_37_0013() {
+ LWThread thread = LWThread.currentThread();
+ thread.ctx.pushChannel(0);
+ // native (sys:37)
+ thread.ctx.append(0, new org.globus.cog.karajan.lib.sys.Throw());
+ Channel def = thread.ctx.popChannel(0);
+ thread.ctx.set(13, def.get(0));
+ }
+
+ // k.set (sys:38)
+ private void k_dot_set_38_0014() {
+ LWThread thread = LWThread.currentThread();
+ thread.ctx.pushChannel(0);
+ // native (sys:38)
+ thread.ctx.append(0, new org.globus.cog.karajan.lib.sys.KException());
+ Channel def = thread.ctx.popChannel(0);
+ thread.ctx.set(14, def.get(0));
+ }
+
+ // k.block (sys:42)
+ private void k_dot_block_42_0015() {
+ final LWThread thread = LWThread.currentThread();
+ thread.checkSlice();
+ int __state__ = thread.popState();
+ switch(__state__) {
+ case 0: //k.block (sys:42)
+ // export (sys:43)
+ thread.ctx.getChannel(0).append(thread.ctx.get(0));
+ thread.ctx.getChannel(0).append(thread.ctx.get(1));
+ thread.ctx.getChannel(0).append(thread.ctx.get(2));
+ thread.ctx.getChannel(0).append(thread.ctx.get(3));
+ thread.ctx.getChannel(0).append(thread.ctx.get(4));
+ thread.ctx.getChannel(0).append(thread.ctx.get(6));
+ thread.ctx.getChannel(0).append(thread.ctx.get(5));
+ thread.ctx.getChannel(0).append(thread.ctx.get(8));
+ thread.ctx.getChannel(0).append(thread.ctx.get(7));
+ thread.ctx.getChannel(0).append(thread.ctx.get(9));
+ thread.ctx.getChannel(0).append(thread.ctx.get(10));
+ thread.ctx.getChannel(0).append(thread.ctx.get(11));
+ thread.ctx.getChannel(0).append(thread.ctx.get(12));
+ thread.ctx.getChannel(0).append(thread.ctx.get(13));
+ thread.ctx.getChannel(0).append(thread.ctx.get(14));
+ }
+ }
+
+ public static final int[] __LINE_TABLE = new int[] {
+ 44, 46, 51, 53, 55, 57, 59, 61, 63, 65, 67, 69, 71, 73, 75, 77, 79, 81, 86, //run
+ 297//k_dot_block_42_0015
+ };
+ public static final int[] __STATE_TABLE = new int[] {
+ 0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15, 16, 17, -1, //run
+ 0//k_dot_block_42_0015
+ };
+ static {
+ StateTables.register(sys.class);
+ }
+ public static void __exports__() {
+ }
+}
Added: branches/karajan2/src/cog/modules/karajan2/resources/sys.k
===================================================================
--- branches/karajan2/src/cog/modules/karajan2/resources/sys.k (rev 0)
+++ branches/karajan2/src/cog/modules/karajan2/resources/sys.k 2008-06-27 00:16:28 UTC (rev 2061)
@@ -0,0 +1,48 @@
+echo := native(org.globus.cog.karajan.lib.sys.Echo)
+print := native(org.globus.cog.karajan.lib.sys.Print)
+range := native(org.globus.cog.karajan.lib.sys.Range)
+wait := native(org.globus.cog.karajan.lib.sys.Wait)
+__eq___eq_ := native(org.globus.cog.karajan.lib.sys.Equals)
+__gt_ :=
+ native(org.globus.cog.karajan.lib.sys.GreaterThan$Real)
+ | native(org.globus.cog.karajan.lib.sys.GreaterThan$Integer)
+__lt_ :=
+ native(org.globus.cog.karajan.lib.sys.LessThan$Real)
+ | native(org.globus.cog.karajan.lib.sys.LessThan$Integer)
+
+__gt___eq_ :=
+ native(org.globus.cog.karajan.lib.sys.GreaterOrEqual$Real)
+ | native(org.globus.cog.karajan.lib.sys.GreaterOrEqual$Integer)
+__lt___eq_ :=
+ native(org.globus.cog.karajan.lib.sys.LessOrEqual$Real)
+ | native(org.globus.cog.karajan.lib.sys.LessOrEqual$Integer)
+
+__plus_ :=
+ native(org.globus.cog.karajan.lib.sys.Plus$Real)
+ | native(org.globus.cog.karajan.lib.sys.Plus$Integer)
+ | native(org.globus.cog.karajan.lib.sys.Plus$String)
+
+__minus_ :=
+ native(org.globus.cog.karajan.lib.sys.Minus$Real)
+ | native(org.globus.cog.karajan.lib.sys.Minus$Integer)
+
+__times_ :=
+ native(org.globus.cog.karajan.lib.sys.Times$Integer)
+ | native(org.globus.cog.karajan.lib.sys.Times$Real)
+
+__fwslash_ :=
+ native(org.globus.cog.karajan.lib.sys.Div$Integer)
+ | native(org.globus.cog.karajan.lib.sys.Div$Real)
+
+throw := native(org.globus.cog.karajan.lib.sys.Throw)
+Exception := native(org.globus.cog.karajan.lib.sys.KException)
+
+
+namespace(sys) {
+ export(
+ echo, print, range, wait,
+ __eq___eq_, __lt_, __gt_, __lt___eq_, __gt___eq_,
+ __plus_, __minus_, __times_, __fwslash_,
+ throw, Exception
+ )
+}
\ No newline at end of file
Modified: branches/karajan2/src/cog/modules/karajan2/src/org/globus/cog/karajan/Loader.java
===================================================================
--- branches/karajan2/src/cog/modules/karajan2/src/org/globus/cog/karajan/Loader.java 2008-06-26 09:33:15 UTC (rev 2060)
+++ branches/karajan2/src/cog/modules/karajan2/src/org/globus/cog/karajan/Loader.java 2008-06-27 00:16:28 UTC (rev 2061)
@@ -41,6 +41,8 @@
public static final String ARG_CSTDOUT = "stdoutUnordered";
public static void main(String[] argv) {
+ //new Trr().trr();
+ //System.exit(0);
ArgumentParser ap = buildArgumentParser();
boolean debug = false, cache = false;
long start = System.currentTimeMillis();
@@ -92,6 +94,7 @@
}
boolean runerror = false;
+ long s2 = start;
try {
ElementTree tree;
@@ -106,6 +109,7 @@
Class<Runnable> cls = Compiler.getDefault().compileAndLoad(tree);
Constructor<Runnable> c = cls.getConstructor(new Class<?>[] {});
Runnable r = c.newInstance();
+ s2 = System.currentTimeMillis();
LWThread t = new LWThread(r);
t.start();
t.waitFor();
@@ -123,7 +127,9 @@
long end = System.currentTimeMillis();
if (Configuration.getDefault().getFlag(Configuration.SHOW_STATISTICS)) {
System.out.println("Done.");
- System.out.println("Total execution time: " + ((double) (end - start) / 1000) + " s");
+ System.out.println("Total time: " + ((double) (end - start) / 1000) + " s");
+ System.out.println("Execution time: " + ((double) (end - s2) / 1000) + " s");
+ System.out.println("Context switches: " + LWThread.contextSwitches);
System.out.println("Memory in use at termination: "
+ (Runtime.getRuntime().totalMemory() - Runtime.getRuntime().freeMemory())
/ 1024 + "KB");
@@ -144,7 +150,7 @@
return load("_", br, source.startsWith("<"));
}
- private static ElementTree load(String name, Reader reader, boolean xml)
+ public static ElementTree load(String name, Reader reader, boolean xml)
throws SpecificationException {
try {
ElementTree source;
@@ -200,4 +206,50 @@
private static void installKeyboardHooks() {
}
+
+
+
+ public static class Trr implements Runnable {
+ public void trr() {
+ long s = System.currentTimeMillis();
+ int sz = 200000;
+ LWThread t[] = new LWThread[sz];
+ for (int i = 0; i < sz; i++) {
+ t[i] = new LWThread(this);
+ t[i].start();
+ }
+ for (int i = 0; i < sz; i++) {
+ try {
+ t[i].waitFor();
+ }
+ catch (InterruptedException e1) {
+ e1.printStackTrace();
+ }
+ }
+ long e = System.currentTimeMillis();
+ System.out.println(e - s);
+ System.out.println((e - s) / 200);
+ }
+
+ public void run() {
+ int x = bzz(11);
+ }
+
+ public int bzz(int x) {
+ Thread t = Thread.currentThread();
+ if (t.isDaemon()) {
+ System.err.println("?");
+ }
+ x = x - 1;
+ switch(x) {
+ case 0:
+ t();
+ default:
+ return bzz(x);
+ }
+ }
+ public void t() {
+ LWThread.currentThread().die();
+ }
+ }
}
\ No newline at end of file
Modified: branches/karajan2/src/cog/modules/karajan2/src/org/globus/cog/karajan/compiler/Compiler.java
===================================================================
--- branches/karajan2/src/cog/modules/karajan2/src/org/globus/cog/karajan/compiler/Compiler.java 2008-06-26 09:33:15 UTC (rev 2060)
+++ branches/karajan2/src/cog/modules/karajan2/src/org/globus/cog/karajan/compiler/Compiler.java 2008-06-27 00:16:28 UTC (rev 2061)
@@ -21,272 +21,344 @@
import java.util.HashMap;
import java.util.Map;
-import org.globus.cog.karajan.compiler.kernel.Def;
-import org.globus.cog.karajan.compiler.kernel.Export;
-import org.globus.cog.karajan.compiler.kernel.For;
-import org.globus.cog.karajan.compiler.kernel.Function;
-import org.globus.cog.karajan.compiler.kernel.GenericSeq;
-import org.globus.cog.karajan.compiler.kernel.If;
-import org.globus.cog.karajan.compiler.kernel.Import;
-import org.globus.cog.karajan.compiler.kernel.Karajan;
-import org.globus.cog.karajan.compiler.kernel.Named;
-import org.globus.cog.karajan.compiler.kernel.Native;
-import org.globus.cog.karajan.compiler.kernel.Num;
-import org.globus.cog.karajan.compiler.kernel.Par;
-import org.globus.cog.karajan.compiler.kernel.Seq;
-import org.globus.cog.karajan.compiler.kernel.Set;
-import org.globus.cog.karajan.compiler.kernel.Str;
-import org.globus.cog.karajan.compiler.kernel.Var;
+import org.globus.cog.karajan.Loader;
+import org.globus.cog.karajan.compiler.kernel.*;
+import org.globus.cog.karajan.compiler.types.Types;
import org.globus.cog.karajan.parser.ElementTree;
import org.globus.cog.karajan.parser.Node;
+import org.globus.cog.karajan.runtime.Context;
public class Compiler {
-
- public static final boolean KEEP_FILES = true;
- private static Compiler defaultCompiler;
+ public static final boolean KEEP_FILES = true;
- public synchronized static Compiler getDefault() {
- if (defaultCompiler == null) {
- defaultCompiler = new Compiler();
- }
- return defaultCompiler;
- }
+ private static Compiler defaultCompiler;
- private File tmpdir;
+ public synchronized static Compiler getDefault() {
+ if (defaultCompiler == null) {
+ defaultCompiler = new Compiler();
+ }
+ return defaultCompiler;
+ }
- public Compiler() {
- }
+ private File tmpdir;
- public Class<Runnable> compileAndLoad(ElementTree tree) throws CompilationException {
- try {
- return loadClass(compile(tree));
- }
- catch (IOException e) {
- throw new CompilationException(tree.getRoot(), e);
- }
- }
-
- public File compile(ElementTree tree) throws CompilationException {
- tree.getRoot().setProperty(Node.FILENAME, className(tree));
- return compile(tree.getRoot(), className(tree));
- }
-
- public Type analize(ElementTree tree) throws CompilationException {
- tree.getRoot().setProperty(Node.FILENAME, className(tree));
- return analyze(tree.getRoot(), className(tree));
- }
-
- public String className(ElementTree tree) {
- return Def.identifier(tree.getName());
- }
+ public Compiler() {
+ }
- private File compile(Node root, String name) throws CompilationException {
- try {
- Scope kernel = initializeKernel();
- State state = new State(kernel);
- state = state.forkScope();
- synchronized(this) {
- if (tmpdir == null) {
- //tmpdir = new File("/tmp/karajan_compiler/");
- tmpdir = new File(".");
- tmpdir.mkdirs();
- //tmpdir = createTempDir();
- if (!KEEP_FILES) {
- tmpdir.deleteOnExit();
- }
- }
- }
- state.setClassName(name);
- OutputContext oc = new OutputContext();
- compile(root, state, oc);
- File of = new File(tmpdir, name + ".java");
- if (!KEEP_FILES) {
- of.deleteOnExit();
- }
- Writer wr = new IndentingWriter(new FileWriter(of));
- oc.commit(wr);
- wr.close();
- //copyFile(of, "../src/" + of.getName());
- compileJava(of);
- return new File(of.getParentFile(), name);
- }
- catch (VariableNotFoundException e) {
- throw new CompilationException(root, e);
- }
- catch (InterruptedException e) {
- throw new CompilationException(root, e);
- }
- catch (IOException e) {
- throw new CompilationException(root, e);
- }
- }
-
- private Type analyze(Node root, String name) throws CompilationException {
- try {
- Scope kernel = initializeKernel();
- State state = new State(kernel);
- state = state.forkScope();
- state.setClassName("");
- return analize(root, state);
- }
- catch (VariableNotFoundException e) {
- throw new CompilationException(root, e);
- }
- }
+ public Class<Runnable> compileAndLoad(ElementTree tree)
+ throws CompilationException {
+ try {
+ return loadClass(compile(tree));
+ }
+ catch (IOException e) {
+ throw new CompilationException(tree.getRoot(), e);
+ }
+ }
- private File createTempDir() throws IOException {
- File f = File.createTempFile("karajan", "");
- if (!f.delete()) {
- throw new IOException("Cannot delete file " + f);
- }
- if (!f.mkdir()) {
- throw new IOException("Cannot create directory " + f);
- }
- return f;
- }
-
- private static Map<File, DynamicClassLoader> classLoaders;
-
- private DynamicClassLoader getClassLoader(File dir) throws MalformedURLException {
- synchronized(Compiler.class) {
- if (classLoaders == null) {
- classLoaders = new HashMap<File, DynamicClassLoader>();
- }
- DynamicClassLoader cl = classLoaders.get(dir);
- if (cl == null) {
- cl = new DynamicClassLoader(dir);
- classLoaders.put(dir, cl);
- }
- return cl;
- }
- }
+ public File compile(ElementTree tree) throws CompilationException {
+ tree.getRoot().setProperty("origname", tree.getName());
+ tree.getRoot().setProperty(Node.FILENAME, className(tree));
+ return compile(tree.getRoot(), className(tree));
+ }
- private Class<Runnable> loadClass(File f) throws IOException {
- try {
- DynamicClassLoader cl = getClassLoader(f.getParentFile());
- Class<Runnable> cls = (Class<Runnable>) cl.loadClass(f.getName());
- return cls;
- }
- catch (ClassNotFoundException e) {
- throw new IOException("Could not load " + f.getName(), e);
- }
- catch (Exception e) {
- throw new IOException("Invalid dir " + f.getParent(), e);
- }
- }
+ public Type analize(ElementTree tree) throws CompilationException {
+ tree.getRoot().setProperty("origname", tree.getName());
+ tree.getRoot().setProperty(Node.FILENAME, className(tree));
+ return analyze(tree.getRoot(), className(tree));
+ }
- private void compileJava(File f) throws IOException, InterruptedException {
- String classpath = System.getProperty("java.class.path");
- classpath = classpath + File.pathSeparator + f.getParentFile().getAbsolutePath();
- String javaHome = System.getProperty("java.home");
- String javac = javaHome + File.separator + "../bin/javac";
- Process p = Runtime.getRuntime().exec(
- new String[] { javac, "-classpath", classpath, f.getAbsolutePath() });
- String[] output = consumeOutputs(p);
- if (p.exitValue() != 0) {
- throw new IOException("Java compilation failed:\n" + output[0] + "\n" + output[1]);
- }
- else {
- String name = f.getName().substring(0, f.getName().length() - 5);
- File of = new File(f.getParent() + File.separator + name + ".class");
- if (!KEEP_FILES) {
- of.deleteOnExit();
- }
- }
- }
+ public String className(ElementTree tree) {
+ return replaceSymbols(base(tree.getName()));
+ }
- private String[] consumeOutputs(Process p) throws IOException, InterruptedException {
- ByteArrayOutputStream out = new ByteArrayOutputStream();
- ByteArrayOutputStream err = new ByteArrayOutputStream();
- InputStream os = p.getInputStream();
- InputStream es = p.getErrorStream();
- byte[] buf = new byte[128];
- while (!processDone(p)) {
- int oa = os.available();
- if (oa > 0) {
- int len = os.read(buf, 0, Math.min(oa, buf.length));
- out.write(buf, 0, len);
- }
- int ea = es.available();
- if (ea > 0) {
- int len = es.read(buf, 0, Math.min(ea, buf.length));
- err.write(buf, 0, len);
- }
- if (oa + ea == 0) {
- Thread.sleep(20);
- }
- }
- return new String[] { out.toString(), err.toString() };
- }
+ private String base(String name) {
+ int i = name.lastIndexOf('.');
+ if (i == -1) {
+ return name;
+ }
+ else {
+ return name.substring(0, i);
+ }
+ }
- private boolean processDone(Process p) {
- try {
- p.exitValue();
- return true;
- }
- catch (IllegalThreadStateException e) {
- return false;
- }
- }
-
- private void copyFile(File src, String dest) throws IOException {
- byte[] buf = new byte[1024];
- FileInputStream fis = new FileInputStream(src);
- FileOutputStream fos = new FileOutputStream(dest);
- int len = fis.read(buf);
- while (len > 0) {
- fos.write(buf, 0, len);
- len = fis.read(buf);
- }
- fis.close();
- fos.close();
- }
+ private String replaceSymbols(String s) {
+ StringBuffer sb = new StringBuffer();
+ for (int i = 0; i < s.length(); i++) {
+ char c = s.charAt(i);
+ if (Character.isJavaIdentifierPart(c)) {
+ sb.append(c);
+ }
+ else {
+ sb.append('_');
+ }
+ }
+ return sb.toString();
+ }
- private void compile(Node node, State state, OutputContext oc) throws CompilationException,
- VariableNotFoundException {
- Def def = state.getScope().lookupDef(new QName(node.getNodeType()));
- def.analyze(node, state);
- String name = def.compile(node, oc);
- }
-
- private Type analize(Node node, State state) throws CompilationException,
- VariableNotFoundException {
- Def def = state.getScope().lookupDef(new QName(node.getNodeType()));
- return def.analyze(node, state);
- }
+ private File compile(Node root, String name) throws CompilationException {
+ try {
+ Scope kernel = initializeKernel();
+ State state = new State(kernel);
+ state = state.forkScopeHard();
+ synchronized (this) {
+ if (tmpdir == null) {
+ // tmpdir = new File("/tmp/karajan_compiler/");
+ tmpdir = new File(".");
+ tmpdir.mkdirs();
+ // tmpdir = createTempDir();
+ if (!KEEP_FILES) {
+ tmpdir.deleteOnExit();
+ }
+ }
+ }
+ state.setClassName(name);
+ OutputContext oc = new OutputContext();
+ compile(root, state, oc);
+ File of = new File(tmpdir, name + ".java");
+ if (!KEEP_FILES) {
+ of.deleteOnExit();
+ }
+ Writer wr = new IndentingWriter(new FileWriter(of));
+ oc.commit(wr);
+ wr.close();
+ //copyFile(of, "../src/" + of.getName());
+ compileJava(of);
+ return new File(of.getParentFile(), name);
+ }
+ catch (VariableNotFoundException e) {
+ throw new CompilationException(root, e);
+ }
+ catch (InterruptedException e) {
+ throw new CompilationException(root, e);
+ }
+ catch (IOException e) {
+ throw new CompilationException(root, e);
+ }
+ }
- public static final String KERNEL = "k";
+ private Type analyze(Node root, String name) throws CompilationException {
+ try {
+ Scope kernel = initializeKernel();
+ State state = new State(kernel);
+ state = state.forkScope();
+ state.setClassName("");
+ return analize(root, state);
+ }
+ catch (VariableNotFoundException e) {
+ throw new CompilationException(root, e);
+ }
+ }
- private Scope initializeKernel() {
- Scope s = new Scope();
- addDef(s, "seq", new Seq());
- addDef(s, "par", new Par());
- addDef(s, "karajan", new Karajan());
- addDef(s, "set", new Set());
- addDef(s, "var", new Var());
- addDef(s, "number", new Num());
- addDef(s, "string", new Str());
- addDef(s, "native", new Native());
- addDef(s, "function", new Function());
- addDef(s, "named", new Named());
- addDef(s, "bref", new GenericSeq());
- addDef(s, "block", new GenericSeq());
- addDef(s, "connect", new GenericSeq());
- addDef(s, "to", new GenericSeq());
- addDef(s, "if", new If());
- addDef(s, "for", new For());
- addDef(s, "import", new Import());
- addDef(s, "export", new Export());
- s.set(s.addVar(new QName("k", "true")), new TypedValue(null, Boolean.TRUE));
- s.set(s.addVar(new QName("k", "false")), new TypedValue(null, Boolean.FALSE));
- return s;
- }
+ private File createTempDir() throws IOException {
+ File f = File.createTempFile("karajan", "");
+ if (!f.delete()) {
+ throw new IOException("Cannot delete file " + f);
+ }
+ if (!f.mkdir()) {
+ throw new IOException("Cannot create directory " + f);
+ }
+ return f;
+ }
- private void addDef(Scope s, String name, Def def) {
- QName qn = new QName(KERNEL, name);
- VarRef ref = s.addVar(qn);
- def.setName(qn);
- s.set(ref, new TypedValue(new Lambda(), def));
- }
+ private static Map<File, DynamicClassLoader> classLoaders;
+
+ private DynamicClassLoader getClassLoader(File dir)
+ throws MalformedURLException {
+ synchronized (Compiler.class) {
+ if (classLoaders == null) {
+ classLoaders = new HashMap<File, DynamicClassLoader>();
+ }
+ DynamicClassLoader cl = classLoaders.get(dir);
+ if (cl == null) {
+ cl = new DynamicClassLoader(dir);
+ classLoaders.put(dir, cl);
+ }
+ return cl;
+ }
+ }
+
+ private Class<Runnable> loadClass(File f) throws IOException {
+ try {
+ DynamicClassLoader cl = getClassLoader(f.getParentFile());
+ Class<Runnable> cls = (Class<Runnable>) cl.loadClass(f.getName());
+ return cls;
+ }
+ catch (ClassNotFoundException e) {
+ throw new IOException("Could not load " + f.getName(), e);
+ }
+ catch (Exception e) {
+ throw new IOException("Invalid dir " + f.getParent(), e);
+ }
+ }
+
+ private void compileJava(File f) throws IOException, InterruptedException {
+ String classpath = System.getProperty("java.class.path");
+ classpath = classpath + File.pathSeparator
+ + f.getParentFile().getAbsolutePath();
+ String javaHome = System.getProperty("java.home");
+ String javac = java...
[truncated message content] |