JPH08194623A - 字句エラーを診断する方法および装置 - Google Patents

字句エラーを診断する方法および装置

Info

Publication number
JPH08194623A
JPH08194623A JP7259450A JP25945095A JPH08194623A JP H08194623 A JPH08194623 A JP H08194623A JP 7259450 A JP7259450 A JP 7259450A JP 25945095 A JP25945095 A JP 25945095A JP H08194623 A JPH08194623 A JP H08194623A
Authority
JP
Japan
Prior art keywords
lexeme
regular expression
states
state
type
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
Application number
JP7259450A
Other languages
English (en)
Inventor
De Vanter Michael L Van
ドゥ ヴァンター マイケル・エル・ヴァン
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.)
Sun Microsystems Inc
Original Assignee
Sun Microsystems Inc
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 Sun Microsystems Inc filed Critical Sun Microsystems Inc
Publication of JPH08194623A publication Critical patent/JPH08194623A/ja
Pending legal-status Critical Current

Links

Classifications

    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F8/00Arrangements for software engineering
    • G06F8/40Transformation of program code
    • G06F8/41Compilation
    • G06F8/42Syntactic analysis
    • G06F8/425Lexical analysis

Landscapes

  • Engineering & Computer Science (AREA)
  • General Engineering & Computer Science (AREA)
  • Theoretical Computer Science (AREA)
  • Software Systems (AREA)
  • Physics & Mathematics (AREA)
  • General Physics & Mathematics (AREA)
  • Devices For Executing Special Programs (AREA)
  • Debugging And Monitoring (AREA)

Abstract

(57)【要約】 【課題】 無効語彙素の変化に関して無効語彙素を特徴
づけ、この特徴づけをユーザが行えるようにする。 【解決手段】 エラー診断字句解析部が、字句解析ジェ
ネレータにより正規表現パターンのリストに基づいて構
成される。正規表現パターンのリストは、特定の無効語
彙素タイプならびに特定の有効語彙素タイプを定義する
パターンを含む。正規表現のリストに基づいて生成され
た字句解析部は、第1の複数の状態および第2の複数の
状態を有する。第1の複数の状態のそれぞれの状態は特
定の有効語彙素タイプに相当し、特定の有効な語彙素タ
イプを識別するラベルと関連づけられる。第2の複数の
状態のそれぞれの状態は特定の無効な語彙素タイプに相
当し、特定の無効な語彙素タイプを識別するラベルと関
連づけられる。

Description

