lexとは? わかりやすく解説

Weblio 辞書 > コンピュータ > 拡張子辞典 > lexの意味・解説 

.lex

読み方レックス

.lexとは、GNUプロジェクトによって開発されている字句解析プログラムである「Flex」のソースファイルに付く拡張子のことである。


【ストレーキ】(すとれーき)

Leading Edge eXtension(LEX).
航空機胴体機首側面設けられ張り出しのこと。
高い迎え角をとった時、ここから渦流発生させることにより、主翼失速遅らせる働きを得る。
また、この渦流垂直尾翼にも影響して迎え角が高い状態での方向安定性高め効果もある。
F/A-18やF-16で採用され形状として有名。

AV-8B 等では LERX (Leading Edge Root eXtension) と呼ばれる小型のストレーキが採用されている。


Lex

名前 レックス

lex

出典: フリー百科事典『ウィキペディア(Wikipedia)』 (2013/01/01 09:34 UTC 版)

lex(レック、レックス)はレキシカルアナライザ(字句解析プログラム、字句解析器)を生成するプログラムである。パーサジェネレータyaccとともに使用されることが多い。lexはエリック・シュミットとマイク・レスクによって書かれunixにおける標準のレキシカルアナライザとなっており、POSIX標準ともなっている。lexと同等の機能を有し性能が改善されているflexがある。

目次

概要

lexはレキシカルアナライザジェネレータである。

レキシカルアナライザジェネレータの位置づけを以下に説明する。 プログラム中間言語あるいは機械語に変換するコンパイラは、一般的にソースを入力し構文木を出力する構文解析部(1)と、その構文木を入力し中間言語コードまたは機械語を出力するコード生成部(2)からなる。

コンパイラ
 ├構文解析部(1)
 │ ├字句解析器(1.1) ←〔ソース〕
 │ │呼出し↑↓
 │ │   ↑〔トークン列〕
 │ │   ↑↓
 │ └構文解析器(1.2)
 │     ↓
 │  〔構文木〕
 │     ↓
 └コード生成部(2)   →〔中間言語コードまたは機械語〕

このうち(1)の前半は、ソースを入力しトークン(語彙素)列を出力する字句解析器(レキシカルアナライザ、トークナイザ、スキャナ)(1.1)である。 後半は、そのトークン列を入力し、構文規則にしたがって構文解析をし、構文木を出力する構文解析器(パーサ、パーザ)(1.2)である。

構文解析器(1.2)に、解析を数字や英字などの文字単位で行わせると、複雜になりすぎる.そこで、たとえば10進数、英数字シンボル、文字列リテラル、ホワイトスペース列などといった、トークンと呼ばれる文字列単位にまとめて簡潔に行うために,上記字句解析器(1.1)を呼び出してはトークンを受取りながら実行する。

この字句解析器(1.1)の合理的な開発を目的とし、機械可読にした規則定義を与えれば字句解析器を自動生成してくれる便利なツールがレキシカルアナライザジェネレータであり、lexやflexなどがそれに属する。

〔規則定義〕
  ↓
レキシカルアナライザジェネレータ(lex, flexなど)
  ↓
〔字句解析器(1.1)〕

同様に、構文解析器(1.2)の合理的な開発を目的とし、構文規則定義を与えれば構文解析器を自動生成してくれる便利なツールとして、yacc(yet another compiler compiler)などのパーサジェネレータ(コンパイラコンパイラ)がある。

yaccとlexはセットで使われ、セットで解説されることが多い。lexとyaccの機能はIEEE POSIX P1003.2で標準化されている。

lex のファイル構造

lexのファイル構造は意識的にyaccのそれに似せて定義されている。 ファイルは3つの部分に分割されており、それぞれ定義領域、規則領域、Cコード領域である。各領域はパーセント記号2つ(%%)のみを含んだ行で区切られる。

定義領域は正規表現を用いてマクロを定義するところであり、かつCのヘッダーファイルを取り込む場所でもある。

