JP3141945B2 - コンパイル装置 - Google Patents
コンパイル装置Info
- Publication number
- JP3141945B2 JP3141945B2 JP02070063A JP7006390A JP3141945B2 JP 3141945 B2 JP3141945 B2 JP 3141945B2 JP 02070063 A JP02070063 A JP 02070063A JP 7006390 A JP7006390 A JP 7006390A JP 3141945 B2 JP3141945 B2 JP 3141945B2
- Authority
- JP
- Japan
- Prior art keywords
- parenthesis
- type
- intermediate code
- parsing
- read
- 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.)
- Expired - Fee Related
Links
Landscapes
- Devices For Executing Special Programs (AREA)
Description
【発明の詳細な説明】 〔概要〕 同一の括弧を複数の意味に使用するプログラミング言
語を解析するコンパイラの構文解析方式に関し、 コンパイラ作成や保守時の作業効率を向上させた構文
解析方式を提供することを目的とし、 同一の括弧を複数の意味に使用するプログラム言語を
解析しコンパイルするコンパイラにおいて、 前記解析に先立って、始め括弧を検出した時その中間
コードを出力するとともに該中間コードの位置をスタッ
ク状に積み、終わり括弧を検出した時その直後に現れた
語又は前記左括弧との間に現れた語によってその括弧の
種別を求め、該種別に対応した終わり括弧の中間コード
を出力するとともに前記位置情報をスタックから降ろす
とともにその位置の始め括弧を終わり括弧と同じ種別の
括弧に書き換えるように構成する。
語を解析するコンパイラの構文解析方式に関し、 コンパイラ作成や保守時の作業効率を向上させた構文
解析方式を提供することを目的とし、 同一の括弧を複数の意味に使用するプログラム言語を
解析しコンパイルするコンパイラにおいて、 前記解析に先立って、始め括弧を検出した時その中間
コードを出力するとともに該中間コードの位置をスタッ
ク状に積み、終わり括弧を検出した時その直後に現れた
語又は前記左括弧との間に現れた語によってその括弧の
種別を求め、該種別に対応した終わり括弧の中間コード
を出力するとともに前記位置情報をスタックから降ろす
とともにその位置の始め括弧を終わり括弧と同じ種別の
括弧に書き換えるように構成する。
本発明はコンパイラに係り、更に詳しくは同一の括弧
を複数の意味に使用するプログラミング言語を解析する
コンパイラの構文解析方式に関する。
を複数の意味に使用するプログラミング言語を解析する
コンパイラの構文解析方式に関する。
近年、プログラミング言語の多様化に伴いCOBOL等の
古い言語においても積極的に新しい概念を取り込む傾向
にある。例えば、 MOVE A TO(P)→B(P)→C ・・・ MOVE A TO(P)→D(E) ・・・ 等の命令がある。このような命令は一般の翻訳法例えば
演算子順位法、LL(1)構文解析法、LR(1)構文解析
法等を用いて行っている。
古い言語においても積極的に新しい概念を取り込む傾向
にある。例えば、 MOVE A TO(P)→B(P)→C ・・・ MOVE A TO(P)→D(E) ・・・ 等の命令がある。このような命令は一般の翻訳法例えば
演算子順位法、LL(1)構文解析法、LR(1)構文解析
法等を用いて行っている。
COBOLにおいては前述の命令ではPでポインタづけ
しており、その後にポインタづけされたBが存在する。
そしてさらにPでポインタづけしその後にポインタづけ
されたCが存在している。これらの“(",“)”はポイ
ンタを指示するカッコである。また前述の命令ではP
でポインタづけしており、その後にポインタづけされた
D(E)が存在する。この時の(E)は添子のカッコを
表している。このようにCOBOLにおいては括弧は添字、
式、部分参照、ポインタに用いられる。
しており、その後にポインタづけされたBが存在する。
そしてさらにPでポインタづけしその後にポインタづけ
されたCが存在している。これらの“(",“)”はポイ
ンタを指示するカッコである。また前述の命令ではP
でポインタづけしており、その後にポインタづけされた
D(E)が存在する。この時の(E)は添子のカッコを
表している。このようにCOBOLにおいては括弧は添字、
式、部分参照、ポインタに用いられる。
前述したCOBOLにおいて通常のプログラミング言語は
その構文のほとんどが文脈自由文法で記述することがで
き、LR(1)文法を用いれば等の構文解析ができる。
しかし一種類の括弧が複数の意味を持つようになるとLR
(1)文法では解析できなくなる。そのため従来におい
ては大部分で一般の翻訳法(演算子順位法、LL(1)の
構文解析法、LR(1)構文解析法)で記述しているにも
かかわらず、一部を効率の悪いアルゴリズムで記述する
必要があった。LL文法は左から順番に解析していく方法
である。括弧が全部同じであると、その括弧が何の括弧
か不明である。このため翻訳が出来なくなってしまう。
例えばの命令文のように、最終の(E)は添え字の括
弧であるが、この括弧を従来の方法によって解析した場
合、同じ括弧が使われているためポインタづけなのか添
え字なのかがわからなくなってしまっている。とくに古
い言語であるCOBOL等においては、括弧は“(”及
び“)”しか使用できない。それにもかかわらず括弧を
使用した方法が追加され一種類の括弧で複数の意味を表
す必要が生じている。これによりコンパイラの解析部に
とっては非常に重い負担となっている。従って、統一さ
れた解析アルゴリズムで記述することができずコンパイ
ラ作成時の作業効率の低下、保守性の低下等の問題を生
じていた。
その構文のほとんどが文脈自由文法で記述することがで
き、LR(1)文法を用いれば等の構文解析ができる。
しかし一種類の括弧が複数の意味を持つようになるとLR
(1)文法では解析できなくなる。そのため従来におい
ては大部分で一般の翻訳法(演算子順位法、LL(1)の
構文解析法、LR(1)構文解析法)で記述しているにも
かかわらず、一部を効率の悪いアルゴリズムで記述する
必要があった。LL文法は左から順番に解析していく方法
である。括弧が全部同じであると、その括弧が何の括弧
か不明である。このため翻訳が出来なくなってしまう。
例えばの命令文のように、最終の(E)は添え字の括
弧であるが、この括弧を従来の方法によって解析した場
合、同じ括弧が使われているためポインタづけなのか添
え字なのかがわからなくなってしまっている。とくに古
い言語であるCOBOL等においては、括弧は“(”及
び“)”しか使用できない。それにもかかわらず括弧を
使用した方法が追加され一種類の括弧で複数の意味を表
す必要が生じている。これによりコンパイラの解析部に
とっては非常に重い負担となっている。従って、統一さ
れた解析アルゴリズムで記述することができずコンパイ
ラ作成時の作業効率の低下、保守性の低下等の問題を生
じていた。
本発明は上記従来の欠点を解決し、コンパイラ作成や
保守時の作業効率を向上させた構文解析方式を提供する
ことを目的とする。
保守時の作業効率を向上させた構文解析方式を提供する
ことを目的とする。
本発明は同一の括弧を複数の意味に使用するプログラ
ミング言語を解析しコンパイルするコンパイラにおける
ものである。
ミング言語を解析しコンパイルするコンパイラにおける
ものである。
前記コンパイラの解析に先立って、第1のパスで始め
括弧が存在した時に、その始め括弧を中間コードとして
出力するとともに、その出力した格納位置をスタックに
一時記憶する。そして終わり括弧を検出した時、その括
弧の直後に現れた語または始め括弧との間に挟まれた語
によってその括弧の種別を求め、その種別に対応した終
わり括弧の中間コードを出力するとともに、同時に前記
始め括弧を格納した位置情報から、その始め括弧を終わ
り括弧と同じ種別の括弧の中間コードとして変換する。
そして第2のパスで構文解析を行う。
括弧が存在した時に、その始め括弧を中間コードとして
出力するとともに、その出力した格納位置をスタックに
一時記憶する。そして終わり括弧を検出した時、その括
弧の直後に現れた語または始め括弧との間に挟まれた語
によってその括弧の種別を求め、その種別に対応した終
わり括弧の中間コードを出力するとともに、同時に前記
始め括弧を格納した位置情報から、その始め括弧を終わ
り括弧と同じ種別の括弧の中間コードとして変換する。
そして第2のパスで構文解析を行う。
本発明によって同一の括弧でも複数の意味を持たせる
ことができるとともに構文解析を簡単に行うことができ
る。
ことができるとともに構文解析を簡単に行うことができ
る。
以下図面を用いて本発明を詳細に説明する。第1図は
本発明のコンパイラの構成図である。本発明の実施例に
おけるコンパイラにおいては構文解析部(I)1、構文
解析部(II)2、コード生成部3、字句解析部4よりな
る。このコンパイラでは意味解析は構文解析部で行って
いる。
本発明のコンパイラの構成図である。本発明の実施例に
おけるコンパイラにおいては構文解析部(I)1、構文
解析部(II)2、コード生成部3、字句解析部4よりな
る。このコンパイラでは意味解析は構文解析部で行って
いる。
構文解析部(I)でデータ定義等の構文・意味解析と
手続きの初期解析(中間コード化)を行い、構文解析部
(II)2で手続きの構文・意味解析を行う。尚構文解析
部(I)1と字句解析をパスP1、構文解析(II)2をパ
スP2、目的コード生成部3をパスP3と呼ぶ。各パスの間
は、中間コードを用いて前のパスの出力結果を後のパス
に伝える。
手続きの初期解析(中間コード化)を行い、構文解析部
(II)2で手続きの構文・意味解析を行う。尚構文解析
部(I)1と字句解析をパスP1、構文解析(II)2をパ
スP2、目的コード生成部3をパスP3と呼ぶ。各パスの間
は、中間コードを用いて前のパスの出力結果を後のパス
に伝える。
構文解析部(I)では始め括弧すなわち左括弧が現れ
るとその中間コードを出力するとともに、その中間コー
ドの位置をスタック上に格納する。すなわちスタック上
に積む。そして終わり括弧が現れると、その直後に現れ
た語または始め括弧との間に現れた語によってその括弧
の種別を決め、その種別に対応した右括弧の中間コード
を出力する。同時に位置情報をスタックから降ろし、そ
の位置の始め括弧を終わり括弧と同じ種別の括弧に書き
換える。その結果構文解析部(II)2は異なる意味を持
つ括弧は全て異なる記号コードとして認識することがで
きる。本来LR(1)構文解析法等では解析できない文法
でも構文解析部(II)2で解析することができる。尚、
第1図には設けていないが必要に応じて構文解析部(I
I)2と目的コード生成部3の間に最適化部を設けても
よい。
るとその中間コードを出力するとともに、その中間コー
ドの位置をスタック上に格納する。すなわちスタック上
に積む。そして終わり括弧が現れると、その直後に現れ
た語または始め括弧との間に現れた語によってその括弧
の種別を決め、その種別に対応した右括弧の中間コード
を出力する。同時に位置情報をスタックから降ろし、そ
の位置の始め括弧を終わり括弧と同じ種別の括弧に書き
換える。その結果構文解析部(II)2は異なる意味を持
つ括弧は全て異なる記号コードとして認識することがで
きる。本来LR(1)構文解析法等では解析できない文法
でも構文解析部(II)2で解析することができる。尚、
第1図には設けていないが必要に応じて構文解析部(I
I)2と目的コード生成部3の間に最適化部を設けても
よい。
第2図は本発明の実施例のプログラミング言語の記述
例を示す図である。当言語はCOBOLの拡張した定義であ
る。はポインタ修飾子の括弧、は添字の括弧、は
部分参照の括弧である。この言語は従来のLR(1)構文
解析法等では解析できない。
例を示す図である。当言語はCOBOLの拡張した定義であ
る。はポインタ修飾子の括弧、は添字の括弧、は
部分参照の括弧である。この言語は従来のLR(1)構文
解析法等では解析できない。
構文解析部(I)1はこれらの文字列のトークンを読
み込み、第4図に示すアルゴリズムを用いて第3図に示
す中間コードを生成する。
み込み、第4図に示すアルゴリズムを用いて第3図に示
す中間コードを生成する。
構文解析部(I)1は先ずの左括弧を読み込み、左
括弧の中間コードを生成し(この時点では括弧の種別は
添字としておく)、中間コードの格納アドレスをスタッ
クに積む。その後、に対応する右括弧を読み込んだと
きに、スタックからアドレス情報を降ろし、次のトーク
ンが右矢印であるので左括弧をポインタ修飾子の左括弧
に変更し、ポインタ修飾子の右括弧の中間コードを生成
する。
括弧の中間コードを生成し(この時点では括弧の種別は
添字としておく)、中間コードの格納アドレスをスタッ
クに積む。その後、に対応する右括弧を読み込んだと
きに、スタックからアドレス情報を降ろし、次のトーク
ンが右矢印であるので左括弧をポインタ修飾子の左括弧
に変更し、ポインタ修飾子の右括弧の中間コードを生成
する。
続いて、の左括弧を読み込み、左括弧の中間コード
を生成し(この時点では前述と同様に括弧の種別は添字
としておく)、中間コードの格納アドレスをスタックに
積む。さらに、順次トークンを読みの左括弧に対応す
る右括弧を読み込んだときにスタックからアドレス情報
を降ろす。そして次のトークンが右矢印ではないので、
左括弧は変更せず、添字の右括弧の中間コードを生成す
る。
を生成し(この時点では前述と同様に括弧の種別は添字
としておく)、中間コードの格納アドレスをスタックに
積む。さらに、順次トークンを読みの左括弧に対応す
る右括弧を読み込んだときにスタックからアドレス情報
を降ろす。そして次のトークンが右矢印ではないので、
左括弧は変更せず、添字の右括弧の中間コードを生成す
る。
さらにの左括弧を読み込み、左括弧の中間コードを
生成し(この時点では括弧の種別は添字としておく)、
中間コードのアドレスをスタックに積む。その後コロン
を読み込んだ時点で左括弧を部分参照の左括弧の中間コ
ードに書き換え、アドレス情報の代わりに部分参照情報
をスタックに積む。最後に、に対応する右括弧を読み
込んだときに、スタックから降ろした情報が部分参照情
報であるので、部分参照の右括弧の中間コードを生成す
る。
生成し(この時点では括弧の種別は添字としておく)、
中間コードのアドレスをスタックに積む。その後コロン
を読み込んだ時点で左括弧を部分参照の左括弧の中間コ
ードに書き換え、アドレス情報の代わりに部分参照情報
をスタックに積む。最後に、に対応する右括弧を読み
込んだときに、スタックから降ろした情報が部分参照情
報であるので、部分参照の右括弧の中間コードを生成す
る。
以上のようなアルゴリズムにより対応する括弧を目的
とする括弧のコードに変換することができる。
とする括弧のコードに変換することができる。
第4図は本発明の実施例のアルゴリズムの説明図であ
る。While no文から原始テキストの終わりend迄の繰り
返す処理を開始(beg in)する。先ず次のトークンを読
み込む。さらにcase文で、読み込んだトークンを判別す
る。左括弧“(”であるならば、左括弧の位置情報をス
タックに積み、読み込んだトークンを添字の左括弧のト
ークンに置き換える。またコロン“:"であるならば、ス
タックから位置情報を降ろし、その位置の中間コードを
部分参照の左括弧のコードに書き換え部分参照情報をス
タックに積む。また右括弧“)”であるならば、スタッ
クの最上位の情報を降ろす。そしてcase文によりスタッ
クから降ろした情報を判別する。部分参照情報であるな
らば読み込んだトークンを部分参照の右括弧のトークン
に置き換える。また位置情報であり、もし次のトークン
が右矢印であるならばその位置の中間コードをポインタ
の左括弧のコードに置き換える。そして読み込んだトー
クンをポインタの右括弧のトークンに置き換える。また
さもなければ(すなわち次のトークンが右矢印でない)
読み込んだトークンを添字の右括弧のトークンに置き換
える。そして処理を終了する。
る。While no文から原始テキストの終わりend迄の繰り
返す処理を開始(beg in)する。先ず次のトークンを読
み込む。さらにcase文で、読み込んだトークンを判別す
る。左括弧“(”であるならば、左括弧の位置情報をス
タックに積み、読み込んだトークンを添字の左括弧のト
ークンに置き換える。またコロン“:"であるならば、ス
タックから位置情報を降ろし、その位置の中間コードを
部分参照の左括弧のコードに書き換え部分参照情報をス
タックに積む。また右括弧“)”であるならば、スタッ
クの最上位の情報を降ろす。そしてcase文によりスタッ
クから降ろした情報を判別する。部分参照情報であるな
らば読み込んだトークンを部分参照の右括弧のトークン
に置き換える。また位置情報であり、もし次のトークン
が右矢印であるならばその位置の中間コードをポインタ
の左括弧のコードに置き換える。そして読み込んだトー
クンをポインタの右括弧のトークンに置き換える。また
さもなければ(すなわち次のトークンが右矢印でない)
読み込んだトークンを添字の右括弧のトークンに置き換
える。そして処理を終了する。
以上のような動作により目的の対応する括弧が、目的
の処理を指示する括弧に変換することができ、従来のシ
ステムを用いた解析を行うことにより、コンパイラとし
てのオブジェクトプログラムを得ることができる。
の処理を指示する括弧に変換することができ、従来のシ
ステムを用いた解析を行うことにより、コンパイラとし
てのオブジェクトプログラムを得ることができる。
以上本発明の実施例を用いて、詳細に説明したが、本
発明はCOBOLに限ることなく、他の方法における構文解
析にも応用することができる。
発明はCOBOLに限ることなく、他の方法における構文解
析にも応用することができる。
以上述べたように本発明によれば、同一の括弧を複数
の目的に使用しても、その終わり括弧(右括弧)の前後
した文字コードによって、それらのどの目的の処理の括
弧であるかを求めることができるとともにその括弧の目
的の括弧のコードに変換するので、コンパイラの作成が
簡単になる。また、本来LR(I)構文解析等の既存の効
率のよいアルゴリズムでは解析できない方法であって
も、第1パスで、LR(I)構文解析法による表現への変
換が行えるので、構文解析をすべて統一したアルゴリズ
ムを用いて記述できるとともに、それによって開発効率
の向上、保守時の向上をはかにことができる。
の目的に使用しても、その終わり括弧(右括弧)の前後
した文字コードによって、それらのどの目的の処理の括
弧であるかを求めることができるとともにその括弧の目
的の括弧のコードに変換するので、コンパイラの作成が
簡単になる。また、本来LR(I)構文解析等の既存の効
率のよいアルゴリズムでは解析できない方法であって
も、第1パスで、LR(I)構文解析法による表現への変
換が行えるので、構文解析をすべて統一したアルゴリズ
ムを用いて記述できるとともに、それによって開発効率
の向上、保守時の向上をはかにことができる。
第1図は本発明の実施例のコンパイラの構成図、 第2図は記述例を示す図、 第3図は中間コードを示す図、 第4図は本発明の実施例のアルゴリズムの説明図であ
る。 1……構文解析部(I)、 2……構文解析部(II). 3……目的コード生成部、 4……字句解析部.
る。 1……構文解析部(I)、 2……構文解析部(II). 3……目的コード生成部、 4……字句解析部.
フロントページの続き (56)参考文献 A.V.エイホ,J.D.ウルマン 著,土居範久訳,「コンパイラ」(昭61 −3−30),培風館,p.179〜181, 273〜274 中田育男著,「コンパイラ」(昭56− 9−10),産業図書株式会社,p.63〜 66 (58)調査した分野(Int.Cl.7,DB名) G06F 9/45
Claims (2)
- 【請求項1】始め括弧と終り括弧とよりなる一対の括弧
に対し複数の意味が与えられたプログラム言語で書かれ
たプログラムを解析するコンパイル装置において、 前記プログラムの文字列を順次読み込み、前記括弧以外
の文字を読み込んだ場合は該文字の初期解析を行った中
間コードを生成出力し、前記始め括弧を検出した場合は
該括弧の仮の種別を判別すべき種別の一種で与えた中間
コードを生成して一時記憶しておき、前記終り括弧を検
出した場合は該終り括弧の直後に読み込む文字又は前記
始め括弧との間に読み込む文字より該終り括弧の種別を
判別して該判別した種別の中間コードを生成し出力する
とともに前記始め括弧の仮の種別が前記判別した種別と
異なる場合には前記判別した種別に修正した始め括弧の
中間コードを出力する第1の構文解析手段と、 該第1の構文解析手段より出力される中間コードに基づ
いて、前記プログラム言語の構文解析を実行する第2の
構文解析手段と、 を有することを特徴とするコンパイル装置。 - 【請求項2】前記第2の構文解析手段は、LL(1)構文
解析法、あるいはLR(1)構文解析法により構文解析を
実行することを特徴とする請求項1記載のコンパイル装
置。
Priority Applications (1)
| Application Number | Priority Date | Filing Date | Title |
|---|---|---|---|
| JP02070063A JP3141945B2 (ja) | 1990-03-20 | 1990-03-20 | コンパイル装置 |
Applications Claiming Priority (1)
| Application Number | Priority Date | Filing Date | Title |
|---|---|---|---|
| JP02070063A JP3141945B2 (ja) | 1990-03-20 | 1990-03-20 | コンパイル装置 |
Publications (2)
| Publication Number | Publication Date |
|---|---|
| JPH03269733A JPH03269733A (ja) | 1991-12-02 |
| JP3141945B2 true JP3141945B2 (ja) | 2001-03-07 |
Family
ID=13420710
Family Applications (1)
| Application Number | Title | Priority Date | Filing Date |
|---|---|---|---|
| JP02070063A Expired - Fee Related JP3141945B2 (ja) | 1990-03-20 | 1990-03-20 | コンパイル装置 |
Country Status (1)
| Country | Link |
|---|---|
| JP (1) | JP3141945B2 (ja) |
Family Cites Families (1)
| Publication number | Priority date | Publication date | Assignee | Title |
|---|---|---|---|---|
| JPS61216039A (ja) * | 1985-02-13 | 1986-09-25 | Fujitsu Ltd | プログラム生成制御方式 |
-
1990
- 1990-03-20 JP JP02070063A patent/JP3141945B2/ja not_active Expired - Fee Related
Non-Patent Citations (2)
| Title |
|---|
| A.V.エイホ,J.D.ウルマン著,土居範久訳,「コンパイラ」(昭61−3−30),培風館,p.179〜181,273〜274 |
| 中田育男著,「コンパイラ」(昭56−9−10),産業図書株式会社,p.63〜66 |
Also Published As
| Publication number | Publication date |
|---|---|
| JPH03269733A (ja) | 1991-12-02 |
Similar Documents
| Publication | Publication Date | Title |
|---|---|---|
| US6434742B1 (en) | Symbol for automatically renaming symbols in files during the compiling of the files | |
| US8601453B2 (en) | COBOL to bytecode translation | |
| US9710243B2 (en) | Parser that uses a reflection technique to build a program semantic tree | |
| JPS61103247A (ja) | 翻訳プログラム作成システム | |
| EP0428560A4 (en) | Machine process for translating programs in binary machine language into another binary machine language | |
| KR102546424B1 (ko) | 학습용 데이터 생성 장치, 소스 코드 오류 분석 장치 및 방법 | |
| KR102614967B1 (ko) | 자바스크립트의 중간 언어 기반 의미론 추출 자동화 시스템 및 방법 | |
| US20060009962A1 (en) | Code conversion using parse trees | |
| Irwin et al. | A generated parser of c++ | |
| JP3141945B2 (ja) | コンパイル装置 | |
| Johnstone et al. | Evaluating GLR parsing algorithms | |
| CN118733007A (zh) | 基于Python的代码自动生成和自动检查方法 | |
| JPS5922140A (ja) | 対話型コンパイル方式 | |
| JP3003459B2 (ja) | プログラム作成支援装置 | |
| CN117520191B (zh) | 一种基于程序路径的测试完备性检查方法、设备及存储介质 | |
| US20090112568A1 (en) | Method for Generating a Simulation Program Which Can Be Executed On a Host Computer | |
| JPH0833895B2 (ja) | 機械翻訳システムにおける文生成処理方式 | |
| KR100290623B1 (ko) | 데이터베이스의 데이터 제어방법 | |
| KR20180057317A (ko) | 단계형 중간언어 변환 장치 및 방법 | |
| JP2720643B2 (ja) | プログラムジェネレータ生成装置 | |
| CN119004412A (zh) | 基于llvm框架的软件代码保护方法、设备及存储介质 | |
| JPH0695890A (ja) | コンパイラにおける名前置換方式 | |
| JP2004246924A (ja) | アプリケーションジェネレータ開発支援装置及びアプリケーションジェネレータ開発支援方法 | |
| JP2727987B2 (ja) | データ型検査装置 | |
| JPH02281337A (ja) | トランスレータジェネレータを拡張する方法 |
Legal Events
| Date | Code | Title | Description |
|---|---|---|---|
| LAPS | Cancellation because of no payment of annual fees |