サクサク読めて、アプリ限定の機能も多数!
トップへ戻る
買ってよかったもの
logic.cs.tsukuba.ac.jp/~kam
パーサーの作り方 パーサーを作るおおまかな手順は次のようになる。 文法を決める。 内部のデータ構造(クラス)を決める。 パースするコードを書く。 文法を決める miniJavaでは厳密な文法は用意されていない。そこでまず厳密な文法を定める。 文法を作るときには大きな枠組みの方から順に作っていくとよい。 miniJavaではプログラムはクラス宣言の集まりとして宣言される。そこでまず次のように文法を定める。 program ::= class_dec* これは(拡張)BNFという記法(の一種)で、「programはclass_decの0個以上の繰り返し(*で表す)である」という意味になる。 続いてクラス宣言に対応するclass_decの文法を定める。 クラス宣言は次のように定められていた。 class 識別子 { クラス本体 } そこでclass_decの文法は次のようにする。 class_d
[S-8] 関数プログラミング 筑波大学 情報科学類 学生実験(ソフトウェアサイエンス実験) 担当教員: 亀山 幸義 (kam#cs.tsukuba.ac.jp; #を@に換えてくださ い) 担当TA: 高島、宮部 (jikken-TA#logic.cs.tsukuba.ac.jp; #を@に換えてください。) 時期と場所: 2学期,作業は学類計算機室、 座学の部屋はその都度指定。 関数プログラミングの世界へようこそ! 「関数型プログラム言語」という言葉を聞いたことがありますか? 「聞いたことがあるけど何だかわからない」、 「興味はあるけど難しそう」という印象の人はいませんか? 関数型プログラム言語を使えば、 C言語を使うよりもずっと、 美しく、 簡潔で、 わかりやすい プログラムを書くことができます。 実験S-8 は、一番広く使われている関数型言語である OCaml (オーキャムル,
ちょっと寄り道ー構文解析の話(オプショナル) 現在までの処理系には、ミニOCaml言語プログラムの構文解析を行ってくれる部分がないので、 たとえば、if 2=-1 then 1*2 else 1*(2+3) という式を、 If (Eq(IntLit 2, IntLit (-1)), Times(IntLit 1, IntLit 2), Times(IntLit 1, Plus(IntLit 2,IntLit 3))) というように exp型の式として書かなくてはならず、入力が大変であり、間違いやすい。 もし、 parse "if 2=-1 then 1*2 else 1*(2+3)" とすると、上記のexp型の式を生成してくれる関数parseがあれば、大変に便利 である。 ここで、「構文解析する」という言葉を使ってきたが、正確には以下の2つの プログラムから構成される。 字句解析器 (l
[J-8] 関数プログラミング: 2009年度版 筑波大学 情報科学類 学生実験(ソフトウェアサイエンス実験) 担当教員: 亀山 幸義 (kam#cs.tsukuba.ac.jp; #を@に換えてくださ い) 担当TA: 田中、小鍛治 (jikken-TA#logic.cs.tsukuba.ac.jp; #を@に換えてください。) 時期と場所: 2学期,作業は学類計算機室、 座学は総合研究棟Bの会議室(その都度指定) 関数プログラミングの世界へようこそ! 「関数型プログラム言語」という言葉を聞いたことがありますか? 「聞いたことがあるけど何だかわからない」、 「興味はあるけど難しそう」という印象の人はいませんか? 関数型プログラム言語を使えば、 C言語を使うよりもずっと、 美しく、 簡潔で、 わかりやすい プログラムを書くことができます。 実験J-
このページを最初にブックマークしてみませんか?
『logic.cs.tsukuba.ac.jp』の新着エントリーを見る
j次のブックマーク
k前のブックマーク
lあとで読む
eコメント一覧を開く
oページを開く