規則領域は最も重要な領域でありCの命令との関連付けを行う。lexの規則と一致するパターンがあるとそれに関連付けされたCコードを実行する。

Cコード領域には生成したソースにそのままコピーされるCの命令や関数が含まれている。 これらの命令は規則領域での規則により呼ばれたコードを含む場合もある。大規模なプログラムではここに分割して置きコンパイル時にリンクするほうが便利である。

flex用のサンプルファイル

次の例はflex版の入力ファイルのサンプルである。これは入力中の整数値を認識する。 "abc123z.!&*24ghj6"という入力があると次のような表示を行う。

Saw an integer: 123
Saw an integer: 24
Saw an integer: 6
/* 
 * flex用字句解析 例
 *
 * 数値(整数値)を入力を取り出す.
 */

/*** Definition section ***/

%{

/*
 * C コードにはCの標準I/O ライブラリを使うものがある.
 * %{と %} で囲まれた部分はそのまま生成ファイルに
 * 取り込まれる.
 */
#include <stdio.h>

%}

/* マクロ;  正規表現 */
DIGIT       [0-9]
INTEGER     {DIGIT}+

/* これはflexに入力ファイルが一つであることを示す. */
%option noyywrap

%%
    /*
     * 規則領域
     *
     * コメントはインデントしなければならない.
     * そうしないと正規表現と誤認識してしまう.
     */

{INTEGER}   {
                /*
                 * この規則は入力から整数を表示する.
                 * yytextには一致した文字列が含まれる.
                 */
                printf("Saw an integer: %s\n", yytext); 
            }

.           { /* それ以外の文字は無視. */ }

%%
/*** Cコード領域 ***/

/*
 * メインプログラム.
 *
 * 字句解析を呼び出し、処理が済むと終了する. 
 */
int main(void)
{
    /* yyin はlexが読むファイルでここでは標準入力になっている. */
    FILE *yyin = stdin;

    /* 字句解析の呼び出し. */

    yylex();
    return 0;
}

関連項目

外部リンク


LE-9

(lex から転送)

出典: フリー百科事典『ウィキペディア(Wikipedia)』 (2025/02/01 09:22 UTC 版)

LE-9は、宇宙航空研究開発機構(JAXA)が三菱重工業IHIと共に開発したH3ロケットの第1段用液体燃料ロケットエンジンで、世界初の第1段用の大推力エキスパンダーブリードサイクルエンジン[1]。燃料に液体水素、酸化剤に液体酸素を使用し、H3ではペイロードの重量や投入軌道に合わせてLE-9を2基又は3基にクラスター化して用いる[2]。「キー技術関連事業者」として三菱重工業がエンジンシステムを、IHIがターボポンプの開発を担当している[3]

概要

H3の先代機のH-IIA/Bでは、第1段用ロケットエンジンLE-7Aのエンジンサイクルに二段燃焼サイクルを採用している。二段燃焼サイクルは燃焼室で発生する燃焼圧を大きくすることが他のエンジンサイクルよりも容易であり比推力向上の点で優れているが、配管・タービン各所が高温高圧に晒されるため頑丈に製作する必要がありプリバーナー室等の追加の造作も必要なため製造コストが嵩む。

一方、現在の衛星打ち上げ市場において受注を勝ち取るためにはロケットの製造費用を下げて打ち上げ費用を下げることが重要である。このため、H3の1段目エンジンLE-9では従来の高価で複雑な二段燃焼サイクルにかわり、日本で最初に実用化された簡素で信頼性のあるエキスパンダーブリードサイクルを採用することにした。これによりLE-9の部品点数はLE-7Aより20%少なくなる[4]。エキスパンダーブリードサイクルエンジンの開発と運用の前例として第2段用の推力 137 kN 未満のLE-5A/Bエンジンの実績はあるが、同サイクルはターボポンプの駆動エネルギーを燃焼室からの吸熱に頼るという物理的制約から大推力を生成することが難しく、第1段用エンジンとしての実用化は世界初の試みとなるため、1471 kN という大推力が必要とされるLE-9の開発はH3における最も挑戦的な開発要素となる[5][6]

