nDiki : エクステンション

エクステンション - extension

ホストソフトウェアに対して、ホストソフトウェア自身を拡張するような機能を提供するプログラム。

一般的にプラグインよりもホストソフトウェアとの境界が緩い。

スポンサード リンク

1999年1月20日 (水)

Perl で lex/yacc

最近 Perl で字句解析ルーチン生成系/構文解析ルーチン生成系を作ろうかな、などと考えている。 前にもやろうと思っていたのだが、なにもしていなかった。なぜ Perl でかというと、

  • C/C++言語にはすでに存在する(flex/bison)。
  • Perl にはいいものが存在しない(知らない)。
  • flex/bison はC/C++のものしか生成できない。
  • これは動的に生成し利用すること、また動的に変更することが考慮されていない。
  • Perl なら実行時にサブルーチン定義したり eval できたりする。
  • Perl なら気が楽。

などが理由であろうか。 また自分の研究で設計している言語を Scheme 上で実装しようかなと思っているが、その字句解析ルーチン生成系/構文解析ルーチン生成系が欲しい(あることにはあるが)。 一旦 Perl で生成系を自作しておけば、簡単に他の言語の解析ルーチンを生成できるように拡張できるであろう(と考えたい)。

動的な側面が念頭にあるのは、自分の研究がそういうことをやっているから。

とりあえず lex/yacc(flex/bison)互換/ライクなものを作る予定である。 これらはそれぞれ仕様記述のファイルを読み込んで解析ルーチン(解析用テーブル)を生成する。 ので、とうぜんこの仕様記述言語の字句解析ルーチン/構文解析ルーチンが必要である。 手で書いてもいいのだが、それも面倒だ。 当然字句解析ルーチン/構文解析ルーチン生成系が欲しい。 しかしまだない。 これから作ろうとしているものそのものだから。

方法としては、

  • Perl で手書きで解析ルーチンを作る。それで Perl 用生成系の仕様記述を読ませて、置き換える。
  • Perl の既存の生成系を使う。
  • flex/bison を使って C/C++ 版を作成。その後その生成系で Perl 用生成系の仕様記述を読ませる。

などが考えられる。今回はとりあえず一番最後の方法をとろうと思う。 ただし実際には完全に C/C++ で作るのではなく、字句解析/構文解析ルーチンを flex/bison で生成し、それを Perlエクステンションとして、Perl から呼べるようにすることにする。こうしておけば、

とすることができる。最初のものを全部 C/C++ で書くと、解析ルーチン生成部を C/C++Perl で2回書かなければならないが、この方法ならその部分は Perl で書いておけるので2度手間にならないであろう。

ということ一昨日は flex のコードを眺めて、昨日は Perl エクステンション書き方を調べてみている。 flex で吐いたファイルをそのまま Perl エクステンションのコードとは当然できないので、そのトランスレータをまず作ることする。

スポンサード リンク
[ 1月20日全て ]

2009年4月30日 (木)

今日のさえずり - スーツのポケットって結構包容力あるんだな

naney:3482476571

2009年04月28日

2009年04月29日

  • 21:48 ようやく落ち着いた。 *P3
  • 21:59 @yamakiyo IXY DIGITAL 210 IS 昨日買って今日ちょっと使ってみたよ。インプレッションはこれから整理してまとめる。広角は28mm相当あればベストだけれど今使っている FinePix F10 よりは広い。 *P3
  • 22:01 @yamakiyo 望遠側はほとんど使わないから、むしろ無理ないズーム倍率の方が自分的には好ましいです。 *P3
  • 24:20 2009年4月29日の歩行: 5159歩、3.87km、50分、4.59km/h、消費 180.8kcal、脂肪燃焼 25.8g、2.6エクササイズ。 *P3
  • 24:53 @yamakiyo コンパクトカメラの望遠側って暗いからほとんど使いませんね。たまには使うけれど。 *P3
  • 24:55 @yamakiyo 銀塩一眼レフカメラとデジタル一眼レフカメラの両方持ち歩けるほど腕力も体力もないよ。 *P3

