( 大 ) 目標 2 /25 可読性 可変性に優れた大気大循環モデル (GCM) を作る 可読性 : ソースコードの読み書きが簡単 可変性 : 物理過程の交換や分離, 力学過程の変更が簡単 こんな GCM にできると良いな お手軽に動かせる GCM カスタマイズが簡単にできる GCM

Similar documents
はじめに 2 /21 ドキュメントの重要性 開発や保守の効率化 ( プログラムの改変 ) ソフトウェアの品質向上 ( プログラムの利用 ) Fortran による数値モデルのドキュメント 数理 離散化ドキュメント :: TeX 数式の記述に最適 リファレンスマニュアル :: HTML Web からの

2 /13 仮想的な湿潤惑星の計算 計算条件を手軽に変更 大気組成 入射太陽放射量 重力加速度 大気圧 自転周期 etc. 可変性 可読性に優れた大気大循環モデル 何を計算しているか ソースコードを読んで分かる スキームの交換や分離が容易にできる

はじめに 大気大循環モデル (General Circulation Model: GCM) による惑星大気の比較実験

目次 2 /14 はじめに : DCPAM とは? これまでの活動と今回の主題 オブジェクト指向型のモジュール設計 プログラムのテスト実行の半自動化 モジュール雛形作成ツールの整備 モデルの実装の現状

はじめに Doxygen イントロダクション Doxygen とは? Doxygen の主な特徴 数値モデル開発における Doxygen の利用 dcmodel におけるドキュメンテーション方法 Doxygen と RDoc の比較 シンタックス生成されるドキュメント IGModel における Do

Fortran 勉強会 第 5 回 辻野智紀

Microsoft PowerPoint - prog03.ppt

(1) プログラムの開始場所はいつでも main( ) メソッドから始まる 順番に実行され add( a,b) が実行される これは メソッドを呼び出す ともいう (2)add( ) メソッドに実行が移る この際 add( ) メソッド呼び出し時の a と b の値がそれぞれ add( ) メソッド

Microsoft PowerPoint Java基本技術PrintOut.ppt [互換モード]

2 概要 市場で不具合が発生にした時 修正箇所は正常に動作するようにしたけど将来のことを考えるとメンテナンス性を向上させたいと考えた リファクタリングを実施して改善しようと考えた レガシーコードなのでどこから手をつけて良いものかわからない メトリクスを使ってリファクタリング対象を自動抽出する仕組みを

JavaプログラミングⅠ

Microsoft PowerPoint - chap10_OOP.ppt

PowerPoint プレゼンテーション

VelilogHDL 回路を「言語」で記述する

コードテンプレートフレームワーク 機能ガイド 基礎編

JavaプログラミングⅠ

PowerPoint プレゼンテーション

た場合クラスを用いて 以下のように書くことが出来る ( 教科書 p.270) プログラム例 2( ソースファイル名 :Chap08/AccountTester.java) // 銀行口座クラスとそれをテストするクラス第 1 版 // 銀行口座クラス class Account String name

PowerPoint プレゼンテーション

Microsoft PowerPoint - prog04.ppt

.NETプログラマー早期育成ドリル ~VB編 付録 文法早見表~

Prog1_6th

Web データ管理 JavaScript (1) (4 章 ) 2011/12/7( 水 ) 湘南工科大学講義資料 Web データ管理 (2011) 阿倍 1/21

