ブックマーク / argius.hatenablog.jp (2)

  • Javaで1行ずつテキストデータを読み込むイディオムの変遷 - argius note

    テキストデータを読み込む場合、言語にかかわらず1行ずつ読み込んで処理します。ここではこのイディオムを"read-lines"と呼ぶことにします。 スクリプト言語なんかだと大抵、最初からforeachで済んでしまっていたりしますが、初期のJavaではちょっと面倒な手順が必要でした。 新しいバージョンではだいぶ簡単簡潔に書けるようになりましたが、今度はたくさんありすぎて、どれがなんなのかが良くわからなくなっています(大袈裟)。 そこで今回は、"read-lines"の変遷についてまとめてみました。 最近Javaを始めた方がバージョンが古い時に書かれたソースコードを読むときに役に立つ...かも知れません。 目次 基 BufferedReader (Java1.1~) Scannerと拡張for文 (Java5~) java.nio.file.Filesとtry-with-resources(J

    Javaで1行ずつテキストデータを読み込むイディオムの変遷 - argius note
    alfad
    alfad 2015/06/07
    Java8シンプルだなぁ
  • JavaでJVM言語を作ってみる(5) - JavaCCとJJTreeの導入 - argius note

    今回は解析器ジェネレータについて見ていきます。 第1回でも触れましたが、Unix-like環境というかC言語では少し昔からスタンダードなものはyacc+lexというものがあります。他にも字句解析器ジェネレータ+構文解析器ジェネレータで使われる例は多いようです。 と言ったものの、解析器ジェネレータについてはこれ以上詳しく知らないので、早速JavaCCの話に移ります。 JavaCC JavaCCは、字句解析器ジェネレータです。拡張子.jjのファイルにEBNF(拡張BNF)を使って文法を記述しておき、これを入力するとJava言語で記述された字句解析器のソースコードが生成されます。 解析器生成の仕様を記述するには、BNF(バッカス・ナウア記法)というメタ言語を用いるのが一般的です。バッカス・ナウア記法は、プログラミング言語に限らず、文脈自由文法を定義することができます。最近ではBNFに正規表現を導

    JavaでJVM言語を作ってみる(5) - JavaCCとJJTreeの導入 - argius note
  • 1