2009年04月30日

  • 10:00 出社。休み前にカップ洗うの忘れてた。 *P3
  • 12:59 エダマメと肉球もらった。 http://movapic.com/...
  • 14:13 空回りだったのか? *P3
  • 20:10 7月のイベントについて社長に伝えておいた。 *P3
  • 20:20 会社の近くにできた「やきとん」のお店がいつも賑やかで楽しげ。 [mb]
  • 20:47 残業したのでネクター3本買った。 [mb]
  • 23:29 エダマメと肉球もらった。 [Flickr] http://tinyurl.com/cvuvuy
  • 23:36 FriendFeed の新 UI、洗濯物たたみながら見るのに良い。 *P3
  • 24:11 銀塩→デジタルって別に移行しなきゃならないもんでもないと思う。併用できるし。フィルムや DPE がたかーくなったら銀塩使えなくなるかもしれないけれどね。 *P3
  • 24:14 @yamakiyo Nikon F100 の時はもっぱら Ai AF Nikkor 35mm F2DNikon F3 の時は Ai Nikkor 45mm F2.8P です。あとは最近滅多に使わないかな。 *P3
  • 24:34 2009年4月30日の歩行: 6199歩、4.71km、55分、5.07km/h、消費 232.3kcal、脂肪燃焼 33.2g、3.3エクササイズ。 *P3
[ 4月30日全て ]

2018年3月6日 (火)

Mac アプリケーション PopClip をトライアル

Mac 上でテキストを選択すると AndroidiOS のようにメニューがポップアップしていろいろなアクションを実行させられる PopClip が便利そうなのでトライアルを入れてみました。

Day One・Alfred・UlyssesBuffer 用のエクステンションを追加しました。150回アクション実行まで試用できるので、使い勝手見極めてみます。

[ 3月6日全て ]

2018年3月10日 (土)

PopClip for MacDay OneRemember The Milk にさっと追加できるようにした

image:/nDiki/2018/03/10/PopClip.png

Mac 上でテキストを選択すると AndroidiOS のようにメニューがポップアップしていろいろなアクションを実行させられる PopClip を今週試用してみたところまずまず便利だったので購入しました。

エクステンションを追加して Day OneRemember The Milk・Alfred・Buffer へ送れるように設定。特に Day OneRemember The Milk についてはそのアプリケーションの画面を開くことなく処理が完結できるので超捗ります。

ちなみに Remember The Milk にタスク追加するエクステンションは見当たらなかったので rumember (記事)を呼び出すエクステンションをさくっと作ってみました。

  1. ru.popclipext フォルダを作る。
  2. ru.popclipext/Config.plist を作る。
  3. ru.popclipext/ru.sh を作る。
  4. ru.rtm.png を作る。(省略可)
  5. Finder で ru.popclipext を開き PopClip にインストールする。

シェルスクリプト実行時に環境変数 HOME が設定されていなかったのでとりあえず決め打ちで指定しちゃっています。

Config.plist

 <?xml version="1.0" encoding="UTF-8"?>
 <!DOCTYPE plist PUBLIC "-//Apple//DTD PLIST 1.0//EN" "http://www.apple.com/DTDs/PropertyList-1.0.dtd">
 <plist version="1.0">
 <dict>
         <key>Extension Identifier</key>
         <string>org.naney.popclip.extension.ru</string>
         <key>Extension Name</key>
         <string>ru</string>
         <key>Actions</key>
         <array>
                 <dict>
                         <key>Title</key>
                         <string>ru</string>
                         <key>Image File</key> ← 省略可
                         <string>rtm.png</string> ← 省略可
                         <key>Shell Script File</key>
                         <string>ru.sh</string>
                 </dict>
         </array>
 </dict>
 </plist>

ru.sh

 #!/bin/sh

 if [ -x /Users/naney/local/rumember ]; then
     HOME=/Users/naney GEM_HOME=/Users/naney/local/rumember /Users/naney/local/rumember/bin/ru "$POPCLIP_TEXT"
 fi

[ 3月10日全て ]

About Me

Naney Naney (なにい)です。株式会社ミクシィで SNS 事業の部長をしています。

nDiki1999年1月に始めたコンピュータ日誌を前身とする NaneyWeb 日記(兼パーソナルナレッジベース)です。ちょっとしたノートは nNote にあります。

※内容は個人的見解であり所属組織とは関係ありません。

follow us in feedly

月別インデックス
Process Time: 0.048524s / load averages: 0.90, 0.62, 0.53
nDiki by WATANABE Yoshimasa (Naney, Google profile)
Powered by DiKicker