2017-01-01から1年間の記事一覧

Google Maps javascript API V3入門マスターを読む

GoogleのAPIkeyは以前取得したものがあったのでそれを使用 例題のsample.html,map.jsを入力して、sample.htmlをブラウザーで読み込ましたが エラーがでて地図が表示されない。 デペロッパーツールを表示させると ApiNotActivatedMapErrorがでて地図が表示さ…

言語のしくみを読む

例題の05filler.strmを実行してみる オプションの-vをつけて実行してみると構文木を表示してくれる。 ./streem -v ../examples/05filter.strm 05filter.strmの中身 seq(100) | filter{x-> x % 2 == 0} | stdout 構文木を表示させたもの NODES: OP: op: | OP:…

言語のしくみを読む

パーサで解析されたスクリプトは構造体のリンクで表現されたノードで返される。 state.lvalにつながれたリンク。 node(node_value) type:NODE_STMTS void** data node(node_op) type:NODE_OP op:strm_string len:1 ptr:“|” lhs: node(node_values) type:NODE…

言語のしくみを読む

./strem ../examples/02hello.strmで実行 main.cのmain関数内のnode_parse_file(&state,argv[i])で止める node.c内のnode_parse_file(parse_state p,const char fname) fnameにはコマンドライン引数"../examples/02hello.strm"が入っている fnameで指示され…

言語のしくみを読む

node_run関数 strm_seq_init(),strm_socket_init()が準備を完了させたら 次に呼ぶのがexec_expr関数で、渡されたnodeをswitch文で分岐させながら taskを作ってキューに登録する。登録されたtaskはqueue.cのstrm_queue_exec関数が 実行を行っている。 キュー…

言語のしくみを読む

main関数からstrm_var_def関数を呼び出す 引数の"ARGV"はstrm_stringに保管されてる、av変数にはコマンドラインの 引数が入っているので"ARGV"の名前で保管される。 次はnode_run関数を呼ぶ //exec.c node_init関数内でstrm_var_def関数を使ってシンボルをハ…

言語のしくみを読む

main関数から読んでいく $ ./streem ../examples/02hello.strm main関数 オプション処理部はパスして node_parse_init(&state) //node.c state構造体の初期化 e_progはNULLなのでelse節以降を実行、引数を持っているので最後のelse節を実行 for(i = 1;i < ar…

言語のしくみを読む

Cの開発環境を整備 ソースの分量が増えてきたのでエディタだけで読むのが困難になってきたので Cの統合環境を入れることにした。 最初はeclise C/C++ Linuxを入れたが使い方がわからず。 次にNetBeans IDE 8.2 C/C++ Linuxを入れたところ比較的わかりやすく …

言語のしくみを読む

2-7AST(抽象構文木)に変換 今回はsrcフォルダーに大幅に追加がなされた。 早速makeしてみるが、node.cコンパイル中にy.tab.hがないとエラーが出ている。 Gitで次のtag(201507)に行ってみるとy.tab.hがあったので201506は無視して201507tag で実行。 binフォ…

言語のしくみを読む

2-6キャッシュとシンボル stringを生成するためのstruct sym_keyが新たに定義されている。 渡された文字列の特徴からハッシュ値を取り出している。 これがシンボル検索の高速化に寄与しているのかな? khash.hが新規に追加,string.cが大幅な書き換えとなって…

言語のしくみを読む

2-5マルチスレッドとオブジェクト core.cのstrm_loop関数を中心にマルチスレッド対応になっている。 queue.cにpush_high_task,push_low_task関数が追加などの変更がある。 ncpu.c,string.c,value.cが新規で入っている srcフォルダにも新規ファイルが入ってい…

pythonのソースコードを調べる

Objectsフォルダの中身を調べる それっぽい名前としては boolobject.c bytearrayobject.c bytesobject.c cellobject.c classobject.c codeobject.c complexobject.c descrobject.c dictobject.c enumobject.c fileobject.c floatobject.c frameobject.c func…

言語のしくみを読む

2-4イベントループ Gitkrakenのタグを201503に移動させてlibフォルダを見ると main.c core.c io.c queue.cがはいており $ makeでa.outファイルができた。 $ ./a.outで入力待機状態になったようなのでstreemと 入力するとSTREEMと標準出力に表示された。 停止…

言語のしくみを読む

2-3文法チエッカーをまず作る Ubuntu16.04LTS(64bit)にGitクライアントのGitKrakenをinstallした。 GitKrakenに https://github.com/matz/streemをクローンさせて手元にリポジトリを作る 最初のタグ201502に移動してResr master to this commit>Hard-discard…

pythonのソースコードを調べる

この構造体のメンバーには接頭子tp_が付けられている。 typeobjectの頭文字と予想される。 typedef struct _typeobject { PyObject_VAR_HEAD const char *tp_name; /* For printing, in format "<module>.<name>" */ #この構造体の名前を要求されたときのフォーマット? P</name></module>…

pythonのソースコードを調べる

もっとも頻度の高いキーワードPyObjectは Includeフォルダのobject.h内に定義してある 構造体でした。 postd.cc Pythonの全てのオブジエクトの元になっている構造体である。 マクロを展開すると typedef struct _object { struct _object *_ob_next; struct …

pythonのソースコードを調べる

Cファイルからインクルードしているヘッダファイルを調べる def iter_docs(file): """ 指定したCファイルにインクルードされているヘッダファイルを返す """ for line in file: if line.startswith("#include"): #include文に続くヘッダファイル名を抜き出す…

pythonのソースコードを調べる

ファイル内の単語頻度をしらべる def freqdist_count(path_name): """ 指定したpath_nameを読み込んで、そのテキスト内単語の頻度を表示する """ count_dic = {} for path in path_name[:]: with open(path,"r") as f: text = f.read() #コメントを削除(複…

pythonのソースコードを調べる

179のファイルがどのフォルダーに分布しているのか調べた。 import glob import os c_file_list = ["_bisectmodule.c","_codecsmodule.c","_collectionsmodule.c","_csv.c", "_functoolsmodule.c","_heapqmodule.c","_json.c","_localemodule.c", "_lsprof.c…

pythonのソースコードを調べる

python.org.download/sourceでpython 3.5.3rc1 2017-01-03をダウンロード デリクトリ構造 D:. ├─Doc │ ├─c-api │ ├─data │ ├─distributing │ ├─distutils │ ├─extending │ ├─faq │ ├─howto │ ├─includes │ │ └─sqlite3 │ ├─install │ ├─installing │ ├─libra…

言語処理100本ノック

40. 係り受け解析結果の読み込み(形態素) 形態素を表すクラスMorphを実装せよ.このクラスは表層形(surface),基本形(base),品詞(pos),品詞細分類1(pos1)をメンバ変数に持つこととする.さらに,CaboChaの解析結果(neko.txt.cabocha)を読み込…

言語処理100本ノック

39. Zipfの法則 単語の出現頻度順位を横軸,その出現頻度を縦軸として,両対数グラフをプロットせよ. %matplotlib inline import re from collections import Counter sentences = [] with open("D:\\nlp100\\neko.txt.mecab",encoding="UTF-8") as fr: lin…

言語処理100本ノック

38. ヒストグラム¶ 単語の出現頻度のヒストグラム(横軸に出現頻度,縦軸に出現頻度をとる単語の種類数を棒グラフで表したもの)を描け. %matplotlib inline import re from collections import Counter sentences = [] with open("D:\\nlp100\\neko.txt.me…