研究・開発

LE-5AとLE-5Bの開発経験によりエキスパンダーブリードサイクルエンジン開発の第一人者であった三菱重工は、同サイクルエンジンの大型燃焼室製造技術に関する先行的研究のために、1999年からプラット・アンド・ホイットニー・ロケットダインと共同で、真空中推力 16–27 tf、真空中比推力 467  の上段用エンジンMB-XX(MB-35とMB-60)の研究を開始し、2005年に燃焼実験を行った[7][注 1]

この上段用エンジンMB-XXの研究と並行して、2002年からJAXAは将来ロケットの第1段に大推力エキスパンダーブリードサイクルエンジンを適用する検討と研究を開始し、2010年からはJAXAが主導し、上記2社に加えてIHI、物質・材料研究機構産業技術総合研究所も参画して、真空中推力 1450 kN、真空中比推力 430 秒 の第1段用技術実証エンジンLE-X実証研究を開始して、コンピュータ・シミュレーション数値シミュレーション)を広範に取り入れながら要素技術の研究を行い、大推力エキスパンダーブリードサイクルエンジンの成立性の検証を行った[9][10]

そして2015年から、LE-Xの実証研究の成果を生かしてLE-9の開発が開始された[10][3][11][12]。大推力を発揮するためにはターボポンプの大幅な性能向上が必要となるが、そのためには三菱重工が担当する燃焼器を大型化して吸熱・製造技術を向上させてタービン駆動ガスを高温化することと、IHIが担当する液体水素ターボポンプのタービンを高性能化させることが鍵となる[11]

大型化したLE-Xの燃焼器では大きな圧力変動(燃焼振動)が問題となったが、LE-9では噴射器エレメント長さに変化をつけることで共振の発生を抑え、圧力変動を吸収するレゾネータを燃焼室に付けることで燃焼安定性を大幅に向上させた[13]。一方で2017年から行われていた実機型エンジンの燃焼試験においては、2018年11月以降に行われた試験において、共振により液体水素ターボポンプのタービン動翼に疲労破面を確認した。また、機械加工の噴射器と3D造型の噴射器に特性の違いが確認された。このため、この時点では従来通りの機械加工による噴射器を適用して、固有振動値を運転領域から外したタイプ1エンジンを先に認定し試験機1号機で使用し、その後に3D造型噴射器と固有振動値そのものを排除する抜本対策を施したタイプ2エンジンを認定して試験機2号機に使用する開発方針であった[14]

2020年2月13日には、8回目の第1段厚肉タンクステージ燃焼試験が3基の実機型エンジンで行われた[15][16][17]

しかし2020年5月26日から始まった認定型タイプ1エンジンの燃焼試験で、固有振動値を運転領域から外したはずの液体水素ターボポンプのタービン動翼に共振による疲労破面が再び確認され、新たにエンジン燃焼室内壁には高熱による幅0.5mm長さ1センチほどの穿孔が14か所見つかった[18]。当初は再び確認された共振運転領域をさらに避けて運転するタイプ1エンジンを作成する予定であったが、検討の結果、固有振動値を運転領域から外すタイプ1エンジンの対策が有効ではない事が判明した。このため液体水素ターボポンプのタービン動翼の形状や枚数を見直して、念の為に液体酸素ターボポンプについても同様に設計を見直して共振対策をし、燃焼室内壁の穿孔については液体水素の噴射量を増やすことで冷却機能を強化すると同時にエンジンの起動・停止パターンを見直して熱対策をすることになった。これらの新たな対策を施した新たな開発仕様を実証してから試験機1号機を打ち上げることになり、H3ロケットの打ち上げは2021年度に1年延期されることになった[19][20][21]

2022年1月、JAXAはLE-9の技術的課題に対して「一定の技術的な目途を得ることができた」としながらも、「ターボポンプの翼の振動データからその他にも配慮すべき事象も確認された」ことにより、H3ロケットの打ち上げ予定時期は明言できないと再延期された[22]。JAXAは、出来る限り早く開発スケジュールの目処を立てたいとしている[23]

