JPH05150998A - コンパイラ - Google Patents

コンパイラ

Info

Publication number
JPH05150998A
JPH05150998A JP31589591A JP31589591A JPH05150998A JP H05150998 A JPH05150998 A JP H05150998A JP 31589591 A JP31589591 A JP 31589591A JP 31589591 A JP31589591 A JP 31589591A JP H05150998 A JPH05150998 A JP H05150998A
Authority
JP
Japan
Prior art keywords
file
function
analysis
processing step
processing
Prior art date
Legal status (The legal status is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the status listed.)
Withdrawn
Application number
JP31589591A
Other languages
English (en)
Inventor
Eishin Tanaka
英信 田中
Current Assignee (The listed assignees may be inaccurate. Google has not performed a legal analysis and makes no representation or warranty as to the accuracy of the list.)
NEC IC Microcomputer Systems Co Ltd
Original Assignee
NEC IC Microcomputer Systems Co Ltd
Priority date (The priority date is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the date listed.)
Filing date
Publication date
Application filed by NEC IC Microcomputer Systems Co Ltd filed Critical NEC IC Microcomputer Systems Co Ltd
Priority to JP31589591A priority Critical patent/JPH05150998A/ja
Publication of JPH05150998A publication Critical patent/JPH05150998A/ja
Withdrawn legal-status Critical Current

Links

Landscapes

  • Devices For Executing Special Programs (AREA)

Abstract

(57)【要約】 (修正有) 【目的】 構文解析処理を行うコンパイラにおいて、繰
返してコンパイルする場合のコンパイル時間の総合計時
間を短縮する。 【構成】 中間ファイル12に対する書込み位置をファ
イルの最後に設定し、コンパイル情報保存ファイル13
から、構文解析を終了した関数名および関数外のデータ
群を管理するデータを読込むステップ101、翻訳対象
ファイル11の1行文の字句列を得るステップ102、
字句の列の構文を解析するステップ103解析を正常に
終了した関数を読みとばすステップ104、解析結果か
ら中間コードを生成してファイル12に出力するステッ
プ105、エラーのあった関数の構文解析結果を、ファ
イル12から削除するステップ106、翻訳プログラム
にエラーがあった場合に、正常に終了した関数に関する
データ群を管理するデータをファイル13に書込むステ
ップ107と、パス1部の正常終了を判定するステップ
108、中間ファイル12からアセンブラ・ファイル1
4を生成するステップ109とを有する。

Description

