Skip to content

yuma140902/regend

Folders and files

NameName
Last commit message
Last commit date

Latest commit

 

History

48 Commits
 
 
 
 
 
 
 
 
 
 

Repository files navigation

regend

入力された正規表現をNFA、DFAに変換します。

image

インストール方法

cargo install --git https://github.com/yuma140902/regend/

Webフロントエンドもあります: Regend WebUI

使用方法

regend 正規表現

正規表現の文法

regendで使用する正規表現の文法は以下の通りです。

<expr> := <orterm> [ '|' <orterm> ]*
<orterm> := <catterm> [ <catterm> ]*
<catterm> := <repterm> [ '*' ]?
<repterm> := '(' <expr> ')'
           | '0'~'9' | 'a'~'z' | 'A'~'Z'
           | 'φ'

なお、空白は無視されるので読みやすいように好きな場所に入れることができます。

正規表現の意味論

  • φ - 何も受理しない
  • 09, az, AZ - その1文字を表す
  • A|B - 正規表現Aと正規表現Bの選択
  • AB - 正規表現Aと正規表現Bの連接
  • A* - 正規表現Aの0回以上の繰り返し

優先順位は繰り返し、連接、選択の順に高いです。( )を使用すると優先順位を変えることができます。

以下のようなよくある糖衣構文は実装していません。かわりに矢印で示した表記を使ってください。

  • 空文字列 → φ*
  • A? - 正規表現Aが0回または1回出現する → (φ*|A)
  • A+ - 正規表現Aの1回以上の繰り返し → AA*

テスト機能について

テスト機能を使用すると、正規表現を変換したDFAが、ある文字列を受理するかどうか調べることができます。

  1. hoge.txtにテストしたい文字列を入力します。複数テストする場合は改行して1行に1つの文字列を書きます。

  2. regend 正規表現 -t hoge.txtを実行します。受理されたら緑色でAccepted、不受理なら赤色でRejectedと表示されます。

About

No description, website, or topics provided.

Resources

Stars

Watchers

Forks

Releases

No releases published

Packages

No packages published

Languages