README.ja  2014/07/18

鬼雲 (鬼車改)  --  (C) K.Takata <kentkt AT csc DOT jp>

https://github.com/k-takata/Onigmo

鬼雲は、鬼車から派生した正規表現ライブラリである。
Perl 5.10以降で新たに導入された正規表現の一部が使用可能になっている。

一部のパッチは Ruby 2.x からマージしている。

Wikiページも参照のこと。
https://github.com/k-takata/Onigmo/wiki


主な新機能:
  正規表現 (文法依存):
    \K, \R, \X, (?(cond)yes|no)
    (?adlu), \g{name}, \g{n}, (?&name), (?n), (?R), (?0)
    (?P<name>...), (?P=name), (?P>name)

  API:
    onig_search_gpos (Perl互換の \G 用)

  エンコーディング:
    CP932

  文法:
    Python


新規ソースファイル:
  enc/cp932.c                   CP932 エンコーディング
  enc/jis/props.h               JIS 文字プロパティーデータ
  enc/jis/props.kwd             JIS 文字プロパティーデータ
  enc/unicode/casefold.h        Unicodeケースフォールドデータ
  enc/unicode/name2ctype.h      Unicodeプロパティデータ

  onig.py                       onig.dll/libonig.so ローダ
  testpy.py                     テストプログラム

  tool/download-ucd.sh          Unicode Character Database (UCD)をダウンロード
  tool/case-folding.rb          UCDからcasefold.hを生成
  tool/convert-jis-props.sh     props.kwdをprops.hに変換
  tool/convert-name2ctype.sh    name2ctype.kwdをname2ctypes.hに変換
  tool/enc-unicode.rb           UCDからname2ctype.kwdを生成

  win32/Makefile.mingw          Win32用 Makefile (for MinGW)
  win32/makedef.py              onig.defを作成
  win32/onig.rc                 onig.dll用リソースファイル


ToDo:
  * Unicode Character Data のサイズ削減。
  * (?|...)
  * (?(cond)yes|no) の改善。（先読み・戻り読みの対応）


以下、鬼車の README.ja:
======================================================================
README.ja  2007/05/31

鬼車  ----   (C) K.Kosako <sndgk393 AT ybb DOT ne DOT jp>

http://www.geocities.jp/kosako3/oniguruma/

鬼車は正規表現ライブラリである。
このライブラリの特長は、それぞれの正規表現オブジェクトごとに
文字エンコーディングを指定できることである。

サポートしている文字エンコーディング:

  ASCII, UTF-8, UTF-16BE, UTF-16LE, UTF-32BE, UTF-32LE,
  EUC-JP, EUC-TW, EUC-KR, EUC-CN,
  Shift_JIS, Big5, GB18030, KOI8-R, CP1251,
  ISO-8859-1, ISO-8859-2, ISO-8859-3, ISO-8859-4, ISO-8859-5,
  ISO-8859-6, ISO-8859-7, ISO-8859-8, ISO-8859-9, ISO-8859-10,
  ISO-8859-11, ISO-8859-13, ISO-8859-14, ISO-8859-15, ISO-8859-16

* GB18030: 久保健洋氏提供
* CP1251:  Byte氏提供
------------------------------------------------------------

ライセンス

  BSDライセンスに従う。


インストール

 ケース１: UnixとCygwin環境

   1. ./configure
   2. make
   3. make install

   アンインストール

     make uninstall

   動作テスト (ASCII/EUC-JP)

     make atest


   構成確認

     onig-config --cflags
     onig-config --libs
     onig-config --prefix
     onig-config --exec-prefix



 ケース２: Win32(VC++)環境

   1. copy win32\Makefile Makefile
   2. copy win32\config.h config.h
   3. nmake

      onig_s.lib:  static link library
      onig.dll:    dynamic link library

  * 動作テスト (ASCII/Shift_JIS)
   4. copy win32\testc.c testc.c
   5. nmake ctest



正規表現

  doc/RE.jaを参照


使用方法

  使用するプログラムで、oniguruma.hをインクルードする(Oniguruma APIの場合)。
  Oniguruma APIについては、doc/API.jaを参照。

  oniguruma.hで定義されている型名UChar(== unsigned char)を無効にしたい場合
  には、ONIG_ESCAPE_UCHAR_COLLISIONをdefineしてからoniguruma.hをインクルード
  すること。このときにはUCharは定義されず、OnigUCharという名前の定義のみが
  有効になる。

  oniguruma.hで定義されている型名regex_tを無効にしたい場合には、
  ONIG_ESCAPE_REGEX_T_COLLISIONをdefineしてからoniguruma.hをインクルード
  すること。このときにはregex_tは定義されず、OnigRegexType, OnigRegexという
  名前の定義のみが有効になる。

  Unix/Cygwin上でコンパイル、リンクする場合の例：
  (prefixが/usr/localのとき)
  cc sample.c -L/usr/local/lib -lonig

  GNU libtoolを使用しているので、プラットフォームが共有ライブラリをサポートして
  いれば、使用できるようになっている。
  静的ライブラリと共有ライブラリのどちらを使用するかを指定する方法、実行時点での
  環境設定方法については、自分で調べて下さい。


  Win32でスタティックリンクライブラリ(onig_s.lib)をリンクする場合には、
  コンパイルするときに -DONIG_EXTERN=extern をコンパイル引数に追加すること。