【発明の詳細な説明】
【0001】
【産業上の利用分野】本発明はコンパイラに関し、特に
字句解析および構文解析処理の高速化に対応して利用さ
れるコンパイラに関する。
【0002】
【従来の技術】一般に、コンパイラにおいては、図5に
示されるように、パス1部において、翻訳対象のプログ
ラム・ファイル51が一行単位において入力され、それ
が字句と呼ぶ論理的にひとかたまりの集まりに分離され
る字句解析処理が行われ(ステップ501)、その字句
の列が記述言語の仕様により定められた構文であるか否
かを判定する構文解析処理が行われる(ステップ50
2)。次いで、後述するコード生成処理ステップ505
との取決めにより定められた一連の単純な命令列である
中間言語に変換されて、中間ファイル52に出力する中
間コード生成処理が行われる(ステップ503)。そし
て、このパス1部の正常終了判定処理(ステップ50
4)において、翻訳対象プログラムにエラーがなかった
場合には、パス2部において、前記パス1部の出力であ
る中間ファイル52が読込まれ、中間コードから翻訳対
象のプロセッサ用のアセンブラ・コードが生成されて、
アセンブラ・ファイル53に出力される(ステップ50
5)。
【0003】図6に示されるのは、前記パス1部におけ
る処理手順の詳細を示す流れ図であり、字句解析処理に
おいて、字句解析をコールし、翻訳対象プログラムの一
行分の列を得る処理を行い(ステップ601)、次に、
構文解析処理において、前記字句の列の構文が解析され
(ステップ602)、翻訳対象プログラムの終了判定処
理が行われて(ステップ603)、最後に中間コード生
成処理において、構文解析結果から中間コードが生成さ
れ、中間ファイルに出力する処理が行われる(ステップ
604)。そして、処理ステップ604後においては、
再度処理ステップ601に戻り、処理ステップ603を
介して、当該翻訳対象プログラムが終了するまで繰返し
て処理が行われる。
【0004】
【発明が解決しようとする課題】上述した従来のコンパ
イラにおいては、パス1部において翻訳対象プログラム
にエラーが発生した場合には、パス2部に処理が伝達さ
れることなしに処理終了となる。使用者においては、当
該エラー部分を修正し、再度コンパイラを実行すること
になり、コンパイラにおいては、再度最初からパス1部
の処理が行われ、エラーが全てなくなった場合にパス2
部の処理手順が実行されて、翻訳処理が終了する。
【0005】従って、プログラム開発時のように、繰返
してコンパイルする場合には、正常に解析を終了した部
分に対して、毎回同じパス1部の処理、即ち字句解析処
理、構文解析処理および中間コード生成処理等を繰返し
て実行することになり、コンパイル時間の総合計時間が
著しく増大するという欠点がある。
【0006】
【課題を解決するための手段】本発明のコンパイラは、
パス1部において、翻訳対象プログラムの一行分の字句
の列を得る字句解析処理ステップと、前記字句解析処理
ステップにおいて得られた字句の列の構文を解析する構
文解析処理ステップと、前記構文解析処理ステップによ
る構文解析結果から中間コードを生成し、中間ファイル
に出力する中間コード生成処理ステップと、上記の各処
理ステップを有するパス1部における処理が正常に終了
した場合に、パス2部をコールするパス1部正常終了判
定処理ステップとを有し、パス2部において、パス1部
の出力である中間ファイルから、翻訳対象のプロセッサ
のアセンブラ・ファイルを生成するコード生成処理ステ
ップを有するコンパイラにおいて、前記パス1部におい
て、前記コンパイラにより作成された中間ファイルおよ
びコンパイル情報保存ファイルが存在する場合において
は、当該中間ファイルヘの書込み位置をファイルの最後
に設定し、コンパイル情報ファイルから既に構文解析を
正常に終了した関数名および関数外のデータ群を管理す
る管理データを読込む前コンパイル引継ぎ処理ステップ
と、既に構文解析を正常に終了した関数であれば、その
関数を読みとばす解析対象関数判定処理ステップと、エ
ラーのあった関数の構文解析結果を中間ファイルから削
除する中間ファイル操作処理ステップと、翻訳対象プロ
グラムにエラーがあった場合に、構文解析を正常に終了
した関数名および関数外のデータ群を管理するデータ
を、コンパイル情報保存ファイルに書込むコンパイル情
報出力処理ステップと、を有している。
【0007】
【実施例】次に、本発明について図面を参照して説明す
る。
【0008】図1は本発明の一実施例における処理手順
を示す流れ図である。図1において、バス1部において
は、前コンパイルにより作成された中間ファイル12お
よびコンパイル情報保存ファイル13が存在する場合に
は、先ず中間ファイル11に対する書込み位置がファイ
ルの最後に設定され、コンパイル情報保存ファイルか
ら、既に構文解析を正常に終了した関数名および関数外
のデータ群を管理する管理データが読込まれる、前コン
パイル情報引継ぎ処理が行われる(ステップ101)。
そして、翻訳対象プログラム・ファイル11の1行文の
字句の列を得る字句解析処理が行われて(ステップ10
2)、字句の列の構文を解析する構文解析処理が行われ
る(ステップ103)。既に構文解析を正常に終了した
関数であれば、その関数を読みとばす解析対象関数判定
処理が行われて(ステップ104)、構文解析結果から
中間コードを生成して中間ファイル12に出力する中間
コード生成処理が行われる(ステップ105)。次い
で、エラーのあった関数の構文解析結果を、中間ファイ
ル12から削除する中間ファイル操作処理が行われて
(ステップ106)、翻訳プログラムにエラーがあった
場合に、構文解析を正常に終了した関数名および関数外
のデータ群を管理するデータをコンパイル情報保存ファ
イル13に書込むコンパイル情報出力処理が行われる
(ステップ107)。
【0009】そして、上記のパス1部における処理が正
常に終了した場合には、パス2部をコールするためにパ
ス1部の正常終了判定処理が行われて(ステップ10
8)、パス2部において、パス1部の出力である中間フ
ァイル12から翻訳対象のプロセッサのアセンブラ・フ
ァイル14を生成するコード生成処理が行われて(ステ
ップ109)、処理は終了となる。
【0010】次に、本実施例のコンパイラにおけるパス
1部の処理の詳細について、図2および図3の流れ図を
参照して説明する。なお、図4に示されるのは、本実施
例のコンパイラにより生成されるコンパィル情報保存フ
ァイルの構成図である。
【0011】図2および図3において、先ず、前コンパ
イル情報引継ぎ手段として、中間ファイルおよびコンパ
イル情報保存ファイルが存在すれば、以前に構文解析を
正常に終了した関数があると判断され(ステップ20
1)、中間ファイルに対する書込み位置がファイルの最
後に設定されて、コンパイル情報保存ファイルから前回
のコンパイル情報である構文解析を正常に終了した関数
名および関数外のデータ群を管理するデータを読込む処
理が行われる(ステップ202)。
【0012】次いで、字句解析処理として、字句解析処
理をコールし、翻訳対象プログラムの一行分の字句の列
を得る処理が行われ(ステップ203)、構文解析処理
として、前記字句の列の構文が解析される(ステップ2
04)。次いで、翻訳対象プラグラムの終了判定が行わ
れて(ステップ205)、終了でない場合には、解析対
象関数判定処理として、その字句の列が関数の最初の文
であり、この関数が既に構文解析を正常に終了した関数
であるか否かが判定される(ステップ206)。ステッ
プ206において、この関数が既に構文解析を正常に終
了した関数である場合には、翻訳対象プログラムの読込
み位置は、この関数の終了行まで読みとばされて(ステ
ップ207)、ステップ203の処理に戻る。
【0013】ステップ206において、当該関数が構文
解析を正常に終了した関数でない場合には、図3におい
て、中間コード生成処理として、構文解析結果から中間
コードが生成されて中間ファイルに出力する処理が行わ
れ(ステップ208)、次いで中間ファイル操作処理と
して、構文解析を終了の現在行が関数の終わりの文であ
り、この現関数においてエラーがあったか否かが判定さ
れ(ステップ209)、ステップ209において、当該
現関数においてエラーがあった場合には、中間ファイル
の書込み位置を、現関数の最初の中間コードを出力した
位置に戻すことにより、次回のコンパイル時に不要とな
る現関数の構文解析結果の中間コードを削除する処理が
行われる(ステップ210)。そして、ステップ210
の処理終了後においては、図2に示される処理ステップ
203に戻り、処理ステップ203以降の処理が続行さ
れる。また、図2に示される処理ステップ205におい
て、翻訳対象プログラムが終了と判定された場合には、
図3に示される処理ステップ211に移行し、構文解析
を終了した翻訳対象プログラムにエラーがあったか否か
が判定されて(ステップ211)、当該プログラムにエ
ラーがあった場合には、コンパイル情報保存ファイルに
関数外のデータ群を管理するデータおよび構文解析を正
常に終了した関数名を書込む処理が行われて(ステップ
212)、処理は終了となる。また処理ステップ211
において、当該プログラムにエラーがあった場合には、
その時点において処理は終了となる。
【0014】このようにして、解析の終了していない関
数のみについて、字句解析、構文解析および中間コード
生成を含む処理を行うことにより、繰返してコンパイル
する場合において、コンパイル時間の総合計時間を著し
く短縮することができる。
【0015】
【発明の効果】以上説明したように、本発明は、翻訳対
象プログラム中の字句解析、構文解析および中間コード
生成を含む処理を、正常に終了した関数を変更しない条
件において再コンパイルすれば、正常に解析を終了した
関数の中間コードと、その関数名および関数外のデータ
群を管理するデータ情報を読込み、解析の終了していな
い関数のみについて字句解析、構文解析および中間コー
ド生成を含む処理を行うことにより、繰返してコンパイ
ルする場合に、コンパイル時間の総合計を短縮すること
ができるという効果がある。
【図面の簡単な説明】
【図1】本発明の一実施例における処理手順を示す流れ
図である。
【図2】前記本実施例におけるパス1部の詳細な処理手
順を示す流れ図である。
【図3】前記本実施例におけるパス1部の詳細な処理手
順(続)を示す流れ図である。
【図4】前記本実施例におけるコンパイル情報保存ファ
イルの構成を示す図である。
【図5】従来例における処理手順を示す流れ図である。
【図6】前記従来例におけるパス1部の詳細な処理手順
を示す流れ図である。
【符号の説明】
11、51 翻訳対象ファイル 12、52 中間ファイル 13 コンパイル情報保存ファイル 14、53 アセンブラ・ファイル 41 外部シンボル・テーブル 101 前コンパイル情報引継ぎ処理 102、501 字句解析処理 103、502 構文解析処理 104 解析対象関数判定処理 105、503 中間コード生成処理 106 中間ファイル操作処理 107 コンパイル情報出力処理 108、504 パス1部正常終了判定処理 109、505 コード生成処理 201 構文解析終了の関数の有無判定処理 202 中間ファイル書込み位置設定/コンパイル情
報ファイルからの情報読込み処理 203、601 翻訳対象プログラムの字句列作成処
理 204、602 構文解析処理 205、603 翻訳対象プログラム終了判定処理 206 構文解析終了判定処理 207 翻訳対象プログラム読込み位置を読みとばす
処理 208、604 構文解析結果の中間コードを出力す
る処理 209 関数終了文で現関数にエラー有無の判定処理 210 構文解析結果の中間コード削除処理 211 翻訳対象プログラムのエラー有無判定処理 212 コンパイル情報保存ファイルに情報を書込む
処理