2022年9月、JAXAは記者説明会を行い、2022年度内にH3ロケットの初打ち上げを目指すことを発表した。これによると、JAXAはLE-9の問題をできるだけ早く解決するために、組織と企業の垣根を超えた「ターボポンプ開発推進室」を設置したほか、複数の設計チームを編成して複数の問題解決案に基づいて同時並行で設計開発させた。各設計チームが液体水素と液体酸素の各ターボポンプに対して「0の矢」と呼ぶ最小限の設計変更から「3の矢」と呼ぶ最大限の設計変更までの4案づつ計8案に基づいて設計開発し、このうちどの設計変更案(矢)が最適かを比較検討して判断した。その結果、H3試験機1号機用のエンジンの液体水素ターボポンプには、2021年10月に一部改善効果を確認したタービンを追加工して減衰力を強化する「0の矢」と呼ばれる設計変更案が、液体酸素ターボポンプには、2021年6月に用いたタービンを基にタービン入り口部の流れの不均一性を抑制する「1の矢」と呼ばれる設計変更案が最適と判断し、11月に実機型ステージ燃焼試験を行なった[24][25]

2022年11月に最終試験となるエンジン燃焼試験を行い[26]、12月23日に試験機1号機の打ち上げ日が2023年2月12日に決定された[27]

試験機1号機でのタイプ1、試験機2号機以降でのタイプ1A、恒久的に使う仕様のタイプ2と段階的な開発が行われている[28][29]

諸元

LE-9主要諸元一覧(目標値)
  LE-9[30] 技術実証エンジンLE-X(参考) LE-7A長ノズル(参考)
燃焼サイクル エキスパンダブリードサイクル エキスパンダブリードサイクル 二段燃焼サイクル
真空中推力 150.0 tf (1,471 kN) 148 tf (1,450 kN) 112 tf (1,100 kN)
全長 3.75m - 3.7m
重量 2.4 ton - 1.8 ton
混合比 5.9 5.9 5.9
真空中比推力 425 s 430 s 440 s
燃焼圧力 10.0 MPa 12 MPa 12.3 MPa
LH2ターボポンプ回転数 42,000 rpm 40,000 rpm 41,900 rpm
LOXターボポンプ回転数 17,000 rpm 16,500 rpm 18,300 rpm

脚注

注釈

  1. ^ MB-XX実証エンジンの燃焼器と液体酸素ターボポンプは三菱重工、液体水素ターボポンプはプラット・アンド・ホイットニー・ロケットダインが担当した[8]

