タグ

programmingとRaccに関するPSVのブックマーク (2)

  • RaccによるC言語パーサ - imHo

    C言語のソースをパースしたいと思ってたときがあったな、と思い出した。RubyでRaccを使って、K&Rに載ってるBNFをわせてみたが、コンフリクトが発生する。 $ racc c.y 1 shift/reduce conflicts 2 reduce/reduce conflictsによれば「唯一ぶつかりがあるのは、if-elseのあいまいさである。」と書いてあるんだけど。「-v」オプションをつけて詳細を表示するとぶつかってるのは state 2 7) declaration : declaration_specifiers _ init_declarator_list_opt ";" 13) declaration_specifiers_opt : declaration_specifiers _ "*" shift, and go to state 36 "*" [reduce us

    RaccによるC言語パーサ - imHo
  • RaccでSchemeパーサを作る - 趣味的にっき

    3/2(日)の生駒読書会#2に向けて、Schemeのパーサを準備しておこうと思って作ってみました。なんちゃってSchemeで遊ぶくらいなので、機能はまだまだ足りません。R5RSと見比べると足りないのはだいたいこんな感じかな。 ペア。 文字。 n進数。小数。複素数。 quote。 ベクタ。 マクロ関係。 文字列の中の"。 ファイル: list_parser.y # Local Variables: # mode: ruby # compile-command: "racc -o list_parser.rb list_parser.y" # End: class ListParser rule atoms : | atom atoms { result = List.new(*val) } atom : IDENT | BOOLEAN | NUMBER | STRING | list lis

    RaccでSchemeパーサを作る - 趣味的にっき
  • 1