Claims (1)

    【特許請求の範囲】
  1. 【請求項1】 パス1部において、翻訳対象プログラム
    の一行分の字句の列を得る字句解析処理ステップと、前
    記字句解析処理ステップにおいて得られた字句の列の構
    文を解析する構文解析処理ステップと、前記構文解析処
    理ステップによる構文解析結果から中間コードを生成
    し、中間ファイルに出力する中間コード生成処理ステッ
    プと、上記の各処理ステップを有するパス1部における
    処理が正常に終了した場合に、パス2部をコールするパ
    ス1部正常終了判定処理ステップとを有し、パス2部に
    おいて、パス1部の出力である中間ファイルから、翻訳
    対象のプロセッサのアセンブラ・ファイルを生成するコ
    ード生成処理ステップを有するコンパイラにおいて、 前記パス1部において、前記コンパイラにより作成され
    た中間ファイルおよびコンパイル情報保存ファイルが存
    在する場合においては、当該中間ファイルヘの書込み位
    置をファイルの最後に設定し、コンパイル情報ファイル
    から既に構文解析を正常に終了した関数名および関数外
    のデータ群を管理する管理データを読込む前コンパイル
    引継ぎ処理ステップと、既に構文解析を正常に終了した
    関数であれば、その関数を読みとばす解析対象関数判定
    処理ステップと、エラーのあった関数の構文解析結果を
    中間ファイルから削除する中間ファイル操作処理ステッ
    プと、翻訳対象プログラムにエラーがあった場合に、構
    文解析を正常に終了した関数名および関数外のデータ群
    を管理するデータを、コンパイル情報保存ファイルに書
    込むコンパイル情報出力処理ステップと、を有すること
    を特徴とするコンパイラ。
