| 1 |
package |
|---|
| 2 |
{ |
|---|
| 3 |
import flash.display.Sprite; |
|---|
| 4 |
|
|---|
| 5 |
import org.libspark.haskell.parser.IParser; |
|---|
| 6 |
import org.libspark.haskell.parser.kmyacc.KmyaccParser; |
|---|
| 7 |
import org.libspark.haskell.parser.nodes.EvaluteContext; |
|---|
| 8 |
import org.libspark.haskell.parser.nodes.INode; |
|---|
| 9 |
|
|---|
| 10 |
public class HaskellHackathon extends Sprite |
|---|
| 11 |
{ |
|---|
| 12 |
public function HaskellHackathon() |
|---|
| 13 |
{ |
|---|
| 14 |
var parser:IParser = new KmyaccParser(); |
|---|
| 15 |
|
|---|
| 16 |
var source:String = |
|---|
| 17 |
/** |
|---|
| 18 |
'foo x y = x + y;' + |
|---|
| 19 |
'trace = foo 3 4' |
|---|
| 20 |
/**/ |
|---|
| 21 |
'foo x y = x + y;' + |
|---|
| 22 |
'hoge z = foo 4 z;' + |
|---|
| 23 |
'fuga i k = i + hoge k;' + |
|---|
| 24 |
'trace = fuga 1 2' |
|---|
| 25 |
/** |
|---|
| 26 |
'main = trace (1 + 2 * 3 + 4 * 5 * 6);' + |
|---|
| 27 |
'foo x y = x + y;' + |
|---|
| 28 |
'hoge = 2' |
|---|
| 29 |
/** |
|---|
| 30 |
'factA 0 = 1;' + |
|---|
| 31 |
'factA n = n * factA (n-1);' |
|---|
| 32 |
/** |
|---|
| 33 |
'factB n | n==0 = 1' + |
|---|
| 34 |
' | otherwise = n * factB (n-1);' |
|---|
| 35 |
/** |
|---|
| 36 |
' factC n = if n==0' + |
|---|
| 37 |
' then 1' + |
|---|
| 38 |
' else n * factC (n-1);' + |
|---|
| 39 |
' factD n = case n of' + |
|---|
| 40 |
' 0 -> 1' + |
|---|
| 41 |
' _ -> n * factD (n-1);' |
|---|
| 42 |
/**/ |
|---|
| 43 |
|
|---|
| 44 |
var node:INode = parser.parse(source); |
|---|
| 45 |
|
|---|
| 46 |
node.evalute(new EvaluteContext()); |
|---|
| 47 |
} |
|---|
| 48 |
} |
|---|
| 49 |
} |
|---|