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