プチコン3号&BIGまとめWiki

投稿プログラム : LEX

パンくずリスト

2015年8月1日投稿 / 投稿者 : actorbug / タグ : 投稿プログラム 実用ツール

概要

字句解析器を作成するLEXのようなもの。

使い方

  1. プログラムを実行すると、同じプロジェクト内のLEXファイル(拡張子".L")の一覧が表示される。
  2. ファイルを十字キー上下で選択し、Aで決定。
  3. 変換処理が行われるので、しばらく待つ
  4. 変換後のファイル名を指定するダイアログが出るので、適当なファイル名をつけて保存。

LEXファイルの構造

LEXファイル(拡張子".L")は、宣言部、ルール部、ユーザコード部からなり、それぞれの間は"%%"だけの行で区切られる。

宣言部

宣言部は、よく使う正規表現に名前を付けることができる。
名前と正規表現をスペースで区切って一行に配置する。

それ以外に、先頭が"%"の行には特殊な意味がある。

行頭説明
%optionオプション設定。現状"case-insensitive"(大文字小文字同一視)しか受け付けない
%{〜%}この間に書かれた文字列は、変換後のプログラムの先頭にそのまま転記される
%YY_DECL生成された字句解析器の関数定義。デフォルトは"COMMON DEF YYLEX S$,SP OUT EP"。S$が対象文字列、SPが開始位置、EPが終了位置

ルール部

ルール部は、正規表現と、マッチした場合に実行されるプログラムを、スペースで区切って一行に配置する。
マッチした場合には、以下の変数に値が入った状態でプログラムが実行される。

変数説明
T$マッチした文字列
SPマッチした先頭位置
EPマッチした末尾位置

ユーザコード部

ユーザコード部に書かれたプログラムは、変換後のプログラムの末尾にそのまま転記される。

使用可能なメタ文字

メタ文字説明
\直後のメタ文字を無効化して通常文字として扱う
"〜"範囲内のメタ文字を無効化して通常文字として扱う
{〜}名前のついた正規表現を参照
\nLF、CHR$(10)
\rCR、CHR$(13)
\tTab、CHR$(9)
\xFF16進2桁で文字コード指定
\uFFFF16進4桁で文字コード指定
[]文字クラス、括弧内の文字のいずれかにマッチ、-で範囲指定可能
[^]否定文字クラス、括弧内の文字以外にマッチ、-で範囲指定可能
.任意の1文字(改行を除く)にマッチ
^文字列の先頭 or 改行の次
$文字列の末尾 or 改行の前
()グループ化
|選択
*直前の式の0回以上の繰り返し、{0,}と同じ
+直前の式の1回以上の繰り返し、{1,}と同じ
?直前の式が0回か1回現れる、{0,1}と同じ
{n}直前の式のn回の繰り返し
{m,}直前の式のm回以上の繰り返し
{m,n}直前の式のm回以上n回以下の繰り返し

サンプル

サンプルのLEXファイルをいくつか同梱している。

ファイル名説明
SYNHLT.LSMILE BASICのプログラムを簡易シンタックスハイライトさせるサンプル
SYNHLT2.Lハイライト付きビューワ。Aボタンでカーソル下の関数定義に飛び、Bボタンで戻る。
SCANNER.LSMILE BASICの字句解析器サンプル。Toukou/ソースコードチェッカーへの組み込み用

注意

  • 開始条件、先読み演算子、<<EOF>>、複数行アクション、"|"のみのアクション、各種マクロは使えません。

修正履歴

  • 2015/08/08 (土) 07:28:04 高速化。サンプル追加。
  • 2017/01/12 (木) 22:43:53 サンプルのハイライト対象を最新版に合わせて修正。

公開キー

プチコン3号用の公開キーです。トップメニューの「作品公開とダウンロード」から公開キーを入力すると、作品をダウンロードすることができます。

プチコン3号/BIG 公開キー
2E3E43GJ

Toukou/正規表現ライブラリと同じプロジェクトにまとめられている。プログラム本体はLEX。

CHECKER FLAG (ひとことコメント)

この作品に対するコメントがあれば一言どうぞ。(作品に直接関係ない質問や雑談は掲示板へ)

  • Pocky : ハイライトする為に使わせて頂いてもよろしいでしょうか? (2015/08/08 (土) 15:59:13)
  • 投稿者 : 好きに使ってもらって構いません。ただ、これを使うとプログラムが無駄に長くなるので、自作したほうが良いかもしれません。 (2015/08/08 (土) 19:09:32)
  • Pocky : ありがとうございます。長くなるかもしれませんが、正規表現で書けるという点が素晴らしいと思ったので(弄るのがとても簡単で) 使わせて頂きます。ありがとうございます。 (2015/08/08 (土) 19:36:52)
  • syuto : SMILE IDE及びTOUCH-GRP内アプリフレームワークに使わせていただきます! (2015/11/28 (土) 11:34:08)
  • 名無しさん : 能力は人並み、問題は人間だなぁ (2016/03/30 (水) 01:44:00)

メニュー 【3号】

ヘルプ

リンク

最近の更新

最近の人気ページ

オンライン情報

  • 現在同時に 11 人がこのサイトを見ています
  • このページはこれまでに 175 回、本日は 4 回、昨日は 2 回閲覧されました

ページの先頭に戻る

表示モード : [ スマホ・3DS対応表示 | クラシック表示 ]
PukiWiki 1.4.7 Copyright © 2001-2006 PukiWiki Developers Team. License is GPL. Based on "PukiWiki" 1.3 by yu-ji
ページの処理時間 : 0.060 秒 | このページの最終更新 : 2017/01/12 (木) 22:43:53 (334d) | ログイン
Copyright(C) 2011-2014 プチコンまとめWiki ◆1sxkymI8ji30