出典

  1. ^ 松浦晋也 (2021年2月2日). “H3ロケットの主エンジン「LE-9」熱効率向上で世界初に挑戦”. 日経ビジネス. 2022年2月23日閲覧。
  2. ^ H3ロケットの開発状況について” (PDF). 文部科学省 宇宙開発利用部会 (2016年2月2日). 2016年2月24日閲覧。
  3. ^ a b 2020年:H3ロケットの目指す姿” (PDF). JAXA (2015年7月8日). 2016年2月24日閲覧。
  4. ^ JAXA's No.062” (PDF). JAXA (2015年10月). 2018年10月22日閲覧。
  5. ^ 鳥嶋真也 (2020年9月24日). “H3ロケット開発を襲った“魔物”とは?、エンジンに見つかった技術的課題 1/2”. マイナビニュース. https://news.mynavi.jp/article/20200924-1332582/ 
  6. ^ “魔物”のロケットエンジン、LE-9開発に挑む H3プロジェクトマネージャー、JAXAの岡田匡史氏に聞く(その2)”. 日経BP社 (2015年10月5日). 2016年1月11日時点のオリジナルよりアーカイブ。2016年2月24日閲覧。
  7. ^ 三菱重工|MB-XX”. 2016年2月24日閲覧。
  8. ^ ロケット用上段エンジンMB-XXの実証エンジン燃焼試験に成功” (2005年9月16日). 2008年11月8日時点のオリジナルよりアーカイブ。2016年5月29日閲覧。
  9. ^ 姿を現した次世代の大型ロケットエンジン「LE-9」 第2回 2020年の打ち上げに向けたスケジュール”. マイナビニュース (2017年11月27日). 2019年12月25日閲覧。
  10. ^ a b 宇宙航空研究開発機構,宇宙輸送ミッション本部,LE-X(国立国会図書館アーカイブ)”. 2016年2月24日閲覧。
  11. ^ a b 三菱重工技報,第48巻第4号「LE-Xエンジン開発へ向けた取り組み」” (PDF). 2016年2月24日閲覧。
  12. ^ IHI技報,第49巻第3号「LE-Xエンジン用ターボポンプの研究」” (PDF). 2016年2月24日閲覧。
  13. ^ 三菱重工技報,第55巻第2号「H3 ロケット1段用LE-9 エンジンの燃焼安定性予測技術及び対策技術開発」” (PDF). 三菱重工 (2018年). 2019年11月30日閲覧。
  14. ^ H3ロケットの開発状況について” (PDF). JAXA (2019年12月10日). 2020年3月26日閲覧。
  15. ^ (日本語) 2020年2月13日に行われたH3ロケットの大型エンジン「LE-9」3基による燃焼試験(BFT)の様子 (C)JAXA, https://www.youtube.com/watch?v=aq-S5DzVKbc 2020年3月26日閲覧。 
  16. ^ 第8回 第1段厚肉タンクステージ燃焼試験結果|H3|ロケット|JAXA 第一宇宙技術部門 ロケットナビゲーター”. www.rocket.jaxa.jp. 2020年3月26日閲覧。
  17. ^ “LE-9エンジン×3基の燃焼試験が初公開、H3ロケットのBFTは全て無事に完了!”. マイナビニュース. (2020年2月19日). https://news.mynavi.jp/techplus/article/20200219-977534/ 
  18. ^ (日本語) 【録画】LE-9エンジンの開発状況について, https://www.youtube.com/watch?v=_fz5MB1X0TE 2021年4月17日閲覧。 
  19. ^ 日本放送協会. “日本の主力ロケットH3 打ち上げ1年延期し来年度に JAXA”. NHKニュース. 2020年9月11日閲覧。
  20. ^ JAXA、H3ロケットの開発計画を見直し - LE-9エンジンに技術的課題を確認”. マイナビニュース. 2020年9月14日閲覧。
  21. ^ “H3ロケット開発を襲った“魔物”とは?、エンジンに見つかった技術的課題 2/2”. マイナビニュース. (2020年9月24日). https://news.mynavi.jp/techplus/article/20200924-1332582/2 
  22. ^ H3ロケットの試験機1号機の打上げについて”. 国立研究開発法人宇宙航空研究開発機構 (2022年1月21日). 2022年1月21日閲覧。
  23. ^ 日本放送協会. “JAXA 日本の新たな主力ロケット「H3」の打ち上げ延期 正式発表”. NHKニュース. 2022年1月22日閲覧。
  24. ^ H3ロケット、2022年度内の打ち上げ目指す。対策案を並行開発し、延期の原因となった振動問題を解決【宇宙ビジネスニュース】 宙畑 2022年9月5日
  25. ^ 「困難は技術を飛躍させる」—H3ロケット、2022年度打ち上げへ正念場 三菱電機 2022年9月22日
  26. ^ 新型ロケット「H3」 発射地点でメインエンジン燃焼試験 鹿児島”. 日本放送協会 (2022年11月7日). 2022年11月8日閲覧。
  27. ^ JAXA | H3ロケット試験機1号機による先進光学衛星「だいち3号」(ALOS-3)の打上げについて”. JAXA | 宇宙航空研究開発機構 (2022年12月23日). 2022年12月25日閲覧。
  28. ^ H3ロケット用LE-9認定型エンジン燃焼試験の実施について|LE-9|エンジン|ロケット|JAXA 宇宙輸送技術部門”. www.rocket.jaxa.jp. 2024年3月1日閲覧。
  29. ^ 株式会社インプレス (2024年2月16日). “H3ロケット2号機打ち上げ成功 基幹ロケットの意義とこれから”. Impress Watch. 2024年3月1日閲覧。
  30. ^ H3ロケット基本設計結果について” (PDF). JAXA (2016年6月14日). 2016年6月21日閲覧。