使用例プログラム

  sample/simple.c    最小例 (Oniguruma API)
  sample/names.c     名前付きグループコールバック使用例
  sample/encode.c    幾つかの文字エンコーディング使用例
  sample/listcap.c   捕獲履歴機能の使用例
  sample/posix.c     POSIX API使用例
  sample/sql.c       可変メタ文字機能使用例 (SQL-like パターン)

テストプログラム
  sample/syntax.c    Perl、Java、ASIS文法のテスト
  sample/crnl.c      --enable-crnl-as-line-terminator テスト


ソースファイル

  oniguruma.h        鬼車APIヘッダ (公開)
  onig-config.in     onig-configプログラム テンプレート

  regenc.h           文字エンコーディング枠組みヘッダ
  regint.h           内部宣言
  regparse.h         regparse.cとregcomp.cのための内部宣言
  regcomp.c          コンパイル、最適化関数
  regenc.c           文字エンコーディング枠組み
  regerror.c         エラーメッセージ関数
  regext.c           拡張API関数
  regexec.c          検索、照合関数
  regparse.c         正規表現パターン解析関数
  regsyntax.c        正規表現パターン文法関数、組込み文法定義
  regtrav.c          捕獲履歴木巡回関数
  regversion.c       版情報関数
  st.h               ハッシュテーブル関数宣言
  st.c               ハッシュテーブル関数

  oniggnu.h          GNU regex APIヘッダ (公開)
  reggnu.c           GNU regex API関数

  onigposix.h        POSIX APIヘッダ (公開)
  regposerr.c        POSIX APIエラーメッセージ関数
  regposix.c         POSIX API関数

  enc/mktable.c      文字タイプテーブル生成プログラム
  enc/ascii.c        ASCII エンコーディング
  enc/euc_jp.c       EUC-JP エンコーディング
  enc/euc_tw.c       EUC-TW エンコーディング
  enc/euc_kr.c       EUC-KR, EUC-CN エンコーディング
  enc/sjis.c         Shift_JIS エンコーディング
  enc/big5.c         Big5 エンコーディング
  enc/gb18030.c      GB18030 エンコーディング
  enc/koi8.c         KOI8 エンコーディング
  enc/koi8_r.c       KOI8-R エンコーディング
  enc/cp1251.c       CP1251 エンコーディング
  enc/iso8859_1.c    ISO-8859-1  (Latin-1)
  enc/iso8859_2.c    ISO-8859-2  (Latin-2)
  enc/iso8859_3.c    ISO-8859-3  (Latin-3)
  enc/iso8859_4.c    ISO-8859-4  (Latin-4)
  enc/iso8859_5.c    ISO-8859-5  (Cyrillic)
  enc/iso8859_6.c    ISO-8859-6  (Arabic)
  enc/iso8859_7.c    ISO-8859-7  (Greek)
  enc/iso8859_8.c    ISO-8859-8  (Hebrew)
  enc/iso8859_9.c    ISO-8859-9  (Latin-5 または Turkish)
  enc/iso8859_10.c   ISO-8859-10 (Latin-6 または Nordic)
  enc/iso8859_11.c   ISO-8859-11 (Thai)
  enc/iso8859_13.c   ISO-8859-13 (Latin-7 または Baltic Rim)
  enc/iso8859_14.c   ISO-8859-14 (Latin-8 または Celtic)
  enc/iso8859_15.c   ISO-8859-15 (Latin-9 または West European with Euro)
  enc/iso8859_16.c   ISO-8859-16
                     (Latin-10 または South-Eastern European with Euro)
  enc/utf8.c         UTF-8    エンコーディング
  enc/utf16_be.c     UTF-16BE エンコーディング
  enc/utf16_le.c     UTF-16LE エンコーディング
  enc/utf32_be.c     UTF-32BE エンコーディング
  enc/utf32_le.c     UTF-32LE エンコーディング
  enc/unicode.c      Unicode情報

  win32/Makefile     Win32用 Makefile (for VC++)
  win32/config.h     Win32用 config.h



残件

  ? case fold flag: Katakana <-> Hiragana
  ? ONIG_OPTION_NOTBOS/NOTEOS追加 (\A, \z, \Z)
 ?? \X (== \PM\pM*)
 ?? 文法要素 ONIG_SYN_CONTEXT_INDEP_ANCHORSの実装
 ?? 検索位置移動停止演算子 (match_at()からONIG_STOPを返す)

and I'm thankful to Akinori MUSHA.


アドレス: K.Kosako <sndgk393 AT ybb DOT ne DOT jp>