【発明の詳細な説明】
【0001】
【発明の属する技術分野】本発明は、字句エラーを診断
する方法および装置に関し、より詳細には、目標コンピ
ュータ・プログラミング言語に対応するソース・コード
を含むファイル中の字句エラーを診断する方法および装
置に関する。
【0002】
【従来の技術】ほとんどのソフトウェアは、最初、目標
コンピュータ・プログラミング言語に対応するソース・
コードで書かれる。ソース・コードは、プログラミング
言語の「アルファベット」の記号からなるワードまたは
「語彙素」で構成される。ソース・コードは、プログラ
ム実行前または実行中にコンパイラなどのプログラミン
グ・ツールによって機械コードに変換される。ソース・
コードを正確に変換するためには、ソース・コード内の
語彙素が目標プログラミング言語の字句規則に適合しな
ければならない。ソース・コードから機械コードへの変
換処理の字句解析段階の間に、ソース・コードに含まれ
る語彙素が解析され、プログラミング言語の字句規則に
適合するかどうか判定される。走査された語彙素が字句
規則に適合する場合は有効な語彙素とみなされ、適合す
る特定の規則によって特徴づけられる。そうでない場合
は、無効な語彙素とみなされる。
【0003】字句解析段階は通常、字句解析部によって
行われる。字句解析部は、ソース・コードを機械コード
に変換するために使用される自動プログラムジェネレー
タの一部とすることもできる。字句解析ジェネレータが
ソース・コードを解析するためには、字句解析部は、ソ
ース・コードが書かれた目標言語固有の字句規則を知っ
ていなければならい。
【0004】自動プログラムジェネレータの開発者を支
援するために、字句解析ジェネレータが開発された。字
句解析ジェネレータは、字句解析部を生成するプログラ
ミング・ツールである。字句解析ジェネレータを使って
特定の目標言語の字句解析部を生成するには、字句解析
ジェネレータはまず目標言語の字句規則を知らなければ
ならない。この認識は、たとえば、字句解析ジェネレー
タに、目標言語の字句規則を正規表現パターンによって
表すファイルを読み込ませることにより実現することが
できる。目標言語の字句規則を知ると、字句解析ジェネ
レータは目標言語で書かれたソース・コードを解析する
字句解析部を生成する。そのような字句解析ジェネレー
タの1つは、”lex”として知られ、M.E.レスク
(M.E.Lesk)およびE.シュミット(E.Sc
hmidt)による論文”Lex−−A Lexica
l Analyzer Generator”、Bel
lLaboratories、Murray Hil
l、米国ニュージャージー州、1975年、ならびにジ
ョン.R.レビン(John.R.Levine)、ト
ニー・メイソン(Tony Mason)、およびドグ
・ブラウン(Doug Brown)による論文”le
x and Yack”、O’Reilly&Asso
ciates,Inc.、Sebastapol、C
A、1992年、第2版に記載されている。
【0005】通常のプログラミング言語は1つまたは複
数の終了記号を有する。終了記号は語彙素の終りを示す
記号である。終了記号は、1つまたは複数の文字を含む
ことがある。終了記号に使える記号は、解析の現在の状
態によって変化することがある。たとえば、記号”+”
は、初期状態では終了記号ではないが、識別子を処理す
るときは終了記号となる。したがって、本明細書で使用
される用語「終了記号」は、字句解析部の現在の処理状
態において、語彙素の終りを示す記号または記号の文字
列を意味する。
【0006】ソース・コードの解析を始めるために、字
句解析部は初期状態をとる。字句解析部は、ソース・コ
ード・ファイルから最初の記号を読み取り、その記号に
応じて初期状態を新しい状態に変化させる。字句解析部
は、終了記号を検出するまで、ソース・コードから記号
を繰り返し読み取ってその記号に応じて状態を変化させ
る。終了記号を検出すると、字句解析部は終了信号を獲
得したときの字句解析部の状態によって、読み取ったば
かりの一連の記号を特徴づける。
【0007】図1に、簡略化した字句解析部の例を示
す。図1の字句解析部30は、整数および識別子の2種
類の有効な語彙素を認識するように構成されている。た
とえば、整数は、1〜9の任意の数字とそれに続く0〜
9の任意数の数字からなる。識別子は、a〜zの任意の
アルファベットとそれに続くa〜zまたは0〜9の任意
数の英数字からなる。
【0008】字句解析部30は4つの状態32、34、
36および38を有する。状態32は初期状態、状態3
4は有効識別子状態(VIDS)、状態36は有効整数
状態(VIS)、そして状態38は無効語彙素状態(I
LS)である。ソース・コード・ファイル40から何か
記号を読み込む前は初期状態32が現在の状態である。
ソース・コード40から読み込まれた最初の記号が1〜
9の数字の場合は、状態36が現在の状態になる。この
状態変化の規則は矢印44によって記号的に表される。
ソース・コード40から読み込まれた最初の記号がa〜
zのアルファベット文字の場合は、状態34が現在の状
態になる。この状態変化の規則は矢印46によって表さ
れる。最初の記号が1〜9またはa〜zのアルファベッ
ト文字のいずれでもない場合は、状態38が現在の状態
になる。この状態変化の規則は矢印47によって表され
る。
【0009】最初の記号がa〜zのアルファベット文字
であったと仮定すると、状態34は次の入力記号がa〜
zまたは0〜9の英数字である限りは現在の状態のまま
である。この規則は矢印48によって象徴的に示され
る。終了記号を除くその他の記号を受け取った場合は、
状態38は現在の状態になる。
【0010】同様に、最初の記号が1〜9の数字であっ
た場合は、状態36は次の入力記号が0〜9の数字であ
るならば現在の状態のままである。この規則は矢印50
によって記号的に示される。終了記号以外の他の記号を
受け取った場合は、状態38が現在の状態になる。状態
38が現在の状態になった場合は、矢印50で示したよ
うに、ソース・コード40から終了記号が読み込まれる
まで現在の状態のままである。
【0011】ソース・コード40から終了記号を読み込
むと、字句解析部30は、処理したばかりの一連の記号
によって表される語彙素のタイプを特徴づける信号を生
成する。たとえば、終了信号を検出したときの字句解析
部の現在の状態が状態34の場合、字句解析部30は、
処理したばかりの一連の記号が有効な識別子に相当する
ことを示す信号を生成する。同様に、終了信号を検出し
たときの字句解析部30の現在の状態が状態36の場合
は、字句解析部30は、処理したばかりの一連の記号が
有効な整数に相当することを示す信号を生成する。終了
信号を検出したときの字句解析部30の現在の状態が状
態38の場合は、字句解析部30は、処理したばかりの
一連の記号が無効な語彙素に相当することを示す信号を
生成する。
【0012】適切な語彙素識別記号を生成するために、
字句解析部30のそれぞれの状態は、語彙素タイプを識
別するラベルと関連づけられる。この例では、状態34
は識別子の語彙素タイプを識別するラベル52と関連づ
けられ、状態36は整数の語彙素タイプを識別するラベ
ル54と関連づけられ、状態38は無効の語彙素タイプ
を識別するラベル56と関連づけられる。この状態とラ
ベルの関連付けは、字句解析ジェネレータによる字句解
析部30の作成中に確立される。
【0013】字句解析部30は、ある型のエラー検出字
句解析部を再現する。この型の字句解析部は、1つの無
効な語彙素状態と、一連の文字がどの有効語彙素タイプ
にも適合しないときに字句解析部に無効語彙素状態とさ
せる規則とを有することにより字句エラーを検出する。
字句解析部30のような字句解析部は、字句解析ジェネ
レータによって、言語におけるすべての有効語彙素と一
致するパターンを含む1組の正規表現パターン(「有効
正規表現パターン」)、および有効語彙素ではないすべ
ての語彙素と一致する省略時正規表現パターン(「無効
正規表現パターン」)に基づいて作成することができ
る。そのような正規表現リストの例は、付録Iに含まれ
る。
【0014】そのようなリストに応じて、字句解析ジェ
ネレータは、それぞれの有効正規表現パターンに対応す
る1つまたは複数の状態を有する字句解析部を作成す
る。それぞれの状態は、状態によって表される特定タイ
プの有効語彙素を識別するラベルが付けられる。字句解
析部はまた、無効正規表現パターンに応じて作成された
1つの状態(「無効語彙素状態」)も含む。
【0015】もう1つの手法によれば、字句解析部は、
字句解析ジェネレータを有効正規表現パターンだけで調
整することによって作成することもできる。その結果得
られる字句解析部のすべての状態は、有効語彙素タイプ
を表すラベルと関連づけられる。その結果、無効語彙素
は1つまたは複数の有効語彙素に類別される。そのよう
な字句解析部によって無効語彙素に応じて検出される一
連の語彙素タイプは一般に、目標プログラミング言語の
構文規則と適合しない。したがって、次のソース・コー
ドから機械コードへの変換処理の解析段階の間に、字句
エラーのために構文エラーが発生する可能性がある。
【0016】これらの手法のいずれかによる字句解析を
実行することにより、字句エラ−検出が実現される。し
かし、字句エラー診断に関するフィードバックは与えな
い。すなわち、前述のような字句解析部は、語彙素が何
か間違っていることを示すことはできるが、具体的に語
彙素の何が間違っているかに関する手掛かりは何も提供
しない。無効語彙素に関する有用な情報は保存されず、
検出した字句エラーの診断の際にユーザを支援すること
はできない。
【0017】
【発明が解決しようとする課題】上記に基づき、字句エ
ラーを診断する際に無効語彙素を類別してユーザを支援
する字句解析部を提供することが明らかに必要とされ
る。さらに、無効語彙素の変化に関して無効語彙素を特
徴づけ、この特徴づけをユーザが行えるようにすること
が必要とされる。
【0018】
【課題を解決するための手段】本発明の一態様によれば
記号のストリームにおける字句エラーを診断する方法が
提供される。記号のストリームは所与の言語のアルファ
ベットの記号を含む。所与の言語は、コンピュータ・プ
ログラミング言語であることが好ましい。
【0019】本発明の一実施形態によれば、1組の状態
を有する字句解析部が構成される。1組の状態は、第1
の複数の状態と第2の複数の状態を含む。1組の状態は
また初期状態も含む。
【0020】1組の状態と1組の語彙素タイプとの間の
相関関係を確立する。1組の語彙素タイプは、第1の複
数の語彙素タイプと第2の複数の語彙素タイプを含む。
第1の複数の語彙素タイプのそれぞれの語彙素タイプ
は、所与の言語における有効な語彙素タイプを表す。第
2の複数の語彙素タイプのそれぞれの語彙素タイプは、
所与の言語における無効な語彙素タイプを表す。相関関
係により、第1の複数の状態の各状態が第1の複数の語
彙素タイプのうちの対応する語彙素タイプと関連づけら
れる。相関関係により、第2の複数の状態の各状態が第
2の複数の語彙素タイプのうちの対応する語彙素タイプ
と関連づけられる。
【0021】記号のストリームの処理を始めるために、
初期状態が現在の状態として確立され、記号のストリー
ムからの記号が読み込まれる。記号が終了記号でない場
合は、その記号に基づいて次の状態が決定され、次の状
態が現在の状態として確立される。記号を読み込んで次
の状態に移る段階は、記号が終了記号になるまで繰り返
される。記号が終了記号のときは、現在の状態と関連し
た語彙素タイプを示す信号が生成される。
【0022】本発明のもう1つの態様によれば、エラー
診断字句解析部を構成する方法が提供される。この方法
によれば、字句解析ジェネレータが正規表現パターンの
リストを読み込む。正規表現パターンのリストは、第1
の複数の正規表現パターンと第2の複数の正規表現パタ
ーンを含む。第1の複数の正規表現パターンにおける各
正規表現パターンは、所与の言語における有効語彙素タ
イプを定義する。第2の複数の正規表現パターンにおけ
る各正規表現パターンは、所与の言語における無効な語
彙素タイプを定義する。
【0023】字句解析ジェネレータは、正規表現パター
ンのリストに応じて字句解析部を構成する。字句解析部
は、第1の複数の状態と第2の複数の状態とを含む1組
の状態を有する。その1組の状態の各状態は、第1の複
数の状態の各状態を第1の複数の正規表現パターンの正
規表現パターンと関連づけ、第2の複数の状態の各状態
を第2の複数の正規表現パターンの正規表現パターンと
関連づけることによって、正規表現パターンのリストの
正規表現パターンと関連づけられる。
【0024】1組の状態と1組の語彙素タイプとの間の
相関関係を確立する。1組の語彙素タイプは、第1の複
数の語彙素タイプと第2の複数の語彙素タイプを含む。
第1の複数の語彙素タイプの各語彙素タイプは、所与の
言語における有効な語彙素タイプを表す。第2の複数の
語彙素タイプの各語彙素タイプは、所与の言語における
無効な語彙素タイプを表す。相関関係により、第1の複
数の状態の各状態が第1の複数の語彙素タイプの対応す
る語彙素タイプと関連づけられる。相関関係により、第
2の複数の状態の各状態が第2の複数の語彙素タイプの
対応する語彙素タイプと関連づけられる。
【0025】相関関係は、第1の複数の状態の各状態
と、第1の複数の状態の各状態に関連した正規表現パタ
ーンによって表される第1の複数の語彙素タイプの有効
語彙素タイプとの間で相関関係を確立し、第2の複数の
状態の各状態と、第2の複数の状態の各状態に関連した
正規表現パターンによって表される第2の複数の語彙素
タイプの無効語彙素タイプとの間で相関を確立すること
によって、1組の状態と1組の語彙素タイプとの間に確
立されることが好ましい。
【0026】正規表現パターンのリストに関するパター
ンは、特定の有効語彙素タイプの始まりを示す第1の正
規表現パターンを決定し、その第1の正規表現パターン
を正規表現パターンのリストに書き込むことによって構
成することができる。特定の有効語彙素タイプの有効な
終りを示す第2の正規表現パターンが決定される。第1
の正規表現パターンとそれに続く第2の正規表現パター
ンを表す第3の正規表現パターンが決定される。第3の
正規表現パターンが正規表現パターンのリストに書き込
まれる。
【0027】特定の有効語彙素タイプの無効な終りを示
す第4の正規表現パターンが決定される。次に、第1の
正規表現パターンとそれに続く第4の正規表現パターン
を表す第5の正規表現パターンが決定される。第5の正
規表現パターンは正規表現パターンのリストに書き込ま
れる。
【0028】本発明のさらにもう1つの態様によれば、
記号のストリームにおける字句エラーを診断する字句解
析部が提供される。記号のストリームは所与の言語のア
ルファベットの記号を含む。字句解析部は1組の状態を
有し、現在の状態指示機構、記号入力部、記号比較部、
状態変更機構、および語彙素タイプ信号ジェネレータを
含む。
【0029】1組の状態は、第1の複数の状態および第
2の複数の状態を含む。1組の状態は初期状態を含む。
1組の状態の各状態は、1組の語彙素タイプのうちのあ
る語彙素タイプと関連づけられる。1組の語彙素タイプ
は、第1の複数の語彙素タイプおよび第2の複数の語彙
素タイプを含む。第1の複数の語彙素タイプの各語彙素
タイプは、所与の言語における有効な語彙素タイプであ
る。第2の複数の語彙素タイプの各語彙素タイプは、所
与の言語における無効な語彙素タイプである。
【0030】第1の複数の状態の各状態は、第1の複数
の語彙素タイプのうちの対応する語彙素タイプと関連づ
けられる。第2の複数の状態の各状態は、第2の複数の
語彙素タイプのうちの対応する語彙素タイプと関連づけ
られる。
【0031】最初に、現在の状態指示機構が初期状態を
現在の状態として確立する。記号入力部が、記号のスト
リームから記号を繰り返し読み込む。記号比較部が、記
号入力部によって記号のストリームから読み込まれた記
号が終了記号かどうか判定する。記号が終了記号ではな
いときは、状態変更機構が、現在の状態から1組の状態
のうちの次の状態に移す。次に、現在の状態指示機構が
次の状態を現在の状態として確立する。記号が終了記号
のときは、語彙素タイプ信号ジェネレータが、現在の状
態と関連した語彙素タイプを示す信号を生成する。一連
の記号が無効語彙素に相当する場合は、現在の状態は特
定の無効語彙素タイプに対応し、生成された信号は有効
語彙素タイプを示す。一連の記号が有効語彙素に相当す
る場合は、現在の状態は特定の無効語彙素タイプに対応
し、生成された信号は無効語彙素タイプを示す。その結
果として、信号により、有効と無効両方の字句が類別さ
れる。
【0032】
【発明の実施の形態】記号のストリームにおける字句エ
ラーを診断する方法および装置を開示する。記号のスト
リームは、たとえばソース・コード・ファイルからのも
のである。以下の記述では、説明の目的で、本発明を完
全に理解させるために、ソフトウェア・ツール、プラッ
トフォーム、オペレーティング・システム、プログラミ
ング言語など多数の特定の詳細を説明する。しかし、本
発明はこれらの特定の詳細の範囲外でも実施することが
できる。その他の例では、本発明が不必要にわかりづら
くなるのを避けるために、周知の構造および素子をブロ
ック図形式で示す。
【0033】図2を参照すると、本発明の好ましい実施
の形態を実施できるコンピュータ・システム100を示
す。コンピュータ・システム100は、情報を通信する
ためのバスまたは他の通信手段101、およびバス10
1と結合され情報を処理するためのプロセッサ102を
含む。コンピュータ・システム100はさらに、バス1
01に結合され、情報およびプロセッサ102によって
実行される命令を記憶するためのランダム・アクセス・
メモリ(RAM)または他の動的記憶装置104(メイ
ン・メモリと呼ぶ)を含む。メイン・メモリ104はま
た、プロセッサ102による命令の実行中に、一時変数
または他の中間情報を記憶するために使用することもで
きる。
【0034】さらに、コンピュータ・システム100に
は、磁気ディスクや光ディスクなどのデータ記憶装置1
07およびそれと類似のディスク・ドライブを接続する
こともできる。コンピュータ・システム100はまた、
陰極線管(CRT)などの、コンピュータのユーザに情
報を表示するための表示装置121にバス101を介し
て接続することもできる。プロセッサ102に情報およ
びコマンド選択を通信するために、通常、英数字などの
キーを有する英数字入力装置122がバス101に接続
される。
【0035】本発明は、記号のストリームの字句エラー
を診断するコンピュータ・システム100の使用法に関
する。コンピュータ・システム100は、記号のストリ
ームを処理する字句解析プログラムを実行することによ
って記号のストリームにおける字句エラーを検出する。
字句解析処理に関係する様々な処理機構は、次に、図3
および4を参照してより詳細に説明する。
【0036】図3を参照すると、記号のストリームにお
ける字句エラーを診断する機構200をブロック図形式
で示す。この説明では、記号のストリームはソース・コ
ード・ファイル208から来ると想定する。ただし、記
号のストリームは代わりに他のソースからも来ることも
ある。機構200は、通常、字句解析ジェネレータ20
2および字句解析部206を含む。本発明の一実施形態
によれば、字句解析ジェネレータ202は、正規表現パ
ターン・リスト204に基づいて字句解析部206を構
成する。
【0037】正規表現パターン・リスト204は、メモ
リ104または記憶装置107に常駐することができ
る。正規表現パターン・リスト204は一般に、一連の
正規表現パターンに相当する。正規表現パターン・リス
ト204内のそれぞれの正規表現パターンは、特定の語
彙素タイプを定義し、かつその特定の語彙素タイプに対
応する。従来技術において字句解析部を構成するために
利用された正規表現パターン・リストと違って、正規表
現パターン・リスト204は、無効語彙素タイプを定義
する複数の正規表現パターンと、有効語彙素タイプを定
義する複数の正規表現パターンとを含む。この違いのゆ
えに、後に述べるように、字句エラーを検出するだけで
なく診断することもできる有限状態機械を構成すること
ができる。
【0038】本発明の実施の形態により構成された正規
表現パターン・リストの例は、表1、2、3(3つの表
で1つのリストである)に含まれる。この表の代表的な
正規表現パターン・リストを参照すると、リストは2つ
の部分を含む。第1の部分は、様々な正規表現パターン
を定義する定義部分である。たとえば、正規表現パター
ン”octdig”は[0−7]と定義され、0〜7の
範囲にある任意の数字を意味する。正規表現パターンの
定義は、他の正規表現パターンの識別子を含むこともあ
る。たとえば、正規表現パターン”esc”は、あらか
じめ定義された3つの正規表現パターン”chres
c” 、”hexesc”および ”octesc”に
関連して定義される。表の代表的な正規表現パターン・
リストの第2の部分は、字句解析ジェネレータ202が
字句解析部206などの字句解析部を構成するために読
み込む正規表現パターンのリストを含む。字句解析部生
成の過程は後でより詳しく説明する。
【0039】
【表1】
【表2】
【表3】
【0040】正規表現パターンの代表的なリストは、有
効語彙素タイプおよび無効語彙素タイプに関する正規表
現パターンを含む。有効語彙素タイプに対応する正規表
現パターンは、たとえば”identifier”、”
char”、”float”、”int”、および”s
tring”を含む。無効語彙素タイプに対応する正規
表現パターンは、”inc_char”、”right
_inc_char”、”bad_char”、”in
complete_float”、”bad_floa
t”、”incomplete_int”、”bad_
int”、”bad_hexint”、”inc_st
ring”、”right_inc_string”、
および”bad_string”を含む。無効語彙素タ
イプおよび有効語彙素タイプの正規表現パターンは両方
とも表の定義部分で定義される。
【0041】正規表現パターンのリストは、定義部分で
定義された正規表現パターンを識別し、ルーチンおよび
戻りラベルを正規表現パターンと関連づける。ルーチ
ン”set_token”は、正規表現パターンと一致
する語彙素が現れたときに字句解析部によって実行され
る操作を指定する。戻りラベルは、正規表現パターンに
よって定義された語彙素タイプを識別するラベルであ
る。たとえば、正規表現パターン”identifie
r”は、戻りラベルIDENTIFIERと関連する。
戻りラベルIDENTIFIERは、正規表現パター
ン”identifier”によって定義された語彙素
タイプを識別する。ラベルを正規表現パターンと関連づ
ける目的は、後でより詳しく説明する。
【0042】表の正規表現パターン・リストは単なる例
にすぎないことを理解されたい。このリストの形は、リ
ストによって使用される字句解析ジェネレータによって
変化する。リストの特定の正規表現パターンおよびラベ
ルは、リストに対応する目標言語の字句規則によって変
化する。
【0043】字句解析ジェネレータ202は、正規表現
パターン・リスト204に応じて字句解析部206を作
成するために構成される字句解析ジェネレータに相当す
る。字句解析ジェネレータ202は、たとえば、上記の
字句解析ジェネレータ”lex”のこともある。表に含
まれる正規表現パターン・リストは、字句解析ジェネレ
ータ”lex”の書式で作成される。”lex”書式の
正規表現で使用される記号は、表4に記載した意味を有
する。
【0044】 表4 記号 説明 .(ピリオド) 改行文字以外の任意の一文字と一致する * ゼロ個以上の前の表現と一致する [] ブラケット内の任意の一文字と一致する ^ 最初の文字として行の始めと一致する {} 前のパターンが一致するように許可された回数を示す。 (たとえば、x{5,10}は文字”x”の5回から10回の オカレンスと一致する。 \ エスケープ・シーケンス(たとえば、”n\”は改行文字)を 識別し、メタ文字(たとえば、”\*”はリテラル・アスタリ スク)からリテラル文字を識別するために使用される + 前の正規表現の1回または複数回のオカレンスと一致する ? 前の正規表現のゼロ回以上のオカレンスと一致する | 前の正規表現または次の正規表現と一致する 0 一連の正規表現をまとめて新しい正規表現にする
【0045】図4は字句解析部206をより詳細に示
す。字句解析部206は、通常、複数の状態207、記
号入力部250、記号比較部252、状態変更機構25
4、現在の状態指示機構256、および語彙素タイプ信
号発生器258を含む。複数の状態207は、状態21
2、214、216、218、220、222、22
4、226、および228を含む。複数の状態は、状態
変換規則を表す矢印によって連携される。
【0046】状態212は、字句解析部206の初期状
態である。状態218、220、および222は、”o
kay states”に相当する。okay状態は、
字句解析部206によって最も新しく処理された一連の
記号が特定の有効語彙素タイプに相当するときに現在の
状態である任意の状態である。たとえば、状態222は
有効な整数に対応させている。この状態222は、最初
の記号が1〜9のうちのある数字に相当する場合に現在
の状態を維持する。状態222は、次の記号が0〜9の
数字であるならば現在の状態を維持する。字句解析部が
有効な整数を構成する記号を処理した後で状態222が
現在の状態になるため、状態222はokay状態であ
る。
【0047】状態214、216、224、226およ
び228は、無効状態に相当する。無効状態は、字句解
析部206によって最も新しく処理された一連の記号が
どれも有効語彙素タイプに相当しないときには、現在の
状態の任意の状態である。したがって、okay状態で
はない状態はすべて無効状態である。
【0048】状態214、216、218、220、2
22、224、226、および228はそれぞれ、ラベ
ル232、236、238、240、242、244、
246、および248と関連づけられる。ラベル23
2、236、238、240、242、244、24
6、および248はそれぞれ語彙素タイプを表す。ラベ
ル238、240、および242はokay状態と関連
し、有効語彙素タイプを表す。ラベル232、236、
244、246、および248は無効状態と関連し、無
効語彙素タイプを表す。無効語彙素タイプは、有効語彙
素タイプの無効な変形物であることが好ましい。
【0049】字句解析部206がソース・コード・ファ
イル208からの一連の記号を処理している間の所与の
時点で、字句解析部206の状態が現在の状態になる。
現在の状態と関連づけられたラベルにより、その時点ま
で処理された一連の記号に対応する語彙素タイプが識別
される。たとえば、有効な整数を構成する一連の記号を
字句解析部206が処理した後で状態222が現在の状
態である場合は、ラベル242により「有効な整数」の
語彙素タイプが識別される。同様に、無効な整数を構成
する一連の記号を字句解析部206が処理した後で状態
216が現在の状態である場合は、ラベル236により
「無効な整数」の語彙素タイプが識別される。
【0050】字句解析ジェネレータ202は、正規表現
パターン・リスト204のラベルとの正規表現パターン
の相関関係に基づいてラベルと状態との間の相関関係を
確立する。たとえば、表1、2、3の代表的な正規表現
パターン・リストにおいて、ラベル”CHARACTE
R LITERAL”は、’({simplecha
r}|’|{esc})’と定義される正規表現パター
ン{char}と関連づけられる。字句解析部206の
生成中、字句解析ジェネレータ202は、正規表現パタ
ーン{char}に対応する1つまたは複数の状態を作
成し、初期状態から新しい状態に至る経路を確立する。
その経路は、字句解析部206によって読み込まれた一
連の記号が正規表現パターン{char}に適合する場
合だけ新しい状態のうちの1つが現在の状態になるよう
に構成される。次に、ラベル”CHARACTER L
ITERAL”が新しい状態と関連づけられる。
【0051】字句解析ジェネレータ202が上記のよう
に正規表現パターン・リスト204の正規表現パターン
をすべて処理すると、その結果、字句解析部206がソ
ース・コード・ファイル208を解析するために構成さ
れる。次に図5を参照して、字句解析方法を説明する。
【0052】図5は、ソース・コード・ファイル208
などのソース・コード・ファイルにおける字句エラーを
診断する方法を示すフローチャートである。段階302
で、字句解析部206が、目標プログラミング言語の字
句規則に応じて生成される。字句解析部206は、上記
のように、字句解析ジェネレータ202によって、有効
語彙素タイプと無効語彙素タイプ両方に関する正規表現
パターンを含む正規表現パターン・リスト204に基づ
いて生成されることが好ましい。段階304で、字句解
析部の状態とその状態に対応する語彙素タイプとの間で
相関関係が確立される。この相関関係は、字句解析部2
06の生成中に、正規表現パターン・リスト204に示
された正規表現パターンと語彙素タイプ・ラベルとの関
連に基づいて確立されることが好ましい。
【0053】段階306で、字句解析部の初期状態21
2が現在の状態として確立される。現在の状態は、現在
の状態指示機構256によって示される。現在の状態指
示機構256は、たとえば、現在の状態である状態20
7の状態を指示するポインタでもよい。したがって、段
階306は、現在の状態指示機構256に初期状態21
2を指示されることによって実施することもできる。
【0054】段階308で、記号入力部250がソース
・コード・ファイル208から記号を読み込む。ソース
・コード・ファイル208から読み込まれた記号は、今
後、入力記号と呼ぶ。記号入力部250は、ソース・コ
ード・ファイル208を連続的に読み込むことが好まし
い。したがって、最初の入力記号はソース・コード・フ
ァイル208にある最初の記号である。
【0055】段階310で、記号比較部252が入力記
号が終了記号かどうか判定する。入力記号が終了記号の
場合は、制御は段階312に移る。そうでない場合は、
制御は段階318に移る。説明のため、最初の入力記号
が終了記号ではなかったと想定する。したがって、制御
は段階318に移る。
【0056】段階318で状態変更機構254が入力記
号に基づいて次の状態を決定する。次の状態は、現在の
状態から通じる経路を検査することによって決定され
る。それぞれの経路は一組の記号と関連づけられる。各
経路は、入力記号がその関連する記号の組に属するとき
に移る次の状態を指定することによって、変換規則を実
施する。次の状態が決定されると、段階320で、この
次の状態が現在の状態として確立される。これは、たと
えば、次の状態であるべく決定された状態を現在の状態
指示機構256に指示させることによって実施すること
ができる。
【0057】新しい現在の状態を確立した後で、制御は
段階308に戻り、そこで第2の入力記号がソース・コ
ード・ファイルから読み込まれる。段階310で、新し
い入力記号が終了記号かどうか判定される。新しい入力
記号が終了記号でない場合は、再び段階318および3
20を実行することによって新しい現在の状態が確立さ
れる。入力記号を読み込み、その入力記号に応じて状態
を変化させるこの過程は、入力記号が終了記号になるま
で繰り返される。入力記号が終了記号のとき、制御は段
階312に移る。
【0058】段階312で、語彙素タイプ信号ジェネレ
ータ258が、現在の状態と関連づけられた語彙素タイ
プを示す信号を生成する。現在の状態の語彙素タイプ
は、現在の状態と関連した語彙素タイプ・ラベルによっ
て識別される。信号で識別された語彙素タイプは、字句
解析部206によって処理される一連の入力記号を特徴
づけるのに役立つ。語彙素タイプ信号は、たとえば、目
標言語の構文規則により語彙素タイプの順序および配列
を解析できる構文解析部210に送られることもある。
【0059】現在の状態の語彙素ラベルが無効語彙素タ
イプを示す場合は、字句解析部206がエラー・メッセ
ージをユーザに送るようにしてもよい。エラー信号は、
字句エラーが検出されたことを示すだけでなく、検出し
た特定タイプの無効語彙素を示すことによってエラーを
診断することが好ましい。
【0060】段階314で、記号入力部250が、ソー
ス・コード・ファイル208内のすべての記号が処理さ
れたかどうか判定する。ソース・コード・ファイル20
8がまだ処理されていない記号を含む場合は、制御は段
階306に戻る。上記段階は、ソース・コード・ファイ
ル208内のすべての記号が処理されるまで繰り返され
る。その時点で、制御は段階316に移り、ソース・コ
ード・ファイル208の字句解析が完了する。
【0061】字句アナラザ206は、単一の総称無効状
態(字句解析部30として)または全くの非無効状態で
はなく特定の無効語彙素タイプに対応する状態を含むの
で、字句エラーを診断することができる。字句解析部2
06は、総称無効状態または省略時無効状態を少しも含
まないことが好ましい。総称無効状態なしで字句解析部
を生成するためには、そのタイプ固有の状態(有効語彙
素タイプ状態と無効語彙素タイプ状態の組合せ)が目標
プログラミング言語によって支援される記号の考えられ
るすべての組合せをカバーしなければならない。
【0062】一実施の形態によれば、字句解析部206
の状態は、上記のような正規表現パターン・リスト20
4内の正規表現パターンに対応して生成される。したが
って、字句解析部206の状態が、記号の考えられるす
べての組合せをカバーするためには、正規表現パターン
・リスト204の少なくとも1つの正規表現パターンが
記号の考えられる各組合せをカバーしなければならな
い。
【0063】好ましい実施の形態では、正規表現パター
ン・リスト204は、”hexint”などの複雑な語
彙素を連続するパターンで表すことによって構成され
る。具体的に言うと、考えられるすべての記号の組合せ
と一致する最初の1組のパターンを開発する。最初1組
のパターンは、それぞれの複雑な有効語彙素タイプに対
して有効な始まりを定義する少なくとも1つの接頭部パ
ターンを含む。たとえば、表1、2、3の代表的な正規
表現パターン・リストにおいて、設計された接頭部パタ
ーン”hexint_prefix”は、16進のリテ
ラル語彙素タイプに対して有効な始まりを定義する。”
float”などのさらに複雑な有効語彙素タイプは、
代わりの様々な有効な始まりを有することがある。これ
らの状況下では、複数の接頭部パターンを必要とするこ
とがある。
【0064】接頭部パターンが確立された後で、結合し
たときに有効な16進リテラル語彙素タイプを定義する
正規表現パターンが作成されるパターンが開発される。
たとえば、有効な16進リテラル語彙素を定義する正規
表現パターン”hexint”は、パターン”hexi
nt_prefix”とそれに続くパターン”{hex
dig}+”で構成される。
【0065】有効語彙素の正規表現パターンがこのよう
に形成された後、語彙素タイプの無効変形物のための正
規表現パターンが構成されることがある。たとえば、接
頭語パターン”hexint_prefix”を、不完
全な16進リテラルを指定する実表現として使用するこ
とができる。たとえば、”incomplete_in
t”は”{hexint_prefix}”と定義され
る。さらに、”hexint_prefix”で始まる
が”{hexdig}+”とは違うパターンで終わる正
規表現パターンが、無効な16進リテラル語彙素を指定
するために使用されることがある。たとえば、”bad
_hexint”は、”hexint_prefix”
とそれに続く
【数1】 と定義される。
【0066】図6に、間違って完成された有効で不完全
なバージョンの所与の複雑な語彙素タイプのための正規
表現パターンを設計する生成段階を示す。段階410
で、目標言語の有効語彙素タイプが選択される。説明の
ため、段階410で、語彙素タイプ”hexadeci
mal literal”が選択されたと想定する。図
4に示した段階を説明するため、表1、2、3の代表的
な正規表現パターン・リストにおける16進リテラル語
彙素に関係する正規表現パターンを使用する。
【0067】段階412で、選択された有効語彙素タイ
プの始まりを表す最初の正規表現パターンが決定され
る。この例では、段階412で、正規表現”hexin
t_prefix”が決定される。前述のように、いく
つかの複雑な語彙素タイプは、複数の有効な始まりを有
する可能性がある。そのような語彙素タイプでは、考え
られるそれぞれの有効な始まりごとに別々の正規表現が
決定される。
【0068】段階414で、最初の正規表現パターン
が、字句解析ジェネレータによって処理される表現リス
トに書き込まれる。この例では、{hexint_pr
efix}および定義された正規表現パターン”inc
omplete_int”が、正規表現パターンのリス
トに書き込まれる。
【0069】段階416で、最初の正規表現パターン
が、選択された語彙素タイプの不完全語彙素を示すラベ
ルと関連づけられる。この例では、これは、戻り値IN
COMPLETE INTEGER LITERAL
を、正規表現パターンのリストにおける正規表現パター
ン”incomplete_int”と関連づけること
によって実施される。
【0070】段階418で、選択した有効語彙素タイプ
の有効な終りを表す第2の正規表現パターンが決定され
る。この例では、正規表現パターン”{hexdig}
+”によって、16進リテラルに対する有効な終りが定
義される。段階420で、最初の正規表現パターンとそ
れに続く第2の正規表現パターンを表す第3の正規表現
パターンが構成される。この例では、正規表現パター
ン”hexint”は、”hexint_prefi
x”と”{hexdig}+”を組み合わせることによ
って構成される。
【0071】段階430で、第3の正規表現パターンが
正規表現パターン・リストに書き込まれる。この例で
は、正規表現パターン”hexint”、”octin
t”、および”decint”がまず代替物内で結合さ
れて複合正規表現パターン”int”が構成される。正
規表現パターン”hexint”、”octint”、
および”decint”はそれぞれ、複合正規表現パタ
ーン”int”を正規表現パターン・リストに書き込む
ことによって、正規表現パターン・リストに有効に書き
込まれる。
【0072】段階432で、第3の正規表現パターン・
リストが、選択した有効語彙素タイプの完全な語彙素を
示すラベルと関連づけられる。この例では、正規表現パ
ターン”int”が戻り値INTEGER LITER
ALと関連づけられる。
【0073】段階434で、選択した語彙素タイプの無
効な終りを表す第4の正規表現パターンが決定される。
この例では、16進リテラルの無効な終りが正規表現パ
ターン
【数2】 によって定義される。
【0074】段階436で、最初の正規表現パターンと
それに続く第2の正規表現パターンを表す第4の正規表
現パターンが構成される。正規表現パターン”bad_
hexint”は、正規表現パターン”hexint_
prefix”とそれに続く正規表現パターン
【数3】 と定義される。
【0075】段階438と440で、それぞれ、第5の
正規表現パターンが正規表現パターンリストに書き込ま
れ選択した語彙素タイプの間違った語彙素を示すラベル
と関連づけられる。この例では、正規表現”bad_h
exint”が正規表現パターン・リストに書き込ま
れ、戻り値BAD_HEXADECIMAL_LITE
RALと関連づけられる。
【0076】したがって、表1、2、3に含まれる実際
の表現のリストに基づいて生成された字句解析部は、I
NCOMPLETE_HEXADECIMAL_LIT
ERALとラベルが付けられた状態を少なくとも1つ、
INTEGER_LITERALとラベルが付けられた
状態を少なくとも1つ、そしてBAD_HEXADEC
IMAL_LITERALとラベルが付けられた状態を
少なくとも1つもつことになる。一連の入力記号が正規
表現パターン”hexint_prefix”と一致す
るとき、現在の状態はラベルINCOMPLETE_H
EXADECIMAL_LITERALと関連した状態
である。次に終了記号が読み込まれると、字句解析部に
よって生成された信号は、前回の一連の記号が不完全な
16進リテラルに相当していたことを示す。この語彙素
の特徴づけは、一連の記号が16進リテラルの有効な始
まりを構成したが有効な16進リテラルが完了する前に
終了したために正確になる。
【0077】一連の入力記号が、正規表現パターン”h
exint_prefix”とそれに続く正規表現パタ
ーン”{hexdig}+”と一致するときは、現在の
状態はラベルINTEGER_LITERALと関連し
た状態になる。次に終了記号が読み込まれると、字句解
析部によって生成された信号が、前回の一連の記号が有
効な整数リテラルに相当していたことを示す。この語彙
素の特徴づけはまた、一連の記号が16進リテラルの有
効な始まりとそれに続く16進リテラルの有効な終りと
を構成しており、16進リテラルが整数リテラルの一種
であるために正確になる。
【0078】一連の入力記号が、正規表現パターン”h
exint_prefix”とそれに続く正規表現パタ
ーン
【数4】 と一致するが正規表現パターン”int”とは一致しな
いとき、現在の状態はラベルBAD_HEXADECI
MAL_LITERALと関連した状態になる。次に終
了記号が読み込まれると、字句解析部によって生成され
た信号は、前回の一連の記号が、間違って完成された1
6進リテラルに相当していたことを示す。この語彙素の
特徴づけは、一連の記号が16進リテラルの有効な始ま
りとそれに続く16進リテラルの無効な終りを構成した
ので正確になる。
【0079】前述のように、有効と無効両方の語彙素タ
イプと一致する正規表現の作成中には、いくつかの正規
表現が繰り返し定義されることがある。たとえば、最初
の有効語彙素タイプの接頭語と一致するパターン”a”
を作成し、次に、パターン”ab”が最初の有効語彙素
タイプの接頭語と一致するパターン”b”を作成し、最
後に、”abc”が最初の語彙素タイプの有効で完全な
語彙素と一致するパターン”c”を作成することがあ
る。
【0080】また、ほとんどの字句解析ジェネレータで
は、正規表現パターン・リストにおける正規表現が相互
に排他的な数組の語彙素と一致する必要はないことに留
意されたい。たとえば、一連の記号”0x5”は”he
xint”と”bad_hexint”の両方と一致す
る。相互排他性を必要としない字句解析ジェネレータ
は、そのような定義の重複によって生じるあいまいさを
解決する規則を有する。たとえば、解析部”lex”
は、そのようなあいまいさを、”first−long
est”規則によって解決する。具体的に言うと、一連
の記号が、一連の5つの記号が処理された後の第1の正
規表現と一致し、さらに第1の正規表現と6つの記号が
処理された後の第2の正規表現の両方と一致する場合、
その組は第2の正規表現に基づいて特徴づけられる。そ
うではなく、一連の記号が同数の記号が処理された後の
2つの正規表現と一致する場合は、最初にリストされた
正規表現を使って一連の記号が特徴づけられる。したが
って、正規表現のリストにおいて、”hexint”
は”bad_hexint”よりも前にあるので、語彙
素は、”hexint”と関連した正規表現と一致しな
い場合は単に不適切な16進リテラルとみなされる。
【0081】以上の説明では、字句エラーを診断するた
めの方法および装置を述べた。字句解析部が、特定の無
効語彙素タイプに相当する複数の状態ならびに有効な語
彙素タイプに相当する複数の状態を含むので、単なる字
句エラー検出の範囲を越える能力が達成される。一実施
形態によれば、エラー診断字句解析部は、字句解析ジェ
ネレータによって、特定の無効語彙素タイプを定義する
パターンならびに特定の有効語彙素タイプを定義するパ
ターンを含む正規表現パターンを含む正規表現パターン
・リストに基づいて構成される。
【0082】本発明の特定の実施形態を説明したが、本
開示により、様々な修正および置換が当業者には明らか
になるであろう。そのような修正および置換は本発明の
範囲内にあり、特許請求の範囲に包含されるものであ
る。
【図面の簡単な説明】
【図1】 字句エラーを検出する字句解析部を示す図で
ある。
【図2】 本発明の実施形態によるエラー診断字句解析
部を示すブロック図である。
【図3】 本発明の一実施形態によるエラー診断字句解
析システムを示すブロック図である。
【図4】 図3の字句解析部をより詳細に示すブロック
図である。
【図5】 本発明の一実施形態によりソース・コード・
ファイルにおける字句エラーを診断する方法を示すフロ
ーチャートである。
【図6】 字句解析ジェネレータがエラー診断字句解析
部を構成することができる正規表現を構成する方法を示
すフローチャートである。
【符号の説明】
30 字句解析部 32 初期状態 34 有効識別子状態(VIDS) 36 有効整数状態(VIS) 38 無効語彙素状態(ILS) 40 ソース・コード・ファイル 52 ラベル 54 ラベル 56 ラベル

Claims (4)

    【特許請求の範囲】
  1. 【請求項1】 所与の言語のアルファベットの記号を含
    む記号ストリーム中の字句エラーを診断する方法におい
    て、 A) 第1の複数の状態、第2の複数の状態、および初
    期状態を含む1組の状態を有する字句解析部を構成する
    段階と、 B) 1組の語彙素タイプと前記1組の状態との間の相
    関関係を確立する段階であって、前記1組の語彙素タイ
    プが第1の複数の語彙素タイプと第2の複数の語彙素タ
    イプを含み、第1の複数の語彙素タイプの各語彙素タイ
    プが前記所与の言語における有効語彙素タイプに相当
    し、第2の複数の語彙素タイプの各語彙素タイプが前記
    所与の言語における無効な語彙素タイプに相当し、前記
    相関関係により、前記第1の複数の状態の各状態が前記
    第1の複数の語彙素タイプの対応する語彙素タイプと関
    連づけられ、かつ前記第2の複数の状態の各状態が前記
    第2の複数の語彙素タイプの対応する語彙素タイプと関
    連づけられる段階と、 C) 前記初期状態を現在の状態として確立する段階
    と、 D) 前記記号ストリームから記号を読み込む段階と、 E) 前記記号が終了記号ではない場合に、 E1) 前記記号に基づいて次の状態を決定し、 E2) 前記次の状態を前記現在の状態として確立する
    段階と、 F) 前記記号が終了記号になるまで、段階(D)、
    (E)、(E1)および(E2)を繰り返す段階と、 G) 前記記号が終了信号のときに、現在の状態と関連
    した前記語彙素タイプを示す信号を生成する段階とを含
    む記号ストリーム中の字句エラーを診断する方法。
  2. 【請求項2】 所与の言語のアルファベットの記号を含
    む記号ストリーム中の字句エラーを診断する字句解析部
    において、 第1の複数の状態、第2の複数の状態、および初期状態
    を含む1組の状態を含み、 前記1組の状態の各状態が1組の語彙素タイプのうちの
    ある語彙素タイプと関連づけられ、前記1組の語彙素タ
    イプが第1の複数の語彙素タイプおよび第2の複数の語
    彙素タイプを含み、第1の複数の語彙素タイプの各語彙
    素タイプが前記所与の言語における有効な語彙素タイプ
    であり、前記第2の複数の語彙素タイプの各語彙素タイ
    プが前記所与の言語における無効な語彙素タイプであ
    り、 前記第1の複数の状態の各状態が前記第1の複数の語彙
    素タイプの対応する語彙素タイプと関連づけられ、 前記第2の複数の状態の各状態が前記第2の複数の語彙
    素タイプの対応する語彙素タイプと関連づけられ、さら
    に、 前記初期状態を現在の状態として最初に確立する現在の
    状態指示機構と、 前記記号のストリームから記号を繰り返し読み込む記号
    入力部と、 前記記号入力部によって前記記号のストリームから読み
    込んだ記号が終了記号かどうか判定する記号比較部と、 前記現在の状態指示機構が前記次の状態を前記現在の状
    態として確立し、前記記号が終了記号ではないときに、
    前記現在の状態を前記1組の状態のうちの次の状態に移
    す状態変更機構と、 前記記号が終了記号のときに、現在の状態と関連した語
    彙素タイプを示す信号を生成する語彙素タイプ信号ジェ
    ネレータとを含む字句解析部。
  3. 【請求項3】 エラー診断字句解析部を構成する方法に
    おいて、 A) 字句解析ジェネレータに正規表現パターンのリス
    トを読み込ませる段階であって、前記正規表現パターン
    のリストが第1の複数の正規表現パターンおよび第2の
    複数の正規表現パターンを含み、前記第1の複数の正規
    表現パターンの各正規表現パターンが所与の言語におけ
    る有効な語彙素タイプを定義し、前記第2の複数の正規
    表現パターンの各正規表現パターンが所与の言語におけ
    る無効な語彙素タイプを定義する段階と、 B) 前記正規表現パターンのリストに応じて、前記字
    句解析ジェネレータが、第1の複数の状態および第2の
    複数の状態を含む1組の状態を有する前記字句解析部を
    構成する段階と、 C) C1) 前記第1の複数の状態の各状態を前記第1の複
    数の正規表現の正規表現と関連づけ、 C2) 前記第2の複数の状態の各状態を前記第2の複
    数の正規表現の正規表現と関連づけ、 それにより、前記1組の状態の各状態を前記正規表現パ
    ターンのリストの正規表現パターンと関連づける段階
    と、 D) 前記1組の状態と1組の語彙素タイプとの間の相
    関関係を確立する段階であって、前記1組の語彙素タイ
    プが第1の複数の語彙素タイプおよび第2の複数の語彙
    素タイプを含み、第1の複数の語彙素タイプの各語彙素
    タイプが前記所与の言語における有効な語彙素タイプに
    相当し、第2の複数の語彙素タイプの各語彙素タイプが
    前記所与の言語における無効な語彙素タイプに相当し、
    前記相関関係により、前記第1の複数の状態の各状態が
    前記第1の複数の語彙素タイプの対応する語彙素タイプ
    と関連づけられ、かつ前記第2の複数の状態の各状態が
    前記第2の複数の語彙素タイプの対応する語彙素タイプ
    と関連づけられる段階とを含む方法。
  4. 【請求項4】 特定の有効語彙素タイプの始まりを示す
    第1の正規表現パターンを決定し、 前記第1の正規表現パターンを前記正規表現パターンの
    リストに書き込み、 前記特定の有効語彙素タイプの終りを示す第2の正規表
    現パターンを決定し、 前記第1の正規表現パターンとそれに続く前記第2の正
    規表現パターンを表す第3の正規表現パターンを決定
    し、 前記第3の正規表現パターンを前記正規表現パターンの
    リストに書き込むことによって、前記正規表現パターン
    のリストを構成する段階をさらに含む、請求項3に記載
    の方法。