関連項目

外部リンク


LEX

出典: フリー百科事典『ウィキペディア(Wikipedia)』 (2022/11/28 05:56 UTC 版)

LEX

関連項目


Lex

出典: フリー百科事典『ウィキペディア(Wikipedia)』 (2023/12/02 14:41 UTC 版)

Lex
作者 エリック・シュミットマイク・レスク英語版
リポジトリ
プログラミング
言語
C言語
対応OS Unix
サポート状況 開発終了
種別 コマンド
テンプレートを表示

Lex(レック、レックス)は、1975年にエリック・シュミットマイク・レスク英語版によって開発された、レキシカルアナライザ(字句解析プログラム、字句解析器)を生成するプログラムである。unixにおける標準のレキシカルアナライザとなっており、POSIX標準ともなっている。コンパイラの作成のためにパーサジェネレータyaccとともに使用されることも多い。

概要

名称

Lexはレキシカルアナライザジェネレータである。すなわちレキシカルアナライザ(字句解析プログラム、字句解析器)の生成ツールであり、Lexの名称も英語のLexical analysisからきている。

用途

字句解析はテキスト中の文字列の変換、カウント、抽出などさまざまな目的に使われ、その応用領域は、コンパイラやコンバータの作成を筆頭に、自然言語処理や簡単な整形まで幅広い。

このうち、コンパイラにおけるレキシカルアナライザの位置づけを、以下に説明する。 プログラム中間言語あるいは機械語に変換するコンパイラは、一般的にソースを入力し構文木を出力する構文解析部(1)と、その構文木を入力し中間言語コードまたは機械語を出力するコード生成部(2)からなる。

コンパイラ
 ├構文解析部(1)
 │ ├字句解析器(1.1) ←〔ソース〕
 │ │呼出し↑↓
 │ │   ↑〔トークン列〕
 │ │   ↑↓
 │ └構文解析器(1.2)
 │     ↓
 │  〔構文木〕
 │     ↓
 └コード生成部(2)   →〔中間言語コードまたは機械語〕

このうち(1)の前半は、ソースを入力しトークン(語彙素)列を出力する字句解析器(レキシカルアナライザ、トークナイザ、スキャナ)(1.1)である。 後半は、そのトークン列を入力し、構文規則にしたがって構文解析をし、構文木を出力する構文解析器(パーサ、パーザ)(1.2)である。 (1.1)のレキシカルアナライザを生成するのが、レキシカルアナライザジェネレータである。

機能概要

構文解析器(1.2)に解析を数字や英字や空白などの1文字単位で行わせると、複雜になりすぎる。しかし、人間が英文から英単語や数字などの記号列を、区切り文字(たとえば空白、タブ、改行、コンマ、終止符、カッコ)やその列を目印に抽出して、意味を判断しているのと、同様の発想ができる。すなわち、区切り記号列でソースを切っていくと、「print」のような語、「1999」のような10進数、「"Hello, world"」といった文字リテラル、「++」といった演算子、「}」や「;」など意味のある区切り文字など、各種の文字列が取り出せる。これをトークンという。ここまでの下位の文法処理を上記字句解析器(1.1)に行わせ、一方、構文解析器(1.2)はトークンから出発して句、文、ブロック、プログラムなどを認識する上位の文法処理に専念させる。この分業化により、それぞれの定義と処理を簡潔にできる。

