JPH04313123A - 構文規則処理方法 - Google Patents
構文規則処理方法Info
- Publication number
- JPH04313123A JPH04313123A JP10505991A JP10505991A JPH04313123A JP H04313123 A JPH04313123 A JP H04313123A JP 10505991 A JP10505991 A JP 10505991A JP 10505991 A JP10505991 A JP 10505991A JP H04313123 A JPH04313123 A JP H04313123A
- Authority
- JP
- Japan
- Prior art keywords
- operator
- syntax
- syntax rule
- rule
- priority
- 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
- 238000003672 processing method Methods 0.000 title claims description 10
- 238000004458 analytical method Methods 0.000 claims abstract description 10
- 238000000034 method Methods 0.000 claims description 11
- 230000014509 gene expression Effects 0.000 claims description 5
- 238000010586 diagram Methods 0.000 description 9
- 238000011156 evaluation Methods 0.000 description 2
- 238000010276 construction Methods 0.000 description 1
- 238000002372 labelling Methods 0.000 description 1
- 238000000547 structure data Methods 0.000 description 1
Landscapes
- Devices For Executing Special Programs (AREA)
Abstract
(57)【要約】本公報は電子出願前の出願データであるた
め要約のデータは記録されません。
め要約のデータは記録されません。
Description
【0001】
【産業上の利用分野】本発明は、計算機において、利用
者の定義する構文規則に従うパーザの生成等のための構
文解析条件の生成を行う構文規則処理方法に関する。
者の定義する構文規則に従うパーザの生成等のための構
文解析条件の生成を行う構文規則処理方法に関する。
【0002】例えば証明問題の処理を支援するシステム
に、論理式等を入力する場合に、その論理式を表す入力
データの文法は問題の分野によって異なることがあり、
又新しい論理関係等を定義することによって、より簡明
な記述を可能にする等の改良が行われるので、そのよう
な構文規則を利用者が容易に定義できることが望まれる
。
に、論理式等を入力する場合に、その論理式を表す入力
データの文法は問題の分野によって異なることがあり、
又新しい論理関係等を定義することによって、より簡明
な記述を可能にする等の改良が行われるので、そのよう
な構文規則を利用者が容易に定義できることが望まれる
。
【0003】
【従来の技術】計算機システムにおいて、利用者の望む
形式で入出力を行うために、入出力する文字列の形式を
、構文規則によって利用者が規定できるようにする利用
上の要求がある。
形式で入出力を行うために、入出力する文字列の形式を
、構文規則によって利用者が規定できるようにする利用
上の要求がある。
【0004】そのような利用者との入出力インタフェー
スを提供するシステムでは、いわゆるパーザを設けて、
入力文字列を構文規則に従って解析して内部構造を生成
する処理を行い、又必要な場合には入力された式等を評
価するが、前記のように構文規則を利用者が規定できる
ようにすると、その構文規則ごとにパーザが必要になる
。
スを提供するシステムでは、いわゆるパーザを設けて、
入力文字列を構文規則に従って解析して内部構造を生成
する処理を行い、又必要な場合には入力された式等を評
価するが、前記のように構文規則を利用者が規定できる
ようにすると、その構文規則ごとにパーザが必要になる
。
【0005】そこでパーザについては、一定の形式で表
す構文規則に従ってパーザを自動作成する手法を、本出
願人が特願昭63−281306 「内部構造データ付
加処理方法」に開示した。
す構文規則に従ってパーザを自動作成する手法を、本出
願人が特願昭63−281306 「内部構造データ付
加処理方法」に開示した。
【0006】ここで、所望の構文規則に従って正しく構
文解析を行うパーザを生成するためには、厳密に定義さ
れた構文規則が、パーザ生成システムに入力されなけれ
ばならないが、計算機を使用する応用分野の利用者にと
っては、完全な構文規則を作成することがしばしば困難
である。
文解析を行うパーザを生成するためには、厳密に定義さ
れた構文規則が、パーザ生成システムに入力されなけれ
ばならないが、計算機を使用する応用分野の利用者にと
っては、完全な構文規則を作成することがしばしば困難
である。
【0007】たとえば、図2(a)に例示するような構
文規則は、公知のいわゆる文脈自由文法に基づいた記法
によるもので、図の中で英数小文字で非終端記号、引用
記号の「“」と「”」で括ったもので終端記号を示し、
両者を構文要素として、構文要素を「,」と「→」と「
;」を使ってつないで構文規則を表す。
文規則は、公知のいわゆる文脈自由文法に基づいた記法
によるもので、図の中で英数小文字で非終端記号、引用
記号の「“」と「”」で括ったもので終端記号を示し、
両者を構文要素として、構文要素を「,」と「→」と「
;」を使ってつないで構文規則を表す。
【0008】こゝで「;」は各構文規則の終わりを示す
符号で、各構文規則は「→」の左辺に1個の非終端記号
を置き、右辺に1個又は「,」で区切った複数個の構文
要素からなる構文要素の並びを置いて、「左辺の非終端
記号とは、右辺の構文要素の並びである」ことを示す。 なお、右辺に終端記号1個のみのものを辞書型構文規則
、それ以外を規則型構文規則という。
符号で、各構文規則は「→」の左辺に1個の非終端記号
を置き、右辺に1個又は「,」で区切った複数個の構文
要素からなる構文要素の並びを置いて、「左辺の非終端
記号とは、右辺の構文要素の並びである」ことを示す。 なお、右辺に終端記号1個のみのものを辞書型構文規則
、それ以外を規則型構文規則という。
【0009】この例の場合に、例えば非終端記号「ex
pr」の構文規則においては、「expr,”+”,t
erm 」のように「term」なる非終端記号を設け
て、演算子「+」と「−」に関わる規則が定義され、「
*」と「/」に関わる規則は、「term」の構文規則
として分離し、「term,”*”,factor 」
等によって定義されている。
pr」の構文規則においては、「expr,”+”,t
erm 」のように「term」なる非終端記号を設け
て、演算子「+」と「−」に関わる規則が定義され、「
*」と「/」に関わる規則は、「term」の構文規則
として分離し、「term,”*”,factor 」
等によって定義されている。
【0010】このようにすることにより、演算子「+」
及び「−」と、演算子「*」及び「/」との間に式の評
価における優先順位の違いがあることを示すことができ
る。
及び「−」と、演算子「*」及び「/」との間に式の評
価における優先順位の違いがあることを示すことができ
る。
【0011】
【発明が解決しようとする課題】演算子の優先順位に関
する規則を定義するのに、前記の例のような記法を利用
することは、そのような規則の構成に習熟していない利
用者には必ずしも容易ではなく、単に表現形式に着目し
て構文規則を作成した場合には、例えば図2(b)のよ
うな規則になり易く、その場合には演算子の優先順位が
あいまいになる。
する規則を定義するのに、前記の例のような記法を利用
することは、そのような規則の構成に習熟していない利
用者には必ずしも容易ではなく、単に表現形式に着目し
て構文規則を作成した場合には、例えば図2(b)のよ
うな規則になり易く、その場合には演算子の優先順位が
あいまいになる。
【0012】本発明は、前記のようなあいまい性のある
構文規則から、有効な構文解析データを生成できるよう
にして、構文規則の作成を容易にした構文規則処理方法
を目的とする。
構文規則から、有効な構文解析データを生成できるよう
にして、構文規則の作成を容易にした構文規則処理方法
を目的とする。
【0013】
【課題を解決するための手段】図1は、本発明の構成を
示すブロック図である。図は構文規則処理方法の構成で
あって、所要の構文の構文解析条件を生成する処理3に
おいて、所定形式の構文規則1と演算子定義2とを入力
とし、演算子定義2は、該構文規則に使用される演算子
について、各演算子に従って式を評価する場合の該演算
子間の優先順位を示し、構文規則1を、該優先順位を参
照して処理して、構文解析条件4を生成する。
示すブロック図である。図は構文規則処理方法の構成で
あって、所要の構文の構文解析条件を生成する処理3に
おいて、所定形式の構文規則1と演算子定義2とを入力
とし、演算子定義2は、該構文規則に使用される演算子
について、各演算子に従って式を評価する場合の該演算
子間の優先順位を示し、構文規則1を、該優先順位を参
照して処理して、構文解析条件4を生成する。
【0014】前記演算子定義2には、所要の演算子につ
いて、結合性を指定する情報を有し、該結合性に従って
、該演算子の引数と該演算子との該優先順位を決定し、
又、前記演算子定義2及び構文規則1には、所要の演算
子についてラベルを付し、該演算子を表す記号と該ラベ
ルとによって、該演算子の異同を識別することができる
。
いて、結合性を指定する情報を有し、該結合性に従って
、該演算子の引数と該演算子との該優先順位を決定し、
又、前記演算子定義2及び構文規則1には、所要の演算
子についてラベルを付し、該演算子を表す記号と該ラベ
ルとによって、該演算子の異同を識別することができる
。
【0015】
【作用】本発明の処理方法により、文脈自由文法の記法
で構文規則として記述する規則の中では演算子の優先順
位が規定される必要がなく、別に演算子定義により演算
子の優先順位を示す情報を、構文規則と共に入力するこ
とにより、あいまい性の無い構文解析条件を生成するこ
とができる。
で構文規則として記述する規則の中では演算子の優先順
位が規定される必要がなく、別に演算子定義により演算
子の優先順位を示す情報を、構文規則と共に入力するこ
とにより、あいまい性の無い構文解析条件を生成するこ
とができる。
【0016】演算子定義は、例えば演算子を示す記号を
優先順位の順に並べることによって優先順位を示すこと
ができるので、特に記述に習熟を要するようなことはな
く、利用者は容易に構文規則の情報を作成することがで
きる。
優先順位の順に並べることによって優先順位を示すこと
ができるので、特に記述に習熟を要するようなことはな
く、利用者は容易に構文規則の情報を作成することがで
きる。
【0017】
【実施例】図3は演算子定義の記述例を説明する図であ
り、図3(a)に示すように、「operator」で
演算子定義を示し、引用記号で括って示す演算子記号を
優先順位ごとに「;」で区切って、優先順位の高い順に
並べて優先順位を定義する。括弧で括ったものは、同じ
優先順位である。
り、図3(a)に示すように、「operator」で
演算子定義を示し、引用記号で括って示す演算子記号を
優先順位ごとに「;」で区切って、優先順位の高い順に
並べて優先順位を定義する。括弧で括ったものは、同じ
優先順位である。
【0018】図3(b)は、結合性の指定を加える場合
の例で、図示のように多項演算子の必要な演算子記号の
後に「:left」と指定し、又、必要な場合には「:
right 」と指定することにより、その演算子が続
く場合の評価を左から右の順に行うか、右から行うかを
指定することができるようにする。
の例で、図示のように多項演算子の必要な演算子記号の
後に「:left」と指定し、又、必要な場合には「:
right 」と指定することにより、その演算子が続
く場合の評価を左から右の順に行うか、右から行うかを
指定することができるようにする。
【0019】図3(c)はラベルを付ける例で、必要な
演算子の記号の後に「:ラベル」の形式で指定する(図
は「unary 」というラベルを付けた例) 。この
ようにラベルを付すことにより、図の例のように同じ記
号「−」が、負号と減算記号の両方に使われるために2
個所に現れるような場合に、その区別を明確にできる。
演算子の記号の後に「:ラベル」の形式で指定する(図
は「unary 」というラベルを付けた例) 。この
ようにラベルを付すことにより、図の例のように同じ記
号「−」が、負号と減算記号の両方に使われるために2
個所に現れるような場合に、その区別を明確にできる。
【0020】図3(d)は結合性指定とラベルとを共に
加えた場合の、演算子定義の例である。この場合に、例
えば結合性指定のために予約する前記のleft及びr
ight 以外をラベルとして認識する。
加えた場合の、演算子定義の例である。この場合に、例
えば結合性指定のために予約する前記のleft及びr
ight 以外をラベルとして認識する。
【0021】図3(c)、(d)の場合のように、ラベ
ルを付けた場合には、それに対応して構文規則の中の演
算子にもラベルを表示し、その結果混同が生じなくなる
場合には、構文規則を図2(c)のように(b)の場合
より更に簡単にすることができる。
ルを付けた場合には、それに対応して構文規則の中の演
算子にもラベルを表示し、その結果混同が生じなくなる
場合には、構文規則を図2(c)のように(b)の場合
より更に簡単にすることができる。
【0022】図4は、図1における処理3の処理の流れ
の一例を示す図であり、構文規則1を入力して、処理ス
テップ10で構文規則の1つを取り出す。処理ステップ
11、12、13で識別して、規則が辞書型構文規則で
あるか、規則の右辺が単一の非終端記号のみであるか、
右辺に演算子が無い場合には、処理ステップ14で従来
と同様に処理するように、その規則をそのまま構文解析
条件4として、例えばパーザ作成部に渡す。
の一例を示す図であり、構文規則1を入力して、処理ス
テップ10で構文規則の1つを取り出す。処理ステップ
11、12、13で識別して、規則が辞書型構文規則で
あるか、規則の右辺が単一の非終端記号のみであるか、
右辺に演算子が無い場合には、処理ステップ14で従来
と同様に処理するように、その規則をそのまま構文解析
条件4として、例えばパーザ作成部に渡す。
【0023】以上の条件を満足しない場合、即ち規則型
構文規則であって、演算子を含む規則の場合には、処理
ステップ15に進んで、規則の右辺にある演算子の1つ
を取り出して以下のように処理する。
構文規則であって、演算子を含む規則の場合には、処理
ステップ15に進んで、規則の右辺にある演算子の1つ
を取り出して以下のように処理する。
【0024】即ち、予め演算子定義2の入力に基づいて
、演算子データ作成処理30によって、各演算子の優先
順位等を示す演算子データ31を作成しておく。図5は
、図3(d)に対応する演算子データの例を示す図であ
る。
、演算子データ作成処理30によって、各演算子の優先
順位等を示す演算子データ31を作成しておく。図5は
、図3(d)に対応する演算子データの例を示す図であ
る。
【0025】前記のように演算子を取り出すと、処理ス
テップ16でその演算子の記号と、ラベルがある場合の
ラベルとによって、該当する演算子データを取り出す。 処理ステップ17で、現に処理中の規則の左辺の非終端
記号の構文規則に現れる演算子の優先順位の、最も低い
ものより更に低い優先順位としてBを定める。
テップ16でその演算子の記号と、ラベルがある場合の
ラベルとによって、該当する演算子データを取り出す。 処理ステップ17で、現に処理中の規則の左辺の非終端
記号の構文規則に現れる演算子の優先順位の、最も低い
ものより更に低い優先順位としてBを定める。
【0026】処理ステップ18で、演算子データから結
合性を識別して、leftであれば『この演算子の右側
にある非終端記号は、この演算子の優先順位より高い優
先順位を持つ』ことを条件とする。
合性を識別して、leftであれば『この演算子の右側
にある非終端記号は、この演算子の優先順位より高い優
先順位を持つ』ことを条件とする。
【0027】又、right であれば『この演算子の
右側にある非終端記号は、この演算子の優先順位と同じ
か、より高い優先順位を持つ』ことを条件とする。なお
、結合性指定の無い場合には、予め省略時の値として定
めるところに従いleftかright かをとる。又
、単項演算子の場合には、その引数になる非終端記号に
、前記right の場合と同様の条件を付ける。
右側にある非終端記号は、この演算子の優先順位と同じ
か、より高い優先順位を持つ』ことを条件とする。なお
、結合性指定の無い場合には、予め省略時の値として定
めるところに従いleftかright かをとる。又
、単項演算子の場合には、その引数になる非終端記号に
、前記right の場合と同様の条件を付ける。
【0028】処理ステップ21で、『ここで非終端記号
に還元されたものには前記の優先順位Bを付ける』こと
を条件とする。以上の後、処理ステップ22で構文規則
に、前記で定まる条件をつけたデータを、構文解析デー
タとしてパーザ作成部に渡し、処理ステップ23で識別
して、処理すべき構文規則があれば処理ステップ10に
戻る。
に還元されたものには前記の優先順位Bを付ける』こと
を条件とする。以上の後、処理ステップ22で構文規則
に、前記で定まる条件をつけたデータを、構文解析デー
タとしてパーザ作成部に渡し、処理ステップ23で識別
して、処理すべき構文規則があれば処理ステップ10に
戻る。
【0029】以上の処理により、例えば従来図2(a)
の構文規則から得られる構文解析条件と同等のデータを
、図2(c)の構文規則と図3(d)の演算子定義から
得ることができる。
の構文規則から得られる構文解析条件と同等のデータを
、図2(c)の構文規則と図3(d)の演算子定義から
得ることができる。
【0030】その構文解析条件を従来と同様に処理する
ことにより、例えば図6にPROLOGプログラミング
言語風に記述されたプログラムで示すような、パーザを
作成することができる。
ことにより、例えば図6にPROLOGプログラミング
言語風に記述されたプログラムで示すような、パーザを
作成することができる。
【0031】このパーザは、図2(c)の構文規則と図
3(d)の演算子定義から得られるパーザであり、図6
のプログラムにおいて、例えば最初の「expr」で始
まる4行の文で言えば、文中に太字で示す「3」及び「
4」が、前記の処理ステップ19及び処理ステップ21
で付けられた条件によって定まる優先順位の値である。
3(d)の演算子定義から得られるパーザであり、図6
のプログラムにおいて、例えば最初の「expr」で始
まる4行の文で言えば、文中に太字で示す「3」及び「
4」が、前記の処理ステップ19及び処理ステップ21
で付けられた条件によって定まる優先順位の値である。
【0032】
【発明の効果】以上の説明から明らかなように本発明に
よれば、計算機において、利用者の定義する構文規則に
従うパーザの生成等のにおいて、あいまい性のある構文
規則から、有効な構文解析データを生成できるようにし
て、構文規則の作成を容易にするので、システムの利用
性を向上するという著しい工業的効果がある。
よれば、計算機において、利用者の定義する構文規則に
従うパーザの生成等のにおいて、あいまい性のある構文
規則から、有効な構文解析データを生成できるようにし
て、構文規則の作成を容易にするので、システムの利用
性を向上するという著しい工業的効果がある。
【図1】 本発明の構成を示すブロック図
【図2】
構文規則の説明図
構文規則の説明図
【図3】 本発明の演算子定義の説明図
【図4】
本発明の処理の流れ図
本発明の処理の流れ図
【図5】 演算子データの説明図
【図6】 パーザの一例を示す図
1 構文規則
2 演算子定義、
3 処理
4 構文解析条件
10〜23 処理ステップ
30 演算子データ作成処理
31 演算子データ
Claims (3)
- 【請求項1】 所要の構文の構文解析条件を生成する
処理において、所定形式の構文規則(1)と演算子定義
(2)とを入力とし、該演算子定義(2)は、該構文規
則(1)に使用される演算子について、各演算子に従っ
て式を評価する場合の該演算子間の優先順位を示し、該
構文規則(1)を、該優先順位を参照して処理して、該
構文解析条件(4)を生成する(3)ように構成されて
いることを特徴とする構文規則処理方法。 - 【請求項2】 前記演算子定義(2)には、所要の演
算子について、結合性を指定する情報を有し、該結合性
に従って、該演算子の引数と該演算子との該優先順位を
決定する、請求項1記載の構文規則処理方法。 - 【請求項3】 前記演算子定義(2)及び構文規則(
1)には、所要の演算子についてラベルを付し、該演算
子を表す記号と該ラベルとによって、該演算子の異同を
識別する、請求項1又は請求項2記載の構文規則処理方
法。
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
JP10505991A JPH04313123A (ja) | 1991-04-11 | 1991-04-11 | 構文規則処理方法 |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
JP10505991A JPH04313123A (ja) | 1991-04-11 | 1991-04-11 | 構文規則処理方法 |
Publications (1)
Publication Number | Publication Date |
---|---|
JPH04313123A true JPH04313123A (ja) | 1992-11-05 |
Family
ID=14397406
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
JP10505991A Pending JPH04313123A (ja) | 1991-04-11 | 1991-04-11 | 構文規則処理方法 |
Country Status (1)
Country | Link |
---|---|
JP (1) | JPH04313123A (ja) |
Citations (1)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
JPH02281337A (ja) * | 1989-04-24 | 1990-11-19 | Yokogawa Electric Corp | トランスレータジェネレータを拡張する方法 |
-
1991
- 1991-04-11 JP JP10505991A patent/JPH04313123A/ja active Pending
Patent Citations (1)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
JPH02281337A (ja) * | 1989-04-24 | 1990-11-19 | Yokogawa Electric Corp | トランスレータジェネレータを拡張する方法 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
US5555169A (en) | Computer system and method for converting a conversational statement to computer command language | |
JP2654001B2 (ja) | 機械翻訳方法 | |
US5317509A (en) | Regular expression factoring for scanning multibyte character sets with a single byte automata machine | |
Maier et al. | Discontinuity and non-projectivity: Using mildly context-sensitive formalisms for data-driven parsing | |
JPH04313123A (ja) | 構文規則処理方法 | |
JPH03260766A (ja) | 括弧生成判定機能付翻訳装置 | |
JPH07210556A (ja) | 自然言語処理装置及び自然言語処理方法 | |
JPH0877196A (ja) | 文書情報抽出装置 | |
JP2974698B2 (ja) | 機械翻訳装置における単語間関係編集/学習装置 | |
JP2626722B2 (ja) | 日本語生成装置 | |
JPH01309179A (ja) | 自然言語解析方式 | |
JP3197110B2 (ja) | 自然言語解析装置および機械翻訳装置 | |
JPH06124211A (ja) | プログラム解析装置 | |
JPH0833895B2 (ja) | 機械翻訳システムにおける文生成処理方式 | |
JPH0816576A (ja) | 構造化文書編集装置 | |
JP4399154B2 (ja) | 翻訳装置、及び翻訳プログラム | |
JP2650099B2 (ja) | ドキュメント抽出装置 | |
JPS62271054A (ja) | 翻訳装置における形態素解析結果修正方式 | |
JP2727987B2 (ja) | データ型検査装置 | |
JPH0546373A (ja) | フローチヤート作成処理装置 | |
JP2687334B2 (ja) | 機械翻訳装置 | |
JPH03201165A (ja) | 日本語解析処理方式 | |
JPH06348465A (ja) | プログラム作成支援装置 | |
JPH0612449A (ja) | 機械翻訳装置及びその方法 | |
JPH11143876A (ja) | 双方向機械翻訳装置 |