タグ

オートマトンに関するigrepのブックマーク (3)

  • Vimmerに捧げる正規表現の基礎中の基礎 — KaoriYa

    正規表現はVimに限らずコンピューター上でのテキスト操作において非常に強力です。 しかし学習の難しさも非情で多くのIT技術者、Vimmerが正規表現に苦しんでいるのを幾度となく目の当たりにしています。 ただ正規表現は当にそんなに難しいのでしょうか。 いいえそんなことはありません。 正規表現は来とても簡単な原理で学習も容易なのです。 にも関わらず難しいと思われてしまうのは、原理を理解しないまま外見上の機能をそのまま覚えようとするからです。 記事では正規表現の原理にフォーカスし解説することで、Vimを含む様々な正規表現実装の利用難度を適切にしようという記事です。 記事は Vim Advent Calendar 2019 の1日目の記事です。 「正規表現」はもともと形式言語という言語学の一分野の研究から生まれました。 言語学というのは言葉を科学的に研究する学問です。 形式言語はその中でも

    igrep
    igrep 2019/12/01
    "遷移のたびにスタックを操作することでプッシュダウン・オートマトンになったり、 終了状態をなくして遷移のたびにテキストデータを出力するようにすることでコンバータやコンパイラといった感じの振る舞いをする"
  • Haskellで簡単な正規表現を実装した【KMCアドベントカレンダー8日目】 - -

    KMCアドベントカレンダー8日目の記事です。 講義で正規表現とかオートマトンをちゃんと学んだので、Haskellの修行も兼ねて簡単な正規表現を実装しました。理論とか実装とかダルいと思うので、おまけだけ読むと楽しいかも知れません。 理論 決定性有限オートマトン(DFA) 有限オートマトンとは、 状態集合(s_0, s_1, .., s_N) 入力記号(a, b, c, など) 受理状態集合 初期状態(s_0) 状態遷移関数 によって定義される数学的モデルです。ある入力記号列が与えられると、それを左から読みながら状態を移動していきます(最初は初期状態にいる)。状態の移動は状態遷移関数に依存します。状態遷移関数は、現在の状態と入力記号を受け取って、遷移先の状態を返すような関数です。例えば「s_0にいる状態で'a'を読んだら、s_1に移動する」というような遷移を定義します。全ての記号を読み終わった

    Haskellで簡単な正規表現を実装した【KMCアドベントカレンダー8日目】 - -
  • この機会にマスターしようぜ、正規表現、構文図、オートマトン - 檜山正幸のキマイラ飼育記 (はてなBlog)

    正規表現と構文図について解説します。オートマトンについても詳しく述べます。オートマトン・スゴロクで遊びましょう! 世間でよく知られている/使われている概念・方法にはこだわらず、僕(檜山)の感覚で一番わかりやすいと思われる筋書きと用語法/図式法を使って説明します。この記事に目を通して“感じ”が掴めたら、形式言語理論の教科書を読み始めることが出来るでしょう。 [追記]この記事の内容に対する具体例は、「正規表現とオートマトン:なんだ簡単じゃん、JavaScriptによる実装」にあります。[/追記] 内容: 正規表現 正規表現の例 構文図 基記号 連接 選択 省略可能 繰り返し ストレートワイヤーによるレイアウト調整 有限状態オートマトン 有限状態オートマトンの実行 バックトラックと先読み スゴロクとオートマトン コマをたくさん使うスゴロクと並列処理 非決定性オートマトンと決定性オートマトン 正

    この機会にマスターしようぜ、正規表現、構文図、オートマトン - 檜山正幸のキマイラ飼育記 (はてなBlog)
  • 1