この字句解析器(1.1)の合理的な開発を目的とし、機械可読にした規則定義を与えれば字句解析器を自動生成してくれる便利なツールがレキシカルアナライザジェネレータであり、LexやFlexなどがそれに属する。

〔規則定義〕
  ↓
レキシカルアナライザジェネレータ(Lex, Flexなど)
  ↓
〔字句解析器(1.1)〕

同様に、構文解析器(1.2)の合理的な開発を目的とし、構文規則定義を与えれば構文解析器を自動生成してくれる便利なツールとして、Yacc(Yet Another Compiler Compiler)などのパーサジェネレータ(コンパイラコンパイラ)がある。

構文解析器ジェネレータとの関係

Yaccなどの構文解析器生成ツールを利用するなら、Lexに字句文法定義を与えて生成させたC言語ソースである字句解析器が(Yaccがトークンをユーザから得るための)yylex関数を含んでいるので、CコンパイラでYacc出力と一緒にこれをリンクして組み込む。これにより、ソーステキストの字句解析と構文解析を両方行って、規則のアクション部(あるいはさらにそれに呼ばれるユーザ作成のC言語関数)に書かれた計算の結果や、コンパイルの生成に使われる抽象構文木の構造体データ、あるいは各種表示が出力される変換プログラムが完成する。

YaccとLexはよく似た文法定義をもち、セットで使われ、セットで解説されることが多い。LexとYaccの機能はIEEE POSIX 1003.1-2008(かつては1003.2)で標準化されている[1]

配布と派生、改良

YaccはほとんどのUNIXシステムで、デフォルトのレキスカルアナライザジェネレータとして利用可能だった。 Lexは多くのシステム、多くのプログラミング言語に移植されている。たとえばJava言語による字句解析器を生成するLex系ツールに、JLex、それを書き直したJFlexがある。このJFlexとJava言語用構文解析器CUPと組みあわせて用いることも行われている[2]

Lexと同等の機能を有し性能が改善されているFlex(英語版)というものもある[3]が、開発者がLexの開発者とは別人のen:Vern Paxsonであり、ライセンスもLexが Plan 9: MIT Licenseなのに対しFlexのほうはBSDライセンスであり、つまりは全く別のソフトウェアであり、しっかり区別したほうがよい。

Flexについては別記事 Flex (字句解析器・生成器)英語版 を立ち上げ、そちらで説明すること。

Lex のファイル構造

Lexのファイル構造は意識的にyaccのそれに似せて定義されている。 ファイルは3つの部分に分割されており、それぞれ定義領域、規則領域、Cコード領域である。各領域はパーセント記号2つ(%%)のみを含んだ行で区切られる。

定義領域は正規表現を用いてマクロを定義するところであり、かつCのヘッダーファイルを取り込む場所でもある。

規則領域は最も重要な領域でありCの命令との関連付けを行う。Lexの規則と一致するパターンがあるとそれに関連付けされたCコードを実行する。

Cコード領域には生成したソースにそのままコピーされるCの命令や関数が含まれている。 これらの命令は規則領域での規則により呼ばれたコードを含む場合もある。大規模なプログラムではここに分割しておきコンパイル時にリンクするほうが便利である。

Lexの正規表現

  • 通常の正規表現の特殊文字にくわえ、「"」 「/」 「%」 「(」 「)」 「+」 「/」 「<」 「>」 「?」 「{」 「|」 「}」 も特殊文字である
  • 行頭の「%」は、上述のように領域を区切ったり、Lex特有の指示をあたえるために使う
  • 文字クラス、否定文字クラスの内側で「\」が特殊文字になる
  • 陽に指定したときを除いて、否定文字クラスは、改行にも照合する
  • "」で引用できる。引用の終了も「"
  • パターン{最少,最多}」や「パターン{回数}」でパターンの繰返し回数を指定できる (Grepの拡張正規表現と同じ)
  • +」は「{1,}」の、「?」は「{,1}」の、それぞれの省略形である (Grepの拡張正規表現と同じ)
  • |」で択一できる。「(」と「)」で範囲を広げて指定できる (Grepの拡張正規表現と同じ)
  • \b」「\f」「\n」「\r」「\t」「\v」「\8進数」は、Cの文字定数の定義と同じ
  • 「<開始条件>正規表現」で、指定の名前の開始条件にあるときの正規表現だけに照合できる。開始条件は、コンマで区切って複数指定できる
  • 「r/s」は、正規表現「s」の後続する正規表現「r」を表わす。アクションで参照できるのが「r」のみになるところが、重要である
  • {名前}」で、定義領域で定義した名前のマクロに展開される

