2015年8月1日投稿 / 投稿者 : actorbug / タグ : 投稿プログラム 実用ツール actorstool
字句解析器を作成するLEXのようなもの。
LEXファイル(拡張子".L")は、宣言部、ルール部、ユーザコード部からなり、それぞれの間は"%%"だけの行で区切られる。
宣言部は、よく使う正規表現に名前を付けることができる。
名前と正規表現をスペースで区切って一行に配置する。
それ以外に、先頭が"%"の行には特殊な意味がある。
| 行頭 | 説明 |
|---|---|
| %option | オプション設定。現状"case-insensitive"(大文字小文字同一視)しか受け付けない |
| %{~%} | この間に書かれた文字列は、変換後のプログラムの先頭にそのまま転記される |
| %YY_DECL | 生成された字句解析器の関数定義。デフォルトは"COMMON DEF YYLEX S$,SP OUT EP"。S$が対象文字列、SPが開始位置、EPが終了位置 |
ルール部は、正規表現と、マッチした場合に実行されるプログラムを、スペースで区切って一行に配置する。
マッチした場合には、以下の変数に値が入った状態でプログラムが実行される。
| 変数 | 説明 |
|---|---|
| T$ | マッチした文字列 |
| SP | マッチした先頭位置 |
| EP | マッチした末尾位置 |
ユーザコード部に書かれたプログラムは、変換後のプログラムの末尾にそのまま転記される。
| メタ文字 | 説明 |
|---|---|
| \ | 直後のメタ文字を無効化して通常文字として扱う |
| "~" | 範囲内のメタ文字を無効化して通常文字として扱う |
| {~} | 名前のついた正規表現を参照 |
| \n | LF、CHR$(10) |
| \r | CR、CHR$(13) |
| \t | Tab、CHR$(9) |
| \xFF | 16進2桁で文字コード指定 |
| \uFFFF | 16進4桁で文字コード指定 |
| [] | 文字クラス、括弧内の文字のいずれかにマッチ、-で範囲指定可能 |
| [^] | 否定文字クラス、括弧内の文字以外にマッチ、-で範囲指定可能 |
| . | 任意の1文字(改行を除く)にマッチ |
| ^ | 文字列の先頭 or 改行の次 |
| $ | 文字列の末尾 or 改行の前 |
| () | グループ化 |
| | | 選択 |
| * | 直前の式の0回以上の繰り返し、{0,}と同じ |
| + | 直前の式の1回以上の繰り返し、{1,}と同じ |
| ? | 直前の式が0回か1回現れる、{0,1}と同じ |
| {n} | 直前の式のn回の繰り返し |
| {m,} | 直前の式のm回以上の繰り返し |
| {m,n} | 直前の式のm回以上n回以下の繰り返し |
サンプルのLEXファイルをいくつか同梱している。
| ファイル名 | 説明 |
|---|---|
| SYNHLT.L | SMILE BASICのプログラムを簡易シンタックスハイライトさせるサンプル |
| SYNHLT2.L | ハイライト付きビューワ。Aボタンでカーソル下の関数定義に飛び、Bボタンで戻る。 |
| SCANNER.L | SMILE BASICの字句解析器サンプル。Toukou/ソースコードチェッカーへの組み込み用 |
プチコン3号用の公開キーです。トップメニューの「作品公開とダウンロード」から公開キーを入力すると、作品をダウンロードすることができます。
Toukou/正規表現ライブラリと同じプロジェクトにまとめられている。プログラム本体はLEX。
この作品に対するコメントがあれば一言どうぞ。(作品に直接関係ない質問や雑談は掲示板へ)
表示モード : [ スマホ・3DS対応表示 | クラシック表示 ]
PukiWiki 1.4.7 Copyright © 2001-2006 PukiWiki Developers Team. License is GPL. Based on "PukiWiki" 1.3 by yu-ji
ページの処理時間 : 0.122 秒 | このページの最終更新 : 2022/09/20 (火) 12:48:41 (565d) | ログイン
Copyright(C) 2011-2014 プチコンまとめWiki ◆1sxkymI8ji30