Skip to content

Instantly share code, notes, and snippets.

View kmizu's full-sized avatar

Kota Mizushima kmizu

View GitHub Profile
@kmizu
kmizu / file0.txt
Last active August 25, 2017 14:57
KotlinプログラマのためのScala入門(1)〜基本編〜 ref: http://qiita.com/kmizu/items/9d16360c4d383f3fa2aa
val i = 1
println(i) // 1
i = i + 1 // コンパイルエラー
var j = 1
println(j) // 1
j = j + 1 // OK
println(j) // 2
@kmizu
kmizu / file0.txt
Last active August 25, 2017 00:26
TIOBE Indexはあまり参考にすべきでない ref: http://qiita.com/kmizu/items/b07f1dcad63f104248c5
+"<language> programming"
@kmizu
kmizu / file0.txt
Last active August 24, 2017 16:31
ScalaとKotlinとJavaのソースを一緒にビルドする ref: http://qiita.com/kmizu/items/0f322303a76c2d40076b
package com.github.kmizu.scala_kotlin_java
open class KotlinClass(open val name: String)
fun main(args: Array<String>) {
println(KotlinClass("Kotlin").name)
}
@kmizu
kmizu / file0.scala
Last active August 18, 2017 01:57
Javaで始めるパーザコンビネータの作り方(6)~(Hello)?~ ref: http://qiita.com/kmizu/items/b219cc6981d3aeb41fa7
Parser<A> p = ...;
String input = ...;
Optional<A> values = ...;
@kmizu
kmizu / file0.java
Last active July 27, 2017 16:50
Javaで始めるパーザコンビネータの作り方(5)~補足 ref: http://qiita.com/kmizu/items/d3d0f9511f631635d4b2
package parser;
public class Main {
public static void main(String[] args) {
Parser<List<String>> hellos = Parser.string("Hello").many();
System.out.println(hellos.invoke("Hello, World!"));
}
}
@kmizu
kmizu / file0.java
Created July 26, 2017 14:31
Javaで始めるパーザコンビネータの作り方(4) ~ Hello{n} ref: http://qiita.com/kmizu/items/a36619c3c0f19e591e0f
Parser<A> p = ...;
String input = ...;
List<A> values = new ArrayList<>();
@kmizu
kmizu / file0.java
Last active July 26, 2017 14:03
Javaで始めるパーザコンビネータの作り方(3) ~ Hello or World! ref: http://qiita.com/kmizu/items/c509d726285c2e7416fb
Parser<A> pa = ...;
Parser<B> pb = ...;
String input;
@kmizu
kmizu / file0.java
Created July 25, 2017 03:02
Javaで始めるパーザコンビネータの作り方(2) ~ Hello + World! ref: http://qiita.com/kmizu/items/694b2bed2338b57d182a
package parser;
public interface Parser<T> {
ParseResult<T> invoke(String input);
static Parser<String> string(String literal) {
return new StringParser(literal);
}
}
@kmizu
kmizu / file0.scala
Last active August 8, 2017 07:57
Javaで始めるパーザコンビネータの作り方(1) ~ Hello, World! ref: http://qiita.com/kmizu/items/ecf3f345a10c6daab495
import com.github.kmizu.scomb.SCombinator
object IntegerParser extends SCombinator[Int] {
override def root: P[Int] = (digit.+).map{ case digits => digits.mkString.toInt }
lazy val digit: P[String] = set('0'to'9')
def main(args: Array[String]): Unit = {
assert(parse("100") == Success(100))
}
}
@kmizu
kmizu / expression.py
Created July 12, 2017 16:28
インタプリタの挙動を示すための例
class Expression:
def __add__(self, that):
return BinaryOp('+', self, that)
def __sub__(self, that):
return BinaryOp('-', self, that)
def __mul__(self, that):
return BinaryOp('*', self, that)