JPH04147342A - 宣言子解析方法 - Google Patents
宣言子解析方法Info
- Publication number
- JPH04147342A JPH04147342A JP27075990A JP27075990A JPH04147342A JP H04147342 A JPH04147342 A JP H04147342A JP 27075990 A JP27075990 A JP 27075990A JP 27075990 A JP27075990 A JP 27075990A JP H04147342 A JPH04147342 A JP H04147342A
- Authority
- JP
- Japan
- Prior art keywords
- declarator
- declarators
- priority
- order
- analyzing
- 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.)
- Pending
Links
- 238000004458 analytical method Methods 0.000 title claims abstract description 24
- 238000000034 method Methods 0.000 abstract description 10
- 230000001174 ascending effect Effects 0.000 abstract 1
- 238000010586 diagram Methods 0.000 description 7
- 230000006870 function Effects 0.000 description 6
- 230000000694 effects Effects 0.000 description 2
- 230000007423 decrease Effects 0.000 description 1
- 238000003780 insertion Methods 0.000 description 1
- 230000037431 insertion Effects 0.000 description 1
Landscapes
- Devices For Executing Special Programs (AREA)
Abstract
(57)【要約】本公報は電子出願前の出願データであるた
め要約のデータは記録されません。
め要約のデータは記録されません。
Description
【発明の詳細な説明】
〔概要〕
宣言子の作用順番を解析する宣言子解析方法に関し、
宣言子の作用順番を正確に判断かつ解析時間の短縮を図
ると共に宣言子の拡張に柔軟に対処できる解析方法を提
供することを目的とし、宣言子に対応づけて、処理中の
宣言子に付与する宣言子種別番号および処理の終了した
宣言子に付与する優先順位番号を予め格納する宣言子テ
ーブルを設け、宣言子の作用順番の解析指示に対応して
、入力された文の先頭から順次取り出した宣言子に該当
する上記宣言子テーブルのエントリから取り出した宣言
子識別番号が、1つ前に処理の終了した宣言子の優先順
位番号と比較して小さいときに優先順位番号の低い方に
検索して太きくなった位置に挿入、あるいは大きいとき
に優先順位番号の高い方に検索して等しい/小さ(なっ
た位置に挿入することを繰り返し、宣言子の作用順番を
解析するように構成する。
ると共に宣言子の拡張に柔軟に対処できる解析方法を提
供することを目的とし、宣言子に対応づけて、処理中の
宣言子に付与する宣言子種別番号および処理の終了した
宣言子に付与する優先順位番号を予め格納する宣言子テ
ーブルを設け、宣言子の作用順番の解析指示に対応して
、入力された文の先頭から順次取り出した宣言子に該当
する上記宣言子テーブルのエントリから取り出した宣言
子識別番号が、1つ前に処理の終了した宣言子の優先順
位番号と比較して小さいときに優先順位番号の低い方に
検索して太きくなった位置に挿入、あるいは大きいとき
に優先順位番号の高い方に検索して等しい/小さ(なっ
た位置に挿入することを繰り返し、宣言子の作用順番を
解析するように構成する。
本発明は、宣言子の作用順番を解析する宣言子解析方法
に関するものである。C言語などの識別子に作用する宣
言子の順番は、識別子の型を決定する重要なものであり
、その作用順番の正確さと、解析する翻訳性能の向上が
要求されている。このため、この宣言子の作用順番を正
確かつ速く解析するコンパイラが望まれている。
に関するものである。C言語などの識別子に作用する宣
言子の順番は、識別子の型を決定する重要なものであり
、その作用順番の正確さと、解析する翻訳性能の向上が
要求されている。このため、この宣言子の作用順番を正
確かつ速く解析するコンパイラが望まれている。
従来の宣言子の解析方法は、宣言子の種類と出現順番を
判断し、作用順番を解析して行っていた。
判断し、作用順番を解析して行っていた。
この際、宣言子の種類と出現順番を判断するために、宣
言子の種類毎に既に読み込まれた宣言子と比較するよう
にしていた。
言子の種類毎に既に読み込まれた宣言子と比較するよう
にしていた。
このため、宣言子の種類毎に既に読み込まれた宣言子と
比較することとなり、解析時間が多く必要となってしま
うという問題があった。また、宣言子が追加された場合
、その宣言子に対する処理を追加しなければならず、柔
軟な解析方法とはなっていないという問題があった。
比較することとなり、解析時間が多く必要となってしま
うという問題があった。また、宣言子が追加された場合
、その宣言子に対する処理を追加しなければならず、柔
軟な解析方法とはなっていないという問題があった。
本発明は、宣言子の作用順番を正確に判断かつ解析時間
の短縮を図ると共に宣言子の拡張に柔軟に対処できる解
析方法を提供することを目的としている。
の短縮を図ると共に宣言子の拡張に柔軟に対処できる解
析方法を提供することを目的としている。
第1図は、本発明の原理構成図を示す。
第1図において、宣言子テーブル1は、宣言子に対応づ
けて、処理中の宣言子に付与する宣言子種別番号および
処理の終了した宣言子に付与する優先順位番号を予め格
納するテーブルである。
けて、処理中の宣言子に付与する宣言子種別番号および
処理の終了した宣言子に付与する優先順位番号を予め格
納するテーブルである。
宣言子解析部2は、入力された文の宣言子を解析するも
のである。
のである。
本発明は、第1図に示すように、宣言子解析部2が、宣
言子の作用順番の解析指示に対応して、入力された文の
先頭から順次取り出した宣言子に該当する宣言子テーブ
ルlのエントリから取り出した宣言子識別番号が、1つ
前に処理の終了した宣言子の優先順位番号と比較して小
さいときに優先順位番号の低い方に検索して大きくなっ
た位置に挿入、あるいは大きいときに優先順位番号の高
い方に検索して等しい/小さくなった位置に挿入するこ
とを繰り返し、宣言子の作用順番を解析するようにして
いる。
言子の作用順番の解析指示に対応して、入力された文の
先頭から順次取り出した宣言子に該当する宣言子テーブ
ルlのエントリから取り出した宣言子識別番号が、1つ
前に処理の終了した宣言子の優先順位番号と比較して小
さいときに優先順位番号の低い方に検索して大きくなっ
た位置に挿入、あるいは大きいときに優先順位番号の高
い方に検索して等しい/小さくなった位置に挿入するこ
とを繰り返し、宣言子の作用順番を解析するようにして
いる。
従って、宣言子テーブル1を参照して宣言子の作用順番
を正確に判断かつ解析時間の短縮を図ることが可能とな
ると共に、宣言子の拡張時に宣言子テーブル1に登録す
ることで柔軟に対処することが可能となる。
を正確に判断かつ解析時間の短縮を図ることが可能とな
ると共に、宣言子の拡張時に宣言子テーブル1に登録す
ることで柔軟に対処することが可能となる。
次に、第1図から第4図を用いて本発明の1実施例の構
成および動作を順次詳細に説明する。以下C言語の場合
について説明する。
成および動作を順次詳細に説明する。以下C言語の場合
について説明する。
第1図において、宣言子テーブル1は、宣言子に対応づ
けて、宣言子種別番号、および優先順位番号を図示のよ
うに予め格納するものである。
けて、宣言子種別番号、および優先順位番号を図示のよ
うに予め格納するものである。
宣言子種別番号は、処理中の宣言子に付与する番号であ
って、その大小関係は以下の規則を適用する。
って、その大小関係は以下の規則を適用する。
const <volatile< () < (関数
)<*<(〈(優先)〈識別子・・・・・・・・・・・
・・(11優先順位番号は、処理の終了した宣言子に付
与する番号であって、その大小関係は以下の規則を適用
する(第2図参照)。
)<*<(〈(優先)〈識別子・・・・・・・・・・・
・・(11優先順位番号は、処理の終了した宣言子に付
与する番号であって、その大小関係は以下の規則を適用
する(第2図参照)。
(< *、 volatile、 const < C
) 、 (関数)〈(優先)〈識別子・・・・・・・
・・・・・・(2)宣言子テーブル1中の(関数)は、
関数を表す0を意味する。
) 、 (関数)〈(優先)〈識別子・・・・・・・
・・・・・・(2)宣言子テーブル1中の(関数)は、
関数を表す0を意味する。
宣言子テーブル1中の(優先)は、優先順位を表す0を
意味する。
意味する。
宣言子テーブル1中の“先頭”は、宣言子の作用順番の
先頭を意味する。番号は、宣言子種別番号および優先順
位番号の中で最大の値とする。
先頭を意味する。番号は、宣言子種別番号および優先順
位番号の中で最大の値とする。
宣言子コード2は、コンパイラのうちの入力された文の
宣言子を解析し、宣言子の作用順番を解析するものであ
る(第3図参照)。
宣言子を解析し、宣言子の作用順番を解析するものであ
る(第3図参照)。
第2図は、本発明に係る宣言子の作用順番の説明図を示
す。図中、矩形口は、宣言子ごとの情報(宣言子コード
、宣言子種別番号、優先順位番号など)を持つ領域であ
る。矢印が繋がりを表す。
す。図中、矩形口は、宣言子ごとの情報(宣言子コード
、宣言子種別番号、優先順位番号など)を持つ領域であ
る。矢印が繋がりを表す。
ここで、優先順位は、式(2)で大小関係の規則を説明
したように、先頭−識別子−0−*の順に低くなる。
したように、先頭−識別子−0−*の順に低くなる。
第3図は、本発明の動作説明フローチャートを示す。
第3図において、■は、文の宣言子の作用順番の解析時
に、文の先頭から順次取り出した宣言子が優先順位を表
す“′)(右括弧)であるか否かを判別する。Y F、
Sの場合には、優先順位の低い方へ (”を検索し、
見つかったら、 (優先)”に置き換える(■の処理
と言う、第4図■で具体的に後述する)。Noの場合に
は、@を行う。
に、文の先頭から順次取り出した宣言子が優先順位を表
す“′)(右括弧)であるか否かを判別する。Y F、
Sの場合には、優先順位の低い方へ (”を検索し、
見つかったら、 (優先)”に置き換える(■の処理
と言う、第4図■で具体的に後述する)。Noの場合に
は、@を行う。
@は、識別子であるか否かを判別する。YESの場合に
は、先頭の次に当該識別子を挿入する(■の処理と言う
、第4図■で具体的に後述する)。Noの場合には、[
相]を行う。
は、先頭の次に当該識別子を挿入する(■の処理と言う
、第4図■で具体的に後述する)。Noの場合には、[
相]を行う。
0は、処理中の宣言子の宣言子種別番号≧1つ前の宣言
子の優先順位番号か否かを判定する。YESの場合には
、処理中の宣言子の宣言子種別番号が、既に処理された
宣言子の優先順位番号より、小さいか等しくなるまで、
優先順位の高い方に検索し、条件となった場所に処理中
の宣言子を挿入するく■の処理と言う、第4図■で具体
的に説明する)。NOの場合には、処理中の宣言子の宣
言子種別番号が、既に処理された宣言子の優先順位番号
より、大きくなるまで、優先順位の低い方に検索し、条
件となった場所に処理中の宣言子を挿入する(■の処理
と言う、第4図■、■、■で具体的に説明する)。
子の優先順位番号か否かを判定する。YESの場合には
、処理中の宣言子の宣言子種別番号が、既に処理された
宣言子の優先順位番号より、小さいか等しくなるまで、
優先順位の高い方に検索し、条件となった場所に処理中
の宣言子を挿入するく■の処理と言う、第4図■で具体
的に説明する)。NOの場合には、処理中の宣言子の宣
言子種別番号が、既に処理された宣言子の優先順位番号
より、大きくなるまで、優先順位の低い方に検索し、条
件となった場所に処理中の宣言子を挿入する(■の処理
と言う、第4図■、■、■で具体的に説明する)。
次に、第4図具体例について、第3図フローチャートを
用い、詳細に説明する。
用い、詳細に説明する。
第4図において、上段の文
int (*a (2))0 ;・・・・・・(
3)の宣言子の作用順番を求める手順を以下説明する。
3)の宣言子の作用順番を求める手順を以下説明する。
ここで、文(3)の各要素は先頭から順番に下記意味を
表す。
表す。
int :整数
(=優先順位を表す宣言子
*;ポインタ
a:識別子
〔2〕 :配列で要素数が2
):優先順位を表す宣言子
0:関数型
;:終わり
■優先順位の左括弧の解析後、この左括弧“(”につい
て第1図宣言子テーブル1から取り出した宣言子種別番
号“0xF1”が1つ前に処理を終わった宣言子“先頭
”の優先順位番号“0xFF”よりも小さいので(第3
図@No、■No、@No) 、第3図■の処理によっ
て、宣言子“先頭”から優先順位番号の低い方に検索し
、大きくなる位置、ここでは宣言子“先頭”の右側に図
示のようにつなく。
て第1図宣言子テーブル1から取り出した宣言子種別番
号“0xF1”が1つ前に処理を終わった宣言子“先頭
”の優先順位番号“0xFF”よりも小さいので(第3
図@No、■No、@No) 、第3図■の処理によっ
て、宣言子“先頭”から優先順位番号の低い方に検索し
、大きくなる位置、ここでは宣言子“先頭”の右側に図
示のようにつなく。
■ポインタの*の解析後、このポインタ“*”について
第1図宣言子テーブル1から取り出した宣言子種別番号
“Ox 80 ”が1つ前に処理を終わった宣言子“
(”の優先順位番号“0xOO”よりも大きいので(第
3図■No、@No、@YES)、第3図■の処理によ
って、宣言子“ (”から優先順位番号の高い方に検索
し、小さくなる位置、ここでは宣言子°“ (゛の左側
に図示のようにつなく。
第1図宣言子テーブル1から取り出した宣言子種別番号
“Ox 80 ”が1つ前に処理を終わった宣言子“
(”の優先順位番号“0xOO”よりも大きいので(第
3図■No、@No、@YES)、第3図■の処理によ
って、宣言子“ (”から優先順位番号の高い方に検索
し、小さくなる位置、ここでは宣言子°“ (゛の左側
に図示のようにつなく。
■識別子a解析後、この識別子“a”について(第3図
■N○、@YES) 、第3図■の処理で先頭の次に当
該識別子“a”を図示のように挿入する。
■N○、@YES) 、第3図■の処理で先頭の次に当
該識別子“a”を図示のように挿入する。
■配列の0の解析後、この配列“′0゛について第1M
宣言子テーブル1から取り出した宣言子種別番号“0x
20”か1つ前に処理を終わった識別子“a”の優先順
位番号“QxFO”よりも小さいので(第3図■NO1
@NO1■NO)、第3図■の処理によって、識別子“
a”から優先順位番号の低い方に検索し、大きくなる位
置、ここでは識別子″a″の右側に図示のようにつなく
。
宣言子テーブル1から取り出した宣言子種別番号“0x
20”か1つ前に処理を終わった識別子“a”の優先順
位番号“QxFO”よりも小さいので(第3図■NO1
@NO1■NO)、第3図■の処理によって、識別子“
a”から優先順位番号の低い方に検索し、大きくなる位
置、ここでは識別子″a″の右側に図示のようにつなく
。
■優先順位の右括弧の解析後、この右括弧“)”につい
て(第3図@YES) 、第3図■の処理で優先順位の
低い方へ“ じを検索し、ここでは見つかったので、こ
れを図示のように(優先)にする。
て(第3図@YES) 、第3図■の処理で優先順位の
低い方へ“ じを検索し、ここでは見つかったので、こ
れを図示のように(優先)にする。
■関数の0の解析後、この関数“ 0 ”について第1
図宣言子テーブル1から取り出した宣言子種別番号“0
x40”が1つ前に処理を終わった宣言子“ (優先)
”の優先順位番号“0xFD″よりも小さいので(第3
図■No、@No、@No) 、第3図■の処理によっ
て、宣、君子“(優先)”から優先順位番号の低い方に
検索し、大きくなる位置、ここでは宣言子“ (優先)
”の右側に図示のようにつなぐ。これにより、文(3)
の宣言子の作用順番が解析されたこととなる。ここ冊 で、■の作用順番を解析した結果は、下段に記述した意
味を持っている。
図宣言子テーブル1から取り出した宣言子種別番号“0
x40”が1つ前に処理を終わった宣言子“ (優先)
”の優先順位番号“0xFD″よりも小さいので(第3
図■No、@No、@No) 、第3図■の処理によっ
て、宣、君子“(優先)”から優先順位番号の低い方に
検索し、大きくなる位置、ここでは宣言子“ (優先)
”の右側に図示のようにつなぐ。これにより、文(3)
の宣言子の作用順番が解析されたこととなる。ここ冊 で、■の作用順番を解析した結果は、下段に記述した意
味を持っている。
以上のように、文(3)について、先頭から順次取り出
した宣言子について、第1M宣言子テーブル1を参照し
つつ第3図フローチャー1・に従って解析し、第4図■
の解析結果を得ることができる。
した宣言子について、第1M宣言子テーブル1を参照し
つつ第3図フローチャー1・に従って解析し、第4図■
の解析結果を得ることができる。
以上説明したように、本発明によれば、第1図宣言子テ
ーブル1を参照しつつ第3図フローチャートに従って宣
言子の作用順番を解析する構成を採用しているため、宣
言子の作用順番の解析に要する時間を短縮し、かつ正確
に解析することができる。また、宣言子を新たに追加す
る場合に、宣言子テーブル1に宣言子、宣言子種別番号
および優先順位番号を追加するのみでよく、柔軟な解析
方法を提供できる。
ーブル1を参照しつつ第3図フローチャートに従って宣
言子の作用順番を解析する構成を採用しているため、宣
言子の作用順番の解析に要する時間を短縮し、かつ正確
に解析することができる。また、宣言子を新たに追加す
る場合に、宣言子テーブル1に宣言子、宣言子種別番号
および優先順位番号を追加するのみでよく、柔軟な解析
方法を提供できる。
第1図は本発明の原理構成図
第2図は本発明に係る宣言子の作用順番の説明図
第3図は本発明の動作説明フローチャート第4図は本発
明の詳細な説明図 を示す。 図中、1:宣言子テーブル 2:宣言子解析部
明の詳細な説明図 を示す。 図中、1:宣言子テーブル 2:宣言子解析部
Claims (1)
- 【特許請求の範囲】 宣言子の作用順番を解析する宣言子解析方法において、 宣言子に対応づけて、処理中の宣言子に付与する宣言子
種別番号および処理の終了した宣言子に付与する優先順
位番号を予め格納する宣言子テーブル(1)を設け、 宣言子の作用順番の解析指示に対応して、入力された文
の先頭から順次取り出した宣言子に該当する上記宣言子
テーブル(1)のエントリから取り出した宣言子識別番
号が、1つ前に処理の終了した宣言子の優先順位番号と
比較して小さいときに優先順位番号の低い方に検索して
大きくなった位置に挿入、あるいは大きいときに優先順
位番号の高い方に検索して等しい/小さくなった位置に
挿入することを繰り返し、宣言子の作用順番を解析する
ように構成したことを特徴とする宣言子解析方法。
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
JP27075990A JPH04147342A (ja) | 1990-10-10 | 1990-10-10 | 宣言子解析方法 |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
JP27075990A JPH04147342A (ja) | 1990-10-10 | 1990-10-10 | 宣言子解析方法 |
Publications (1)
Publication Number | Publication Date |
---|---|
JPH04147342A true JPH04147342A (ja) | 1992-05-20 |
Family
ID=17490595
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
JP27075990A Pending JPH04147342A (ja) | 1990-10-10 | 1990-10-10 | 宣言子解析方法 |
Country Status (1)
Country | Link |
---|---|
JP (1) | JPH04147342A (ja) |
-
1990
- 1990-10-10 JP JP27075990A patent/JPH04147342A/ja active Pending
Similar Documents
Publication | Publication Date | Title |
---|---|---|
JP2001522084A (ja) | 機械語記述からisaシミュレータとアセンブラを生成する方法 | |
JP3318051B2 (ja) | 翻訳処理方法 | |
JPH04147342A (ja) | 宣言子解析方法 | |
JPS6149245A (ja) | プログラム・モジユ−ル構造の自動解析装置 | |
JPH10289102A (ja) | プログラムのデータフロー解析装置 | |
JPH0561687A (ja) | コンパイラの処理方式 | |
JP2653880B2 (ja) | プログラム内容解析装置 | |
JP3311774B2 (ja) | コンパイラ装置 | |
JPH0793144A (ja) | プログラム解析装置 | |
JPH09101879A (ja) | プログラム解析装置 | |
JP3367438B2 (ja) | 条件実行処理装置 | |
JPH06214777A (ja) | プログラム開発方法及び装置 | |
JPS63174130A (ja) | 値が未設定の変数名の検出方式 | |
JPS62216050A (ja) | プログラム単位の実行cpu時間測定処理方式 | |
JPS63632A (ja) | 原始プログラムの最適化処理方式 | |
JPH05204705A (ja) | 未定義変数検出処理方法 | |
JPS6297031A (ja) | 仮数部のビツト数整合方式 | |
JPH02287737A (ja) | テスト項目自動設計方式 | |
JPH04333931A (ja) | 書式付き入出力文高速化処理方式 | |
JPH09319619A (ja) | 疑似サブルーチン生成装置 | |
JPH03167641A (ja) | プログラムソースの性能解析方式 | |
JPH05119958A (ja) | Rom圧縮方式 | |
JPH0820961B2 (ja) | 式解析処理方式 | |
JPH0695889A (ja) | プログラム修正方式 | |
JPS63187364A (ja) | 指標変数ベクトル化コンパイル方式 |