JP7259450A 1994-09-13 1995-09-13 字句エラーを診断する方法および装置 Pending JPH08194623A (ja)

Applications Claiming Priority (2)

Application Number Priority Date Filing Date Title
US30522094A 1994-09-13 1994-09-13
US08/305220 1994-09-13

Publications (1)

Publication Number Publication Date
JPH08194623A true JPH08194623A (ja) 1996-07-30

Family

ID=23179860

Family Applications (1)

Application Number Title Priority Date Filing Date
JP7259450A Pending JPH08194623A (ja) 1994-09-13 1995-09-13 字句エラーを診断する方法および装置

Country Status (3)

Country Link
US (1) US5802262A (ja)
EP (1) EP0702294A3 (ja)
JP (1) JPH08194623A (ja)

Families Citing this family (70)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US6016467A (en) * 1997-05-27 2000-01-18 Digital Equipment Corporation Method and apparatus for program development using a grammar-sensitive editor
US6243859B1 (en) * 1998-11-02 2001-06-05 Hu Chen-Kuang Method of edit program codes by in time extracting and storing
AU1488101A (en) * 1999-11-19 2001-05-30 Science Management Corporation Forms creation method and e-commerce method
US7127704B2 (en) * 2000-06-02 2006-10-24 Sun Microsystems, Inc. Interactive software engineering tool with support for embedded lexical contexts
US7421645B2 (en) 2000-06-06 2008-09-02 Microsoft Corporation Method and system for providing electronic commerce actions based on semantically labeled strings
US7716163B2 (en) 2000-06-06 2010-05-11 Microsoft Corporation Method and system for defining semantic categories and actions
US7788602B2 (en) 2000-06-06 2010-08-31 Microsoft Corporation Method and system for providing restricted actions for recognized semantic categories
US7770102B1 (en) 2000-06-06 2010-08-03 Microsoft Corporation Method and system for semantically labeling strings and providing actions based on semantically labeled strings
US7712024B2 (en) 2000-06-06 2010-05-04 Microsoft Corporation Application program interfaces for semantically labeling strings and providing actions based on semantically labeled strings
US20020144246A1 (en) * 2001-03-29 2002-10-03 Ibm Corporation Method and apparatus for lexical analysis
US7778816B2 (en) 2001-04-24 2010-08-17 Microsoft Corporation Method and system for applying input mode bias
US7117479B2 (en) * 2001-10-01 2006-10-03 Sun Microsystems, Inc. Language-sensitive whitespace adjustment in a software engineering tool
US7325194B2 (en) 2002-05-07 2008-01-29 Microsoft Corporation Method, system, and apparatus for converting numbers between measurement systems based upon semantically labeled strings
US7707496B1 (en) 2002-05-09 2010-04-27 Microsoft Corporation Method, system, and apparatus for converting dates between calendars and languages based upon semantically labeled strings
US7707024B2 (en) 2002-05-23 2010-04-27 Microsoft Corporation Method, system, and apparatus for converting currency values based upon semantically labeled strings
US7742048B1 (en) 2002-05-23 2010-06-22 Microsoft Corporation Method, system, and apparatus for converting numbers based upon semantically labeled strings
US7281245B2 (en) 2002-06-05 2007-10-09 Microsoft Corporation Mechanism for downloading software components from a remote source for use by a local software application
US7827546B1 (en) 2002-06-05 2010-11-02 Microsoft Corporation Mechanism for downloading software components from a remote source for use by a local software application
US7356537B2 (en) 2002-06-06 2008-04-08 Microsoft Corporation Providing contextually sensitive tools and help content in computer-generated documents
US7716676B2 (en) 2002-06-25 2010-05-11 Microsoft Corporation System and method for issuing a message to a program
US7392479B2 (en) 2002-06-27 2008-06-24 Microsoft Corporation System and method for providing namespace related information
US20040003373A1 (en) * 2002-06-28 2004-01-01 Van De Vanter Michael L. Token-oriented representation of program code with support for textual editing thereof
US7209915B1 (en) 2002-06-28 2007-04-24 Microsoft Corporation Method, system and apparatus for routing a query to one or more providers
US7386834B2 (en) 2002-06-28 2008-06-10 Sun Microsystems, Inc. Undo/redo technique for token-oriented representation of program code
US7707544B2 (en) * 2002-12-05 2010-04-27 Bea Systems, Inc. System and method for generating and reusing software application code with source definition files
US7783614B2 (en) 2003-02-13 2010-08-24 Microsoft Corporation Linking elements of a document to corresponding fields, queries and/or procedures in a database
US7711550B1 (en) 2003-04-29 2010-05-04 Microsoft Corporation Methods and system for recognizing names in a computer-generated document and for providing helpful actions associated with recognized names
US20040225998A1 (en) * 2003-05-06 2004-11-11 Sun Microsystems, Inc. Undo/Redo technique with computed of line information in a token-oriented representation of program code
US20040225997A1 (en) * 2003-05-06 2004-11-11 Sun Microsystems, Inc. Efficient computation of line information in a token-oriented representation of program code
US7558841B2 (en) 2003-05-14 2009-07-07 Microsoft Corporation Method, system, and computer-readable medium for communicating results to a data query in a computer network
US7739588B2 (en) 2003-06-27 2010-06-15 Microsoft Corporation Leveraging markup language data for semantically labeling text strings and data and for providing actions based on semantically labeled text strings and data
US7231633B2 (en) * 2003-07-15 2007-06-12 Lsi Corporation Debugging with set verbosity level during read and analysis of executable code and associated comments while logging according to set verbosity level
US7178102B1 (en) 2003-12-09 2007-02-13 Microsoft Corporation Representing latent data in an extensible markup language document
US7404195B1 (en) 2003-12-09 2008-07-22 Microsoft Corporation Programmable object model for extensible markup language markup in an application
US7434157B2 (en) 2003-12-09 2008-10-07 Microsoft Corporation Programmable object model for namespace or schema library support in a software application
US7487515B1 (en) 2003-12-09 2009-02-03 Microsoft Corporation Programmable object model for extensible markup language schema validation
US7509573B1 (en) 2004-02-17 2009-03-24 Microsoft Corporation Anti-virus security information in an extensible markup language document
US7788590B2 (en) 2005-09-26 2010-08-31 Microsoft Corporation Lightweight reference user interface
US7992085B2 (en) 2005-09-26 2011-08-02 Microsoft Corporation Lightweight reference user interface
US7973954B2 (en) * 2006-08-28 2011-07-05 Sharp Laboratories Of America, Inc. Method and apparatus for automatic language switching for an imaging device
US8549494B2 (en) * 2007-06-28 2013-10-01 Symantec Corporation Techniques for parsing electronic files
US8589436B2 (en) 2008-08-29 2013-11-19 Oracle International Corporation Techniques for performing regular expression-based pattern matching in data streams
US8145859B2 (en) * 2009-03-02 2012-03-27 Oracle International Corporation Method and system for spilling from a queue to a persistent store
US8321450B2 (en) 2009-07-21 2012-11-27 Oracle International Corporation Standardized database connectivity support for an event processing server in an embedded context
US8387076B2 (en) 2009-07-21 2013-02-26 Oracle International Corporation Standardized database connectivity support for an event processing server
US8527458B2 (en) 2009-08-03 2013-09-03 Oracle International Corporation Logging framework for a data stream processing server
US8386466B2 (en) 2009-08-03 2013-02-26 Oracle International Corporation Log visualization tool for a data stream processing server
US8959106B2 (en) 2009-12-28 2015-02-17 Oracle International Corporation Class loading using java data cartridges
US9430494B2 (en) 2009-12-28 2016-08-30 Oracle International Corporation Spatial data cartridge for event processing systems
US9305057B2 (en) 2009-12-28 2016-04-05 Oracle International Corporation Extensible indexing framework using data cartridges
US8713049B2 (en) 2010-09-17 2014-04-29 Oracle International Corporation Support for a parameterized query/view in complex event processing
US9189280B2 (en) 2010-11-18 2015-11-17 Oracle International Corporation Tracking large numbers of moving objects in an event processing system
US8990416B2 (en) 2011-05-06 2015-03-24 Oracle International Corporation Support for a new insert stream (ISTREAM) operation in complex event processing (CEP)
US9329975B2 (en) 2011-07-07 2016-05-03 Oracle International Corporation Continuous query language (CQL) debugger in complex event processing (CEP)
US9805095B2 (en) 2012-09-28 2017-10-31 Oracle International Corporation State initialization for continuous queries over archived views
US9563663B2 (en) 2012-09-28 2017-02-07 Oracle International Corporation Fast path evaluation of Boolean predicates
US10956422B2 (en) 2012-12-05 2021-03-23 Oracle International Corporation Integrating event processing with map-reduce
US10298444B2 (en) 2013-01-15 2019-05-21 Oracle International Corporation Variable duration windows on continuous data streams
US9098587B2 (en) 2013-01-15 2015-08-04 Oracle International Corporation Variable duration non-event pattern matching
US9390135B2 (en) 2013-02-19 2016-07-12 Oracle International Corporation Executing continuous event processing (CEP) queries in parallel
US9047249B2 (en) 2013-02-19 2015-06-02 Oracle International Corporation Handling faults in a continuous event processing (CEP) system
US9418113B2 (en) 2013-05-30 2016-08-16 Oracle International Corporation Value based windows on relations in continuous data streams
US9934279B2 (en) 2013-12-05 2018-04-03 Oracle International Corporation Pattern matching across multiple input data streams
US9244978B2 (en) 2014-06-11 2016-01-26 Oracle International Corporation Custom partitioning of a data stream
US9712645B2 (en) 2014-06-26 2017-07-18 Oracle International Corporation Embedded event processing
US9886486B2 (en) 2014-09-24 2018-02-06 Oracle International Corporation Enriching events with dynamically typed big data for event processing
US10120907B2 (en) 2014-09-24 2018-11-06 Oracle International Corporation Scaling event processing using distributed flows and map-reduce operations
WO2017018901A1 (en) 2015-07-24 2017-02-02 Oracle International Corporation Visually exploring and analyzing event streams
WO2017135837A1 (en) 2016-02-01 2017-08-10 Oracle International Corporation Pattern based automated test data generation
WO2017135838A1 (en) 2016-02-01 2017-08-10 Oracle International Corporation Level of detail control for geostreaming

