Lex Lexの概要

Lex

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

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

概要

名称

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の命令や関数が含まれている。 これらの命令は規則領域での規則により呼ばれたコードを含む場合もある。大規模なプログラムではここに分割しておきコンパイル時にリンクするほうが便利である。


  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(日本語訳)


「Lex」の続きの解説一覧

LE-9

(Lex から転送)

出典: フリー百科事典『ウィキペディア(Wikipedia)』 (2024/03/01 00:39 UTC 版)

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


注釈

  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日). 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日閲覧。


「LE-9」の続きの解説一覧

LEX

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

LEX

関連項目



lex

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

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




「lex」の続きの解説一覧



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

辞書ショートカット

すべての辞書の索引

「Lex」の関連用語

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

   

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



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

   
ウィキペディアウィキペディア
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の元に提供されております。

©2024 GRAS Group, Inc.RSS