4 月 東京都立蔵前工業高等学校平成 30 年度教科 ( 工業 ) 科目 ( プログラミング技術 ) 年間授業計画 教科 :( 工業 ) 科目 :( プログラミング技術 ) 単位数 : 2 単位 対象学年組 :( 第 3 学年電気科 ) 教科担当者 :( 高橋寛 三枝明夫 ) 使用教科書 :( プロ

Program Design (プログラム設計)

プログラミング実習I

Microsoft PowerPoint - 09.pptx

オブジェクト指向プログラミング・同演習 5月21日演習課題

メディプロ1 Javaプログラミング補足資料.ppt

Javaの作成の前に

プレポスト【問題】

PowerPoint プレゼンテーション

GSLetterNeo vol 年 7 月 形式手法コトハジメ TLA + Toolbox を使って (2)- 熊澤努 sra.co.jp はじめに GSLetterNeo Vol.130 で TLA + Toolbox を紹介しました 今回からより詳しく T

PowerPoint プレゼンテーション

Microsoft PowerPoint - exp2-02_intro.ppt [互換モード]

memo

PowerPoint プレゼンテーション

V8.1新規機能紹介記事

Microsoft PowerPoint - class2-OperatorOverLoad.pptx

Microsoft Word 基_シラバス.doc

Microsoft PowerPoint - ruby_instruction.ppt

PowerPoint プレゼンテーション

Java言語 第1回

ご利用のコンピュータを設定する方法 このラボの作業を行うには 事前設定された dcloud ラボを使用するか 自身のコンピュータをセットアップします 詳細については イベントの事前準備 [ 英語 ] とラボの設定 [ 英語 ] の両方のモジュールを参照してください Python を使用した Spar

4-4- 基スクリプト言語に関する知識 コードの作成や修正が容易とされるスクリプト言語を学習し アプリケーション開発の手法を習得する 本カリキュラムでは まずスクリプト言語に位置づけされる Perl PHP Python JavaScript Ruby といった Ⅰ. 概要プログラミング言語の特徴に

Microsoft PowerPoint - prog08.ppt

はじめに 動機 IGModel プロジェクトとは 目次 IGModel プロジェクトの構成 構造 現在の開発状況 IGMBaseLib, IGMTool IGModel-SW( 正二十面体格子全球浅水モデル ) IGModel-SW のテスト計算の結果 ( 一部 ) まとめ, 今後の展望

Microsoft PowerPoint - CproNt02.ppt [互換モード]

第 2 章インタフェース定義言語 (IDL) IDL とは 言語や OS に依存しないインタフェース定義を行うためのインタフェース定義言語です CORBA アプリケーションを作成する場合は インタフェースを定義した IDL ファイルを作成する必要があります ここでは IDL の文法や IDL ファイ

Java プログラミング Ⅰ 3 回目変数 変数 変 数 一時的に値を記憶させておく機能型 ( データ型 ) と識別子をもつ 2 型 ( データ型 ) 変数の種類型に応じて記憶できる値の種類や範囲が決まる 型 値の種類 値の範囲 boolean 真偽値 true / false char 2バイト文

Microsoft Word - matlab-coder-code-generation-quick-start-guide-japanese-r2016a

新版 明解C++入門編

PowerPoint Presentation

デジタル回路入門

プログラミング基礎I(再)

Prog2_12th

Microsoft PowerPoint - ●SWIM_ _INET掲載用.pptx

memo

JavaプログラミングⅠ

Prog1_10th

メソッドのまとめ

7th CodeGear Developer Camp

Microsoft PowerPoint - 12.ppt [互換モード]

演習1

スライド 1


RX ファミリ用 C/C++ コンパイラ V.1.00 Release 02 ご使用上のお願い RX ファミリ用 C/C++ コンパイラの使用上の注意事項 4 件を連絡します #pragma option 使用時の 1 または 2 バイトの整数型の関数戻り値に関する注意事項 (RXC#012) 共用

並列計算導入.pptx

Java知識テスト問題

Microsoft Word - Training10_プリプロセッサ.docx

Visual Basic 資料 電脳梁山泊烏賊塾 コレクション初期化子 コレクション初期化子 初めに.NET 版の Visual Basic では 其れ迄の Visual Basic 6.0 とは異なり 下記の例の様に変数宣言の構文に 初期値を代入する式が書ける様に成った 其の際 1 の様に単一の値

Microsoft PowerPoint ppt

コンピュータ工学講義プリント (7 月 17 日 ) 今回の講義では フローチャートについて学ぶ フローチャートとはフローチャートは コンピュータプログラムの処理の流れを視覚的に表し 処理の全体像を把握しやすくするために書く図である 日本語では流れ図という 図 1 は ユーザーに 0 以上の整数 n

生成された C コードの理解 コメント元になった MATLAB コードを C コード内にコメントとして追加しておくと その C コードの由来をより簡単に理解できることがよくありま [ 詳細設定 ] [ コード外観 ] を選択 C コードのカスタマイズ より効率的な C コードを生成するベストプラクテ

Microsoft PowerPoint - 13.ppt [互換モード]

break 文 switch ブロック内の実行中の処理を強制的に終了し ブロックから抜けます switch(i) 強制終了 ソースコード例ソースファイル名 :Sample7_1.java // 入力値の判定 import java.io.*; class Sample7_1 public stati

Microsoft PowerPoint ppt

Prog1_2nd

Microsoft Word - Javacc.docx

レコードとオブジェクト

Prog1_15th

実行形式の作成と構成管理 2012 年 7 月 8 日 海谷治彦 1

Java Scriptプログラミング入門 3.6~ 茨城大学工学部情報工学科 08T4018Y 小幡智裕

JavaプログラミングⅠ

Microsoft PowerPoint - 12.ppt [互換モード]

memo

2. 目的 1RationalRose を利用する場合にプログラム仕様書としての最低限必要な記述項目を明確にする 2 プログラム仕様書として記載内容に不足がない事をチェックする 3UML の知識があるものであれば 仕様書の内容を理解できること 4Rose にて入力した内容を SoDaWord を利用

Java講座

ガイダンス

デジタル表現論・第6回

C#の基本

書式に示すように表示したい文字列をダブルクォーテーション (") の間に書けば良い ダブルクォーテーションで囲まれた文字列は 文字列リテラル と呼ばれる プログラム中では以下のように用いる プログラム例 1 printf(" 情報処理基礎 "); printf("c 言語の練習 "); printf

プログラミング入門1

個人依存開発から組織的開発への移行事例 ~ 要求モデル定義と開発プロセスの形式化 による高生産性 / 高信頼性化 ~ 三菱電機メカトロニクスソフトウエア ( 株 ) 和歌山支所岩橋正実 1

プレポスト【問題】

Microsoft PowerPoint - prog09.ppt

PowerPoint プレゼンテーション

Microsoft PowerPoint - prog09.ppt

Python によるジオプロセシング スクリプト入門

情報工学実験 C コンパイラ第 2 回説明資料 (2017 年度 ) 担当 : 笹倉 佐藤

Transcription:

RDoc を用いた Fortran90/95 プログラムのドキュメント生成 北海道大学理学研究科 地球惑星科学専攻地球流体力学研究室 D1 森川靖大 /25 1

( 大 ) 目標 2 /25 可読性 可変性に優れた大気大循環モデル (GCM) を作る 可読性 : ソースコードの読み書きが簡単 可変性 : 物理過程の交換や分離, 力学過程の変更が簡単 こんな GCM にできると良いな お手軽に動かせる GCM カスタマイズが簡単にできる GCM

可読性 可変性に必要なのは? 3 /25 ソースコードの書き方の工夫 例 : 気象庁コーディングルール, AGCM5, FMS マニュアル, GFD Dennou Club dcmodel コーディングルール プログラムの構造の工夫 例 : FMS, DCPAM (spml, gt4f90io, ISPACK) ドキュメントの整備の工夫

はじめに 4 /25 ドキュメントの重要性 第三者への提供 ( プログラムの利用 ) 開発や保守の効率化 ( プログラムの改変 ) Fortran による数値モデルのドキュメント 数理 離散化ドキュメント :: TeX 数式の記述に最適 リファレンスマニュアル :: HTML Web からの参照に最適 ハイパーリンクが便利

リファレンスマニュアルの作成 5 /25 何が厄介かというと... プログラムとマニュアルを別々に用意するのは面倒 プログラムで書いたものをもう一度書くのは面倒 Java や Ruby では JavaDoc や RDoc があるが Fortran の規格にはドキュメント生成機能は無い... 過去に行われた工夫 XML を用いた FMS (GFDL) の試み RD を用いた我々のこれまでの試み そこで RDoc を用いた Fortran ソースコードの自動解析

XML を用いた FMS (GFDL) の試み 6 /25 Fortran95 に XML のドキュメントを埋め込む FMS (Flexible Modeling System: GFDL) で試行 FMS 謹製のツールで HTML へ変換 Fortran95 ソースコード modulemodule_name_mod!<overview>! module_name_mod の概要!</OVERVIEW> implicitnone private public::module_name_init,module_name_end!<subroutinename= module_name_init">!<overview>! モジュールの初期化!</OVERVIEW>!<TEMPLATE>! module_name_init(inchar,outint)!</template>!<inname= inchar TYPE= character >! 文字型の入力変数!</IN>!<OUTNAME= outint TYPE= integer >! 整数型の出力変数!</IN> subroutinemodule_name_init(inchar,outint) character(*),intent(in)::inchar integer(intkind),intent(out)::outint endsubroutinemodule_name_init!</subroutine> endmodulemodule_name_mod!<subroutinename= module_name_init">!<overview>! モジュールの初期化!</OVERVIEW>!<TEMPLATE>! module_name_init(inchar,outint)!</template> :!</SUBROUTINE> XML でコメントを記述する このコメント部分を抜き出し XML から HTML マニュアルを作成

XML を用いた FMS (GFDL) の試み 7 /25 Fortran95 に XML のドキュメントを埋め込む FMS (Flexible Modeling System: GFDL) で試行 FMS 謹製のツールで HTML へ変換 利点 XML の利用により 構造的なマニュアルを作成することが出来る 欠点 XML のタグで Fortran コードが汚くなる 手続き名や引数をコードとマニュアルで 2 度書く必要あり

RD を用いた我々のこれまでの試み 8 /25 Fortran95 に RD 形式のコメントを埋め込む RD を用いることでタグが簡潔に rdtool によって RD を HTML に変換 Fortran95 ソースコード!=Modulemodule_name_mod:Samplemodule!*Developers:YasuhiroMorikawa!==Overview!module_name_mod の概要 modulemodule_name_mod implicitnone!==publicinterface private public::module_name_init,module_name_end!=begin!=end!=begin!==procedureinterface!===subroutinemodule_name_init: モジュールの初期化!NAMELIST を入力し グローバル変数を allocate する subroutinemodule_name_init(inchar,outint,inoutdata)!====input character(*),intent(in)::inchar!====output integer(intkind),intent(out)::outint!=end endsubroutinemodule_name_init endmodulemodule_name_mod 1!=begin ~!=end の部!=begin 1 分をマニュアルに反映 :!=end!=end 2コメントには RD の文!=Module.. 2!*Develop.. 法を利用 見出しやリス!==Overview トは = や * で簡潔に表現 3!=begin : subroutine.. 3 引用仕様 ( 引数の名前 char..,int.. と型など ) に関するソー : スコードをそのままマ!=end!=end ニュアルへ

RD を用いた我々のこれまでの試み 9 /25 Fortran95 に RD 形式のコメントを埋め込む 利点 ソースとマニュアルとで 2 度書く手間を軽減 XMLタグと比較してソースが汚れない 欠点 モジュール間の依存関係を解釈不能 複数のファイルを同時に解析しないと不可能 ソース内のタグ ( =begin 等 ) はやっぱりそれなりに汚い ソースコード自動解析の必要性

RDoc とは 10 /25 何ぞや? Ruby で書かれたソースコードからドキュメントを自動生成する Ruby の標準ライブラリ Fortran90/95 との関係は? ソースコード解析機構とマニュアル生成機構が分離しているため 他の言語で書かれたソースコードも解析可能 標準で C および Fortran95 用の解析機構が付属 利点は? RD の利点 ( マニュアルのソースへの埋め込み ) を引継ぎ 欠点 ( タグの簡素化 依存関係の解釈 ) を克服

RDoc によるドキュメント生成の流れ 11 /25 RDoc Generators HTML HTML Generator Generator XML XML Generator Generator CodeObject ソースコード マニュアルの形式に拠らないオブジェクト Parsers Ruby Ruby Parser Parser C Parser Parser Fortran95 Fortran95 Parser Parser XML XML Reference manual HTML HTML Source code F95 F95 Ruby Ruby C C

Fortran95 Parser ( オリジナル版 ) 12 /25 Fortran90/95 の文法を解釈 RDoc のタグは RD よりもさらに簡潔 別ファイル内のモジュール等へ自動的にリンク作成 Fortran95 ソースコード!=Modulemodule_name_mod:Samplemodule!Authors::YasuhiroMORIKAWA!!Thismoduledependsbase_modmodule! modulesample_mod usebase_mod implicitnone private public::sample_init,sample_end,const real(8)::const=3.14 subroutinesample_init(inchar,outint) character(*),intent(in)::inchar integer(intkind),intent(out)::outint endsubroutinesample_init subroutinesample_end(err) logical,intent(inout)::err endsubroutinesample_end endmodulesample_mod!=module..!authors::.. 1 usebase_mod 2 : modulemodule_.. : subroutinemo.. : endsubrou.. endmodulemodu.. 1 RDoc のタグは = や :: で表記 (RD に近い文法 ) 2 module 文, use 文, subroutine 文を解釈 別ファイルのモジュールへのリンクを自動で作成

Fortran95 Parser ( オリジナル版 ) 13 /25 Fortran90/95 の文法を解釈 RDoc のタグは RD よりもさらに簡潔 別ファイル内のモジュール等へ自動的にリンク作成 Fortran95 ソースコード!=Modulemodule_name_mod:Samplemodule!Authors::YasuhiroMORIKAWA!!Thismoduledependsbase_modmodule! modulesample_mod usebase_mod implicitnone private public::sample_init,sample_end,const real(8)::const=3.14 subroutinesample_init(inchar,outint) character(*),intent(in)::inchar integer(intkind),intent(out)::outint endsubroutinesample_init subroutinesample_end(err) logical,intent(inout)::err endsubroutinesample_end endmodulesample_mod Rdoc Files sample.f90 base.f90 Class sample_mod In: sample.f90 [source] sample_end (err) [source] HTML のリファレンスマニュアル Classes sample_mod base_mod Module sample_mod : Sample module Authors: Yasuhiro MORIKAWA This module depends base_mod module Methods sample_init sample_end Included Modules base_mod Public instance methods sample_init (inchar, outint) Methods sample_init sample_end a a a ハイパーリンク

Fortran95 Parser の問題点 14 /25 解析機能の不足 サブルーチンの引数の型を表示できない

Fortran95 Parser の問題点 15 /25 解析機能の不足 サブルーチンの解説コメントを表示できない

Fortran95 Parser の問題点 16 /25 解析機能の不足 public, private を区別できない (( 全て public 扱いになる ))

Fortran95 Parser の問題点 17 /25 解析機能の不足 そもそも表現できない要素いろいろ 関数 関数 (function 文 )) モジュールが公開する変数,, 定数定数 構造体 (type 文 )) 利用者定義演算子 (operator) 利用者定義代入 (assignment) 総称手続き (interface 文 )) etc etc

