Drkcore

18 11 2011 Haskell Scala Java Tweet

JavaCCでパーサを作ってみる

ふつうのコンパイラをつくろうを読み始めた。

ProductName ふつうのコンパイラをつくろう 言語処理系をつくりながら学ぶコンパイルと実行環境の仕組み
青木 峰郎
ソフトバンククリエイティブ / 3360円 ( 2009-07-24 )


JavaCCを使ったAdderの写経。

The Java Parser Generator

options {
    STATIC = false;
}

PARSER_BEGIN(Adder)
import java.io.*;

class Adder {
    static public void main(String[] args) {
        for (String arg: args) {
            try {
            System.out.println(evaluate(arg));
            }
            catch (ParseException ex) {
                System.err.println(ex.getMessage());
            }
        }
    }
    static public long evaluate(String src) throws ParseException {
         Reader reader = new StringReader(src);
         return new Adder(reader).expr();
    }
}
PARSER_END(Adder)

SKIP: { <[" ","\t","\r","\n"]> }

TOKEN: {
    <INTEGER: (["0"-"9"])+>
}

long expr():
{
    Token x, y;
}
{
    x=<INTEGER> "+" y=<INTEGER> <EOF>
        {
            return Long.parseLong(x.image) + Long.parseLong(y.image);
        }
}

イマイチよくわからないのは慣れてないせいか?パーサだったらRWHのParsecが楽しかった。

ProductName Real World Haskell―実戦で学ぶ関数型言語プログラミング
Bryan O'Sullivan
オライリージャパン / 3990円 ( 2009-10-26 )


Scalaも調べたらスライド見つけた。あとで試してみようっと。

About

  • もう5年目(wishlistありマス♡)
  • 最近はPythonとDeepLearning
  • 日本酒自粛中
  • ドラムンベースからミニマルまで
  • ポケモンGOゆるめ

Tag

Python Deep Learning javascript chemoinformatics Emacs sake and more...

Ad

© kzfm 2003-2021