Family Cites Families (5)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JPH0281230A (ja) * 1988-09-19 1990-03-22 Hitachi Ltd 構文解析および言語処理システム
US5487147A (en) * 1991-09-05 1996-01-23 International Business Machines Corporation Generation of error messages and error recovery for an LL(1) parser
US5410701A (en) * 1992-01-29 1995-04-25 Devonrue Ltd. System and method for analyzing programmed equations
JPH0728815A (ja) * 1993-02-18 1995-01-31 Matsushita Electric Ind Co Ltd 構文解析装置
US5386570A (en) * 1993-05-24 1995-01-31 Hewlett-Packard Company Method for a two pass compiler with the saving parse states from first to second pass

Also Published As

Publication number Publication date
EP0702294A2 (en) 1996-03-20
US5802262A (en) 1998-09-01
EP0702294A3 (en) 1997-05-02

Similar Documents

Publication Publication Date Title
JPH08194623A (ja) 字句エラーを診断する方法および装置
US4860203A (en) Apparatus and method for extracting documentation text from a source code program
JP3631647B2 (ja) ソフトウェアテスト方法
JPS61103247A (ja) 翻訳プログラム作成システム
US5487169A (en) Method for translating a test plan source file containing multiple programming languages
JP2000232516A (ja) 妥当性検査規則を作成するための方法、生成モジュール、サーバ、制御モジュール、および記憶手段
Schmitt et al. Autolink—putting SDL-based test generation into practice
CN113987405A (zh) 一种基于ast的数学表达式计算算法
JP4394225B2 (ja) 通信システム用のコンフィグレーションデータを検証するための、方法、検証モジュール、サーバ、制御モジュール、および記憶手段
JPH11249875A (ja) プログラミング支援方法及びその装置
JP2004185508A (ja) プログラム解析装置およびプログラム
JPH02224132A (ja) メッセージパーサの自動発生システム
JPH11272503A (ja) プログラムのテストデータ自動生成装置
MacLennan The Synmac syntax macroprocessor: Introduction and manual, version 5
US5587918A (en) Circuit pattern comparison apparatus
JPH09128266A (ja) 原始プログラム経路検索装置及びその検索方法
JP3999949B2 (ja) 別名検索装置、別名検索方法及び別名検索用プログラム
Chisolm et al. ATLAS compiler development
EP0371943A2 (en) System and method for generating programming language translators
JP5253115B2 (ja) プログラム変換装置、プログラム分析装置、プログラム変換方法、プログラム分析方法、およびプログラム
US6980996B1 (en) Generic command interface for multiple executable routines having character-based command tree
CN117539752A (zh) 差异生成方法、显示方法、装置、设备及存储介质
JPH0981371A (ja) ソースコード自動バージョンアップ方法及び装置
Plat et al. Type checking BSI/VDM-SL
Doyuran DESIGN AND IMPLEMENTATION OF THE FRONT-END FOR SDL'92 COMPILER