Skip to content

Instantly share code, notes, and snippets.

View kmizu's full-sized avatar

Kota Mizushima kmizu

View GitHub Profile
@kmizu
kmizu / Example.mini
Created November 14, 2011 16:22 — forked from kishida/MiniParser.scala
Toy language with parser combinators of scala, which is derived from Kishida-san's code. Original language has dynamic scope. But It has static scope and so-called lexical closure.
val factorial = (n) => {
if(n < 2) 1 else (n * factorial(n - 1));
};
println("factorial(3) = " + factorial(3));
def mkcounter(n) = () => {
n = n + 1;
n
};
val counter = mkcounter(6);
@kmizu
kmizu / MiniParser.scala
Created November 13, 2011 11:30 — forked from kishida/MiniParser.scala
Mini parser with parser combinators of scala.
package miniparser
import scala.util.parsing.combinator.RegexParsers
import scala.collection.mutable.Map
object Main {
def main(args: Array[String]): Unit = {
val expr = """
val aa = 23;
@kmizu
kmizu / MiniParser.scala
Created November 8, 2011 14:15 — forked from kishida/MiniParser.scala
Mini parser with parser combinators of scala.
package miniparser
import scala.util.parsing.combinator.RegexParsers
object Main {
def main(args: Array[String]): Unit = {
val expr = """
println("result: "+(3+(if ({
println("cond");
class Foo {
import scala.collection.mutable.ArrayBuffer
val elements = List(1,2,3)
//ClassManifest is needed
def map[T:ClassManifest](block: Int => T) = {
val vals = ArrayBuffer[T]()
elements foreach{ i => vals += block(i) }
vals.toArray
}
}
object Factorial {
def fact(n: Int) = (1 to n).foldLeft(1)(_*_)
def main(args: Array[String]) = {
val n = if(args.length == 0) 1 else args(0).toInt
1 to n foreach {i => println(i + "! = " + fact(i))}
}
}