JP31589591A 1991-11-29 1991-11-29 コンパイラ Withdrawn JPH05150998A (ja)

Priority Applications (1)

Application Number Priority Date Filing Date Title
JP31589591A JPH05150998A (ja) 1991-11-29 1991-11-29 コンパイラ

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
JP31589591A JPH05150998A (ja) 1991-11-29 1991-11-29 コンパイラ

Publications (1)

Publication Number Publication Date
JPH05150998A true JPH05150998A (ja) 1993-06-18

Family

ID=18070900

Family Applications (1)

Application Number Title Priority Date Filing Date
JP31589591A Withdrawn JPH05150998A (ja) 1991-11-29 1991-11-29 コンパイラ

Country Status (1)

Country Link
JP (1) JPH05150998A (ja)

Similar Documents

Publication Publication Date Title
US6367068B1 (en) Dynamic parsing
US5737608A (en) Per-keystroke incremental lexing using a conventional batch lexer
JP3430252B2 (ja) ソースコード変換方法、ソースコード変換プログラムを記録した記録媒体及びソースコード変換装置
US5752058A (en) System and method for inter-token whitespace representation and textual editing behavior in a program editor
EP0752649A2 (en) System and method for textual editing of structurally-represented computer programs with on-the-fly typographical display
US5778212A (en) Interprocedural analysis user interface
US9710243B2 (en) Parser that uses a reflection technique to build a program semantic tree
JPS6375835A (ja) 目的コ−ド、プログラム・リスト及び設計文書を生成する装置
US20130152061A1 (en) Full fidelity parse tree for programming language processing
US20040031016A1 (en) System and method for browse information parsing without compilation
JPH07141201A (ja) 2パスコンパイラのための改良された方法
CN110209387B (zh) 一种顶层hdl文件生成方法和装置、计算机可读存储介质
JPH0769832B2 (ja) プログラミング演算の効果と従属性とを表現する方法及び装置
JP3130828B2 (ja) アセンブル処理方式
JP2004516574A (ja) ソフトウェアコンパイラ用の組み込みシステム用のロバストロギングシステム
JP2004185508A (ja) プログラム解析装置およびプログラム
Koskimies et al. The design of a language processor generator
KR102614967B1 (ko) 자바스크립트의 중간 언어 기반 의미론 추출 자동화 시스템 및 방법
JPH05150998A (ja) コンパイラ
CN112948419A (zh) 查询语句处理方法及装置
JP2000029678A (ja) プログラム言語変換方法、変換装置および記録媒体
GB2420638A (en) Method of substituting code fragments in Internal Representation
JPS5922140A (ja) 対話型コンパイル方式
JP3003459B2 (ja) プログラム作成支援装置
JPH07121379A (ja) 複数言語混在コンパイラ

Legal Events

Date Code Title Description
A300 Withdrawal of application because of no request for examination

Free format text: JAPANESE INTERMEDIATE CODE: A300

Effective date: 19990204