脚注・出典

  1. ^ POSIX 1003.1-2008 - IEEE(有料)
  2. ^ Theory of Compilation -- JLex, CUP tools --(PDF) - by Haifa Univ. Bilal Saleh
  3. ^ Flex The Lexical Scanner Generator - G. T. Nicol(日本語訳)

関連項目

外部リンク

  • 字句解析 (日本語)- Oracle Documentation プログラミングユーティリティ 第2章、

特にlex と yacc の併用

特にFlex と Lex


「lex」の例文・使い方・用例・文例

Weblio日本語例文用例辞書はプログラムで機械的に例文を生成しているため、不適切な項目が含まれていることもあります。ご了承くださいませ。


英和和英テキスト翻訳>> Weblio翻訳
英語⇒日本語日本語⇒英語
  

辞書ショートカット

すべての辞書の索引

「lex」の関連用語

lexのお隣キーワード
検索ランキング

   

英語⇒日本語
日本語⇒英語
   



lexのページの著作権
Weblio 辞書 情報提供元は 参加元一覧 にて確認できます。

   
拡張子辞典拡張子辞典
Copyright © 2005-2025 Weblio 辞書 IT用語辞典バイナリさくいん。 この記事は、IT用語辞典バイナリの【.lex】の記事を利用しております。
航空軍事用語辞典++航空軍事用語辞典++
この記事はMASDF 航空軍事用語辞典++の記事を転載しております。
MASDFでは航空及び軍事についての様々なコンテンツをご覧頂けます。
日外アソシエーツ株式会社日外アソシエーツ株式会社
Copyright (C) 1994- Nichigai Associates, Inc., All rights reserved.
ウィキペディアウィキペディア
All text is available under the terms of the GNU Free Documentation License.
この記事は、ウィキペディアのlex (改訂履歴)、LE-9 (改訂履歴)、LEX (改訂履歴)、Lex (改訂履歴)の記事を複製、再配布したものにあたり、GNU Free Documentation Licenseというライセンスの下で提供されています。 Weblio辞書に掲載されているウィキペディアの記事も、全てGNU Free Documentation Licenseの元に提供されております。
Tanaka Corpusのコンテンツは、特に明示されている場合を除いて、次のライセンスに従います:
 Creative Commons Attribution (CC-BY) 2.0 France.
この対訳データはCreative Commons Attribution 3.0 Unportedでライセンスされています。
浜島書店 Catch a Wave
Copyright © 1995-2025 Hamajima Shoten, Publishers. All rights reserved.
株式会社ベネッセコーポレーション株式会社ベネッセコーポレーション
Copyright © Benesse Holdings, Inc. All rights reserved.
研究社研究社
Copyright (c) 1995-2025 Kenkyusha Co., Ltd. All rights reserved.
日本語WordNet日本語WordNet
日本語ワードネット1.1版 (C) 情報通信研究機構, 2009-2010 License All rights reserved.
WordNet 3.0 Copyright 2006 by Princeton University. All rights reserved. License
日外アソシエーツ株式会社日外アソシエーツ株式会社
Copyright (C) 1994- Nichigai Associates, Inc., All rights reserved.
「斎藤和英大辞典」斎藤秀三郎著、日外アソシエーツ辞書編集部編
EDRDGEDRDG
This page uses the JMdict dictionary files. These files are the property of the Electronic Dictionary Research and Development Group, and are used in conformance with the Group's licence.

©2025 GRAS Group, Inc.RSS