問題点の解決に向けて 18 /25 開発者 メンテナに連絡 森川 こうなると嬉しいのだけど と連絡 開発者 メンテナさんに連絡しておいたよ メンテナ ( 返事来ず )» 後に連絡がつき, 以降で紹介する改良版のパッチを送付.» 2005/02/16 現在, まだコミットはされていない模様 しょうがないので (?) 自力で改造 見た感じで足りないと思うところから五月雨的に解析機能追加

Fortran95 Parser ( 強化版 ) 19 /25 構造体の解析 要素 要素の型 解説の表示

Fortran95 Parser ( 強化版 ) 20 /25 定数の解析 型 初期値 解説の表示

Fortran95 Parser ( 強化版 ) 21 /25 関数の解析 解説の表示

Fortran95 Parser ( 強化版 ) 22 /25 引数の解析 型 解説の表示

Fortran95 Parser ( 強化版 ) 23 /25 public, private を区別

Fortran95 Parser ( 強化版 ) 24 /25 変数の解析 型 初期値 解説の表示

まとめ 25 /25 RDoc はかなり便利 RDoc の Fortran95 Parser を改良 Fortran90/95 ソースコードからリファレンスマニュアルを自動生成 強化版パッチの公開アドレス /library/dcmodel パッチを当てたパッケージも配布してます コメントの書法等の解説あります 使用例 /library/gtool4 /library/dcpam

参考資料 26 /25 数値モデリングプロジェクト dcmodel /library/dcmodel/ オブジェクト指向スクリプト言語 Ruby http://www.ruby-lang.org Fortran からドキュメントを自動生成するツール f90tohtml http://mensch.org/f90tohtml/ f90doc http://theory.lcs.mit.edu/~edemaine/f90doc/ 惑星大気モデル DCPAM /library/dcpam/ FMS (Flexible Modeling System) http://www.gfdl.noaa.gov/~fms/ The FMS Manual http://www.gfdl.noaa.gov/~vb/fmsmanual/ 気象庁 Fortran コーディングルール http://www.mri-jma.go.jp/project/mrinpd/coderule.html

付録 /25 27

AGCM5, FMS 28 /25 AGCM5 ( 沼口, 1992; SWAMP Project, 1998; http://www.gfddennou.org/arch/agcm5) FORTRAN77 で可読性向上の工夫 変数命名規則 プログラム書法を工夫 リファレンスマニュアルを整備 FORTRAN77 の制約大 FMS (Flexible Modeling System; Geophysical Fluid Dynamics Laboratory, 2005) モデルの可変性向上の工夫 Infrastructure: データ I/O, 並列化, 機種依存性の吸収をサポート Superstructure: 大気 海洋 氷床モデルの結合をサポート User Code の可読性 可変性は? FMS Superstructure User Code FMS Infrastructure

DCPAM 29 /25 サブルーチンや関数は必ずモジュールにまとめることで, 個々のプログラムの着脱を容易に 初期化の手順の統一により交換 分離を容易に 必ず module_init というサブルーチンにより初期化 (module は各モジュール名 ) ファイル名 モジュール名 サブルーチン名の命名規則 [The FMS Manual (Baraji, 2002)] ファイル名 :module.f90, 例 :dynamics.f90 モジュール名 サブルーチン名 :module_init, :module_mod, 例 :dynamics_mod 例 :dynamics_init

DCPAM 30 /25 DCPAM プリミティブモデル主プログラム モジュール群力学演算モジュール [dynamics_mod] 時刻管理モジュール [time_mod] 座標軸設定モジュール [axis_type_mod, ] など SPMODEL ( 竹広他, 2005) [ISPACK Fortran90 インターフェース ] ISPACK ( 石岡, 2005) [ スペクトル演算 ] gt4f90io ( 森川他, 2005) [ データ入出力 ] 本研究のモデル (DCPAM) の構造

XML を用いた FMS (GFDL) の試み 31 /25 Fortran95 に XML のドキュメントを埋め込む FMS (Flexible Modeling System: GFDL) で試行 FMS 特製のツールで HTML へ変換 Fortran95 ソースコード modulemodule_name_mod!<overview>! module_name_mod の概要!</OVERVIEW> implicitnone private public::module_name_init,module_name_end!<subroutinename= module_name_init">!<overview>! モジュールの初期化!</OVERVIEW>!<TEMPLATE>! module_name_init(inchar,outint)!</template>!<inname= inchar TYPE= character >! 文字型の入力変数!</IN>!<OUTNAME= outint TYPE= integer >! 整数型の出力変数!</IN> subroutinemodule_name_init(inchar,outint) character(*),intent(in)::inchar integer(intkind),intent(out)::outint endsubroutinemodule_name_init!</subroutine> endmodulemodule_name_mod HTML のリファレンスマニュアル Modulemodule_name_mod OVERVIEW OVERVIEW module_name_end の概要 module_name_end の概要 PUBLICINTERFACE PUBLICINTERFACE module_name_init: module_name_init: モジュールの初期化モジュールの初期化 PUBLICROUTINES PUBLICROUTINES a.module_name_init a.module_name_init callmodule_name_init(inchar,outint) callmodule_name_init(inchar,outint) INPUT INPUT inchar 文字型の入力変数 inchar 文字型の入力変数 [character] [character] OUTPUT OUTPUT outint 整数型の出力変数 outint 整数型の出力変数 [integer] [integer]

RD を用いた我々のこれまでの試み 32 /25 Fortran95 に RD 形式のコメントを埋め込む rdtool によって RD を HTML に変換 Fortran95 ソースコード!=Modulemodule_name_mod:Samplemodule!*Developers:YasuhiroMorikawa!==Overview!module_name_mod の概要 modulemodule_name_mod implicitnone rdtool!==publicinterface private public::module_name_init,module_name_end!=begin!=end!=begin HTML のリファレンスマニュアル 1 2!==ProcedureInterface!===Subroutinemodule_name_init: モジュールの初期化!NAMELIST を入力し グローバル変数を allocate する subroutinemodule_name_init(inchar,outint,inoutdata)!====input character(*),intent(in)::inchar!====output integer(intkind),intent(out)::outint!=end endsubroutinemodule_name_init endmodulemodule_name_mod

CodeObject 33 /25 ソースコード内の情報を階層的に保持するためのオブジェクト CodeObject : 共通する情報 TopLevel : ファイルの情報 ClassModule : クラス モジュールの情報 AnyMethod: メソッドの情報 継承の関係 CodeObject TopLevel ClassModule AnyMethod

ソースコード CodeObject 34 /25 ソースコード内の情報を TopLevel, ClassModule, AnyMethod へ 個々のファイル毎に クラス モジュール メソッドの定義 クラスの継承関係 クラス モジュールの依存関係を抽出 Source code Parsers TopLevel ClassModule ClassModule AnyMethod AnyMethod AnyMethod AnyMethod TopLevel ClassModule AnyMethod AnyMethod AnyMethod TopLevel

CodeObject マニュアル 35 /25 HTML 等のドキュメントを生成 TopLevel ClassModule ClassModule AnyMethod AnyMethod AnyMethod AnyMethod TopLevel ClassModule AnyMethod AnyMethod AnyMethod TopLevel XML XML Generators HTML HTML Reference manual 全てのオブジェクトを集約した後 リファレンスマニュアルを生成

Fortran95 Parser ( 強化版 ) 36 /25 解析機能の強化の具体例 Fortran95 ソースコード!=Modulesample_mod:Samplemodule!Authors::YasuhiroMORIKAWA! modulesample_mod usebase_mod!!sample_mod の概要 implicitnone private public::sample_init,sample_func,const,type_a private::internal typetype_a! 構造体の解説 integer::counter endtypetype_a! 構造体内部の変数の解説 real(8),parameter::const=3.14! 公開定数 integer,save ::internal! 非公開変数 subroutinesample_init(inchar,outint)! 初期化サブルーチン character(*),intent(in)::inchar! 入力変数 integer(intkind),intent(out)::outint! 出力変数 endsubroutinesample_init functionsample_func(log)result(res)! 関数 logical,intent(in)::log! 論理型入力変数 logical ::res! 論理型の返り値 endfunctionsample_func endmodulesample_mod public::samp... 1 private::inte... typetype_a... 2 real(8),parame.. 3 Integer,save..! 初期化初期化...... 4 char..! 入力入力 5.. integer..! 出力出力.... functionsamp... 6 : endfunction.. 1 公開要素と非公開要素の区別 2 構造体 3 公開定数 公開変数 4 サブルーチン 関数のコメント 5 引数の型 コメント 6 関数

Fortran95 Parser ( 強化版 ) 37 /25 解析機能の強化 解析可能になった要素のリスト 関数 (function 文 ) サブルーチンや関数の引数の型 モジュールが公開する変数, 定数 構造体 (type 文 ) NAMELIST 文 利用者定義演算子 (operator), 利用者定義代入 (assignment) 上記要素のコメント文 総称手続き (interface 文 ) 公開要素と非公開要素との区別 孫引きされている公開要素 大文字小文字の違いを無視