• 検索結果がありません。

記号処理系のオートマタシステムによる実現

N/A
N/A
Protected

Academic year: 2021

シェア "記号処理系のオートマタシステムによる実現"

Copied!
8
0
0

読み込み中.... (全文を見る)

全文

(1)

記号処理系のオートマタシステムによる実現

(昭和56年10月31日 原稿受付)

情報工学教室 山之上   卓

  〃    金  子  浩  一一   〃   藤  岡  明  美   〃   安  在  弘  幸

An Implementation of Symbol Mapipulation System

       by An Automata System

by Takashi YAMANOUE

   Kouichi KANEKO    Akiyoshi FUJIOKA    Hiroyuki ANZAI

  This p⑳er prese産s a meth◎d c◎nstmc恒ng a kind()f fmite a碇◎m[aね§ysteml as a symb◎茎 manipulation system from given regular translation form and action routines which describe behavior of the automata$ystem In this method, the automata system is concretely imple・,

me批ed and really executed in comρ碇eτas a UCSD PASCAL program.

  And finally, a lexical analyzer is shown as an example of its practical applications.

       逆ポーランド記法は単純な操作で式を評価できるため

L註がき        よく鮪れる。・A+B。C、と司算術式髄牛ラン

 記号処理システムはオートマトンモデルで実現するこ   ド記法で表すと「ABC楽+」となる。この逆ポーラン とができる。我々はオートマトンを計算機内部で実現し,   ド記法変換の規則はRTF(Regular Transla乞ion F◇m)1)

これを実行させるシステムをUCSD PASCALシステ    という記述方法で次のように表すことができる。

ム上で制作した。そしてこのシステムを用いることによ     〈算術式〉=〈項〉ぐ+▼〈項〉 [+])*

り,コンパイラの宇句解析を行う機械を簡単に作ること      〈 項 〉=〈因子〉(▼※▼〈因子〉 [東])*

ができた。       〈因 子〉=▼文字・[文字]+▼(▼〈算術式〉▼)▼

 本稿では2章でオートマトンモデルによる記号処理シ    ここで,「・▼」でかこまれた部分は入力される文字を ステム作成の原理について説明を行い,3章でこの原理   表し「端記号」という。「〈 〉」でかこまれた部分は「非 に基いて,我々の作った記号処理システムについて述べ   端記号」といい,左辺の非端記号を右辺の式で定義付け る。4章ではこのシステムの具体的な応用例としての字   する。「[]」でかこまれた部分は動作を示し,「アク 句解析を行う機械について述べる。      ション」という。ここでは[]内の文字を出力する。

2.記号処理システムのオートマトンによる実現法 最初の式と次の式の左の右肩にある「※」は゜回を含む       繰返を表し第3番目の亨▼でくくられていない「十」は  本章ではまず記号処理システムをオートマトンモデル    「または」っまりorを表す。

で実現する方法についての原理的説明を,算術式の逆    このRTFに対して,上述した解釈は,図一1に示す3 ポーランド記法変換を例に述べ,次にオートマトンが式   つのオートマトンの解釈と全く等価である。オートマト の直接実行も可能であることを示す。      ンは,ある状態から矢印の上に書いてある文字を入力し

(2)

84

て次の状態に遷移するという状態遷移図で表される。→○

は開始状態を示し,・は終状態を示す.ヲF端記号で遷移  Eつ⊥≡

している部分は,非端記号に対応する状態遷移図がここ

に挿入されると考えればよい.アクシ・ンのある遷移は  TO』『

このアクシ・ンに対応した・すなわちこのアクシ・ンと    ・文字・[文字]

して定義された動作を行う。上述の例では,アクション        F』      ()

に対応づけられた定義は,そのアクション記号をそのま       ・(・ E  ・)・       . ま出力するものであった。図一2に「A+B※C」を入力

したときこのオートマトンの動作を示す。      鷺:慧雲CP「合祠  オートマトンは式を直接に実行(interprete)すること      Fは〈因子〉(Fact°「)の省略である・

も可能である。例として前の逆ポーランド記法変換を行        図一1 逆ポーランド変換を行う うオートマトンのアクションとして次の動作を定義づけ      3つのオートマトン てみる。

ω・H+]   ・…d=

;悉Fぽ鷲編 T管 テ 

   ▼( E )

       (9)T◎上◆_◇._

       、:踏Fの実行を醜

(2)Eρエ◇_

・治』「の実行蹴  、1。蝉・文字・

       文字ワB▼を読んでBを出力。

      ㏄91㌶虻綱゜

(3)T』

6ピ [文字]Fの実行を  、1、。。・*・F

      F    ,   Tに戻って次の状態から開始。

(4) ・文字・[文字]文字・A・を読んで・・肋。   CS

㏄;℃㌘へ F (121・♂ザ・・_。__

      CS    入力A+B*

       出力AB

…。・VF   (13)・滅⊥

・一・csi難i難罐F鴨…ノFの  

㈲誌一一::遼、藷轡㌶

Tに戻って次の状態へ行く,

      F _. このとき・を出力。

      CS      出力ABC*+

       これですべての動作を終る。

図一2 オートマトンによる逆ポーランド変換の実行

(3)

 [記号]:スタックに記号をプッシュする。         入ヵ A  A、  A,B A,B, A,B,c A、B,c

[蠕藁㌘惣蒜その和を勒L当山自自螢曙

 [崇]1スタックから記号を2つポップしてその積を     とり結果をスタックにプッシュする。

      スカ  ハキ    入力「A+B楽C」に対して,このオートマトンは図    出ヵ[A]〔,]〔、ユ[.〕[、〕

賜鷲巖;作力綱ときその結果がス コ

 このようにアクションを作りかえること,すなわちそ     図一3 図2のアクションを入れかえたとき

の定義(解釈)を変えることによって式の直接の実行も         の動き       ゜ 可能である。以上のようにオートマトンとアクションを

作ることにより様々な変換や,動作を行う機械を作るこ とができる。

3・記号処理システムの実際     回

 本章では我々の作ったオートマトンによる記号処理シ

ス㌶㌶鑛;糎することができ_マ( 繍錫 (丙』錨

トンの外部表現を計算機が解釈,実行できる内部の表現       〜完治芸 に変換する部分と,オートマトンを実行する部分よりで

きている。(図一4)       (a)オートマトンの作成  この章では3.1.節でオートマトンの外部表現につい

て・3・2・節でオートマトンの内部表現について・3・3・節      入力 でアクションルーチンについてそれぞれ述べたのち,3.

4.節で本システムの使用法を与える。

 3.1. オートマトンの外部表現

 オートマトンの外部表現はPASCALプログラムの手       (b)オートマトンの実行 続の例で表現することにした。

 オートマトンの外部表現は人間が直接に理解でき,し       図一4 本システムの構成 かも計算機の内部表現に変換しやすいように,抽象的

データ構造である有向グラフによる表現と具体的データ    ここで右辺の右肩の「+」は1回以上の繰返を示す。

構造である計算機内部のリンク表現との中間的な形を   〈symbo1>は端記号を示し,その型(たとえばcharな とっている。この表現を規定する文法をRTFで表すと   ど)はユーザーが定義する。〈integer>は整数である。

次のようになる。       〈automata>はオートマトン(automaton)の複数型で  〈automata>=      ある。〈bconst>はbegin construction, econstはend     ▼bc◎nst;▼〈automat◎n>÷▼P:=ec。nst;▼  c◎nstruc乞ion, co憾丁はc◎nstruct Terminal(端記号),

 〈automaton>=       constNはconstruct Nontermina1(非端記号),constA     (▼c◎n§tT(▼〈conneet>〈symbol>つ;亨     はc◎nstmct Acti◎n(アクション),const Lはconstwct     +▼constN(▼〈connect>〈integer>ワ);     Lambda(終状態)の略である。〈connect>の2つの整     +▼con§tA(▼〈connect>〈i就eger>▼);)+   数は遷移する前の状態と遷移した後の状態を示す。

    (▼const L(〈integer>▼);▼)+      外部表現を用いたオートマトンは状態遷移図から次の  〈c◎nnect>=〈lnteger>▼,▼〈i就eger>▼,▼     ようにして作る。

・ラ・・

(4)

86

(1)オ:㌫㌫欝をアクションと鵬 (}坦〈)(}当}旦○

  (2)すべての状態に重複しないように番号をつける。

    (図一6)

  (3)非端記号を各オートマトンの開始状態の番号で置 (}二当○ (〉⊥〈)上LO

   換える。(図一7)

      図一5   (4)アクションを適当な番号で置換える。(アクショ

    ニrプ゜グラムを作るときに対応づける゜)(図・〔・⌒

㎡(5)すべての遷移をオートマトンの外部表現の蜘、 ・◇琶一

 従って書き換える。(図一9)      F ▼A▼  [A]   F・▼A 1・[A]

 ここで終状態は各オートマトンの最後に書く。        ツ E つ▼     ▼(▼1E13 )▼

(6)すべてのオートマトンの最初にbconst;,最後に       図一6  P:=econst;を加える。

bconst;       ・A▼    [A]      ▼A▼    A1        ヨロ

        const N(1,2,5);constT(2,3,▼十▼);const N(3,4,5);        ・(・  1  ・)・        ▼(・ 1  ・)・

       12     13

      12    13

 const A(4,2,2);const L(2);

       図一7      図一8

 const N(5,6,9);const T(6,7,▼※▼);const N(7,8,9);

以上の作業を図一1の逆ポーランド変換を行うオート 〔 {

マトンに対して行うと次のようになる・

c°nstA(8,6β);c°nstL(6);      ②工③   ・・n・・T(脇・+・)、

UCSD PASCALシステムでのオートマトンモデル 〔  :1 :;:;:1::1;::1::: :;21r・

は,次の各要素を用いて1つのプログラムとして実現さ      c°nstL(2)

      図一9

れる。

 (1)オートマトンの外部表現(3.1.節参照)        3.2.オートマトンの内部表現

 (2)アクションルーチン(3.3,節参照)         一般にオートマトンは,抽象的データ構造として,図  (3)(1)から内部表現への変換手続き(3.2.節参照)    −1に示したように有向グラフで表現される。本システム  (4)オートマトンの内部表現をシミュレートするドラ   では,これを図一10に示すようなリンク表現による具体   イバールーチン       的データ構造として計算機内に実現する。

 (5)端記号入力手続きとその判定関数       この内部表現の各要素としてのセル=レコードは,1  ここで(1),(2),(5)はユーザーが与えねばならない。(3)  個の情報欄と2個のリンク欄すなわちL欄と RLINK と(4)はPASCALシステム上のファイルに登録されてい   欄から構成され,情報欄には遷移記号が書かれ,リンク る。      欄には次の遷移を示すポインタが書かれる。遷移記号と  上述したシステムは,まず(3)を用いて(1)を内部表現に   入力が一致すれば状態を示すポインタはLをたどり一致 変換する。内部表現が完成した後,EXECUTEという手   しないときはRLINKをたどる。そしてここでは状態を 続きによって(4)が起動され,オートマトンのシミュレー   示す特別な情報欄はなく,強いて言えばある遷移記号と ションを行う。       次の遷移記号の間に「状態」があると想定している。図

(5)

−11は図一1の逆ポーランド変換を行うオートマトンの有   うファイルに書かれた手続によって行なわれる。

向グラフ表現を計算機内部のリンク表現で表したもので    計算機内に実現されたオートマトンの内部表現上でこ ある。      のオートマトンを実行(すなわちシミュレート)させる  3.1.節で示したオートマトンの外部表現からこの内   手続きをドライバーと呼ぶ。図一12にこのドライバーの 部表現への変換は本システム上1こあるACP・GROUP・   プログラムを示す。この手続きは本システムの DRI.

TEXT(Automat皿Construct Procedure Group)とい   VER TEXTというファイルに書かれている。

端記号遷移 非端記号遷移

アクション遷移

終  状  態

(ラムダ遷移)

グラフの分岐

上のすべてを含 んだ オートマトンの

グラフ表現

 ワ マ

ゲ袷 ヂ℃

ぎδ氾

  ▼A亨 N     A1   ,B▼

内部表現

▼A▼    ,B▼    ▼C▼

▼A▼   ▼駆

   A1

{杜蝕杜杜禽⇔含督食託杜☆⇔ 費鱈 枝軸紡禽銭 Ω 含軸⇔鱈品垂}

}:・恩堺・舶…… ………一…・・…・一口帥 .:l

PROCεDUR芭 READT(VAR CH‡SYM80L: FLA《茎2:BOOLEAN)ハ  BEGIN

 工P PLAG2 THEN 88G‡N READS{CH)ム W±ユCH £NO     口LSεζ翼‡存w

 認功 PR㏄EDUR芭 駕NISYS

 BEG工N P 讐TRUE3 83百TRUε END:

P頁㏄日o織o只Σ∨ε蓑{T‡雑◎砕:草ぷ8,靹¢おBOOL顕習)ξ VAR ACP38◎◎LEAN5 UIHOLP?

PR㏄EDUR鷺 PTERH,

B£GIN  票εADT{CH.B,:

 ΣP冗8wCH,P^・§m灘G}誓麗ロB8ぷ9亮=ダ.Lぱ堺:8;エ?賢㈱§NO          江Sε8嵩翁ΣN唐ヰ㌔RぱNX:B2胃治品灘ぴDEND3

PROCEDUR聡 !》NONTERH,

B£GIN

 UcエPξ DR工VER(P^令LINKFB,ACP)3 P;駆U:

 口ACP恒εN熱首ダ、Lロwx£LS霧P;=P^.頁L斑K εN民

PROCEDURぽ PLAMBDAξ BEGIN Aζ:欝‡3TRUE: P NIL END5

8EGIN (・㈱GIN DRIVεR・)

ACP±属FALS窪:裳宝?:

衰εPεA?

 CAS£〆語㌘?OP

   T宏RH:PTERH7 寵ONTERH;PNONT松RHハ ACTION c PACT工ON, LM8DAξPLAH8DA εND UNTIL P縁N文Lε

PAepフ魯ACP SND∫

8εG抽{舎8斑ΣN£XEごU恒脅)

IN工SYS♪ ORIVER(P,Fψ自}

END:

図一12 ドライバールーチン

図一10オートマトンのグラフ表現と

    計算機内部でのリンク表現      姻碑£綱田;

       ま鋼sn侶o島宕d1硯3

      外部→内部変換手続 (3)

       卿C¢凶匹々¢ εXεCμTε

        λ      μσcε血尾ε賢εA参s書汲尾ξ鐸・5タ纏妬

       beg         由       (5)

       un己¢4σn 了εs了lx.y;sγ鋪80L),

       6eg《提       頷d,

       ゐをヨば       ロむ

        λ       「    脚蹴ε〜2  ・碕    (2)

;P亀σ寘セ二¢卯1vε灼  ¢n㎡、       (4)

       6蟹栖      ⑳由 λ      6,9{同

        i       (1)

       Pξ・稔cぴふ萄

図一董董図1の内部表現       図一穏 本システムのプログラムの構造

(6)

88

 3.3. アクションルーチン      {…………・……・…・帥………⇒

      くカ ヨ ムけ しロユ       カバ  オートマトンの外部表現におけるアクションを定義す     (……台…★★音……★…………★★ 杜含……       ドおウリ

       ヨ ロへ  おスハば しぽエハるプログラムをアクションルーチンと呼ぶ。このアク    丁漂1::漂蒜昔:、。り←_②

シ。ンは,実際には3.1節で述べたようにそれぞ嬬号  竃漂蹴・亨己=⑨

       ロじむ  ヤハづけられている。      :8‖1翌ii;i 5) c° S⑰{2・3 + } c°NS烈13 5) c°NST 2 2)

       CONSTN{S,6,9), CONSTT{6,?,,★.,ハ CONSTN(7ワ8,9): CONSTA{8,6.3)7       むハ  しくる ハ

 アクションルーチンは次のようにして書かれる。(今     ε朧蒜i;:{》::?:;;ε蒜瑞呈:};:}1;,。。S。。、、、,n,甲,、

      くハ  ぼしくエユハハ まで扱ってきた逆ポーランド記法変換のオートマトンを     ,。:: EC°NST EXECUTE

例にとる。)       (a)

(1)各アクションに対応する手続きを書く。      ・………・………・……・………・

      くの ハ エエむ  むド ロゆば しロエ       ぽハ  procedure A1;       (° の脅 脅… 台舎食゜舎⇔° 台舳}

      PROCEDURE EXECUTE:

  begin writeln(▼ A▼)end;      PR 鷲2呈;Eよ部?1㌍}…H;認:言『呂)。。D、

 procedure A2;       FuN;認鶉:器:i三i迄蔚MI言出38°°LE^N   begin writeln(▼ 十▼)end;       PR(詰¥嵩E譲}↓…(・  パ[ε・D、

      ロほ ぽ ロロロ ムユロ

 procedure A3;       BeGm エTELN(   ◇ )END       ドほ ぽロリ ロ ハヨま

  begin writeln(▼ *▼)end;       8部IN蝋TEL剛   ° )END       PR㏄EDURE PACTION:

       ロロ エド

(2)(1)で作った手続きを呼出す手続を書く。       :?㌃・『:L搬゜F18^1 2 A2 3 A3 END        ボロロフ

 procedure PACTION;      (b)

  begin      図一14   case P↑.ANO of 1:A1;2:A2;3:A3 end;

  P:=P↑.LLINK

  end;       4.字句解析系の作成

       我々は3章で説明した記号処理システムの応用例とし  ここでPACTIONはProcedure Actionの略でドラ   て字句解析系を作成した。この章では字句解析について

イバルーチンはこの手続きを呼出す。P↑.ANOに動作    説明し,次に字句解析系の実際の作成例を紹介する。

を行うアクションの番号が入る。P:ニP↑.LLINKで    4.1.字句解析

次の遷移をたどる。       字句解析はコンパイラにおいて入力テキストを解析し  3.4.本システムの使用法      て入力テキストを構文要素(トークン)に分けることを  この節では以上述べてきたオートマトンモデルの   行う。

UCSD PASCALシステムによる実現と,このモデルの    我々の作成した字句解析系では次のことを行ってい 動かし方について述べる。       る。

 図一14に全体のプログラムの例(逆ポーランド記法変    (1)入力テキストを空白や▼,▼,▼+▼,▼一▼などの「区 換)を示す。ユーザーは(a)と(b)を別のファイルに書き,     切記号」と区切記号にはさまれた文字列に分解し,

(a)のコンパイルと実行を行う。ここで(b)は(a)の①の場所     これを1つの要素(トークン)とする。

に挿入される。(b)は3.3.節で作ったアクションルーチン    (2)入力されたテキストの1つのトークンに対して1 に,手続きEXECUTEの宣言,入力手続きREADSお    つの固定長の記号すなわち不偏記号(uniform よび判定関数TESTを加えたものである。(a)の②の場     symbol)を出力する。(これを不偏記号表という。)

所にはオートマトンの変換手続きが挿入される。③の所    (3)すべての不偏記号が出力された後,不偏記号と にはドライバールーチンと手続きEXCUTEのbegin     トークンの対応表である端記号表を出力する。

からendまでが挿入される。なお,(b)はEXAMPLE1・    この字句解析系は,入力テキストを不偏記号表と端記 A・TESTというファイルに入っていなければならな   号表に変換する記号処理システムと考えることができ い。      る。

(7)

この変換規則はRTFで次のように規定できる。     記号を出力する。[A3]は区切記号でない文字をつない

〈Lexica1>=[AOコ〈text> # [A4〕       でいく。[A4]は端記号表を出力する。[AO]は作業の

〈text>=〈break>*十(〈terminal>〈break>)*     準備を行う。

〈break>=(〈blank>+〈break symbol>)[A1]     4.2.字句解析系の実際

〈teminal>=(〈termsymb◎1>つ  [A2]        4.L節で述べた字句解析を定義するRTFから,オー

〈blank>=▼L」▼+             トマトンの外部表現とアクシヨンに対応するプログラム

〈bre故§ymbol>=▼+Ψ+▼一亨+▼騨+....    を作り,これを3章で述べたようにして,1っのプログ   〈termsymbol>=       ラムにまとめる。このプログラムを図一15で示す。この字        ( A +1B +…+1Z 一ピ◎ 牛11 Ψ…)[A3]   句解析系を動作させた結果を図一16に示す。(a)が入力テ ここで[A1]は区切記号に対する不偏語号を出力し,   キストであり,(b)が不偏記号表,(c)が端記号表である。

[A2]は区切記号にかこまれた文字列に対応する不偏   なお不偏記号は整数としている。

★★★★口 口★★杜★冑口 口★帥★禽 ★⇔★ ★★★ ★禽軸★★★)

{:★ξ書昔告・ξ殼§ξ・★輔杜… 鱈始・★・口⇔蝋・ 舳・鍾・・杜⇔ね・… .繰:{

      {合SS+舎}

      PROGRAH LEXICAL 3       TYPE SYMBOL〈㎜:

      {禽$X ACP.GROUP.「rEXT ★)

      {吉S工 る培XΣC品.A.「PgX「ξ ★}

      {糞sl I>R工v2R.「P芭x㌘ ★)

      BEGIN       BCONST3

      CON$「PA(20021,0)3CONSIrN(21,22,1,}3CONS「西{22.23,1書り3CON5「rA{23,24,4);

      c◎NS「PΣ虜{24}き

      CONS「魏9{1,1,3)∫CONS「罰悼{】L,2ρ4);CONS「rN{2,又,3}3       CONS「rL(5)5

      CONSΨN(3,5,10)3CONSTN(3ワ5,12)‡

      CON$「rL(5)7

      c◎N$烈《4ぴ?,14)3c◎NS「灘{ヲま了,14):c◎NS「TA{?,8ま2きξ       CONS響L{8)7

      CONS㊥r(10,11,・ り7CONSTT{11,11,, り;

      CONS『PL(11}3       CON8㌘A(13,6,1),

      C◎NS「PT{12 ユ3 ・=.}:CONS「PT{12,駕3,・〈・}:CONS「惚{12,13択台〉.}3C◎NS「T「夢{12タ133・{・)3       C◎NS望哩{12■13 ・}田);CONS「P㌘{12i,33,・÷台}3C◇NS蛭{12,13,8★蓼}3¢()NS手璽{12タ13,自一目)#

      CONS「P「r(12 13ρパリ;CONSTT(12,13パ】・》3CONSTT{12,13,・.り3C◎NSTT{12,13,・,り3       CONS㌘T(12,13, ?.)3CONSTT(12,13,㌧・),CONSTT(12,13,・,り;CONSTT(12,13,・1りp       CON8㍗r(12 13 S 1;CONS冊(12,13, )3CONSTT(12,13,・&り,CONSTT(12,13,・^り7       C◎NS三!「r{12 139・e・):C◎NS「惚{12,13,・/・);C◎Nsrrr【「(12 ユ.3才 8・・)5

      c◎NS「PL{6ハ:

      CONS¢A{15.16,3},

      CONS娩(14,15ワ・A.)3CONSTT{14,15,・B・,;CONSTT⊂14γ15,・Cり5CONSTrr{14.15σ・D.}3       CON$「rT(14,15,・E.)3CON$TT(14,15,・P・),CONSTT(14,15,.G.},CONSTT(14〆15,・Hリラ       CONSIPT(14,15,,1,)3CONS惚哩{14,15,.」・,3CONSTrP(14,15,・Xり3CONS!PT{14,15謬 L・}タ

.       C◎繋S「惚{1も152苗材・);e◎NS賛{14ひ].5虜9Nま)きC◇NS「惚{14汐又§夕浪Oつ3CON§「惚{ユ4タ15,曽Pき)き       CONS「r㌘{14 15 ・Q曇};C◎NsrΣrr{14,15,タR含}3C◎NsrP㌘(14,3.5,°S漠}3C◎Nsr惚(].4,15.・rlr.}ヲ       CON8「rT(14,15, U・}3CON$TT{14ワ15,・V.);COSSTT(14,15,.Wl},CONSTT(14ρ15,・Xり3       CON8「P「P(14,15,IY.)3COWl$う門P{14,16,.Z.,3

      CON$唖(14,15,.0.)3CONSTT(14,15,・1り;CONSTT(14,15,.2り;CONSTT(14〃15汐・3・)3       CONS惚{14 15汐84s海CONS「樫縫44Sθカ5 )ξC◇艮S蛭{3.4タコ.三〜,き6つ3¢ζボS「鯉α4タ15,97カ)7       C◎Nsr鯉{14,15,蓼8.)zCONsr躍{14PIS,・9ま};

      CONS「rL(16}3       P言繍BCONST5EX8CUTE       END.

・       図一15①

(8)

90

艦;;;==;;:;ご…一………・一一…一一含:; 瓢ξSSI°N>:〔:1器き1;{:許㌫;・ζ・・,

(● ★禽金★ 金 宥 禽★ ・⇔ ⇔★ ★⇔★ ⇔金 ★ 禽★ ★}      <FACTOR>    =・A・+・(,<EXPRESSION>1)1 7        e      ・

PR㏄EDURεEX㏄UTE @       (a)入力テキスト

 TYPE TOKEN=ARRAY【1..311 0P CHAR r      PTABLE=^TABLE:

     TABLE ロRECORD LETTER ,TOKEN;

      NUHBER :INTEG巳R;       2       NEXT   3 PTABL8      3        4        END:

       5       14

 VARエNTEXT,usT,TERMT‡TEXT,      2      B1

    §=ε:;9鷺 ・・…,一,−N−A…,   1   :。,R。SS、。N  呈;

 PR㏄EDuRE R8ADs(vハR cHεsYHBoL),      7       >       B4    B呂GIN       8      =      B5

    1F:2T,5霊漂器㍑認8部IN      9    TERM   ・ ・6

         B㏄エNR脚LNIINT蜘)3R顕D{INTEXT,CH)εND         8      <        B7

       ELSE READ{INTEXT,C川,      2       1       B8        脚RITELN(C田      6      +       Bg

   EN;ワD       4     }      B10

       10      ★       ・Bll  FuNcTloN TEs「「(x Y;sYHBoLhBooLEAN5       11      「      B12

   B㏄1N TEsT・=(x−Y l宮NDピ       12      FACTOR      I13

 PRocEDuRE ExPAND(A‡ToKEN)3      .      2       A       114    VAR NH31NTEGER 8      6

   B爾1器HN::≡;1‖;: :9H§盟主;7N酬TEXP^ND,,       4     (C)端記号表

      LETTER 害A7       ・       NUMBERcエNH3 NEXT;=NIL:      ・     END, TEND^.NEXT 3ヨTEXPAND       °    ENDハ       .

FU P呈OI;彊欝 ::;塁盟;;!°OL助N;  』       (b)不偏記号表

『;::::王R:言,31D。。,.T AND(A【、】。Bl、D、      図一16

   1」TES「rc=NOT T        END

FUNCTION SEARCH{A:TOKEN)31NT8GER∫

 B㌢1:AND{A),TS隙CH,=TB㏄、N,       5.あとがき

   隠HILE LTEST(A.TSEARCH^.LETTER} DO TSεUCH:治TSEARCH^.NEXT;

   SEARCH‡冒TSEARCH^.NUMBER:

,。;:でS蹴CH〈>TEXPA D THEN T『XPAND 字TEND ELSE TEND 3覗XPA D    本システムではオートマトンをプログラムの一部とし

PR°YU監蒜畿1;      て組み込んだが,本来ならば外部から入力されるべきも

   BEGIN POR I‡牢1 TO 31 DO STRING【113ヨ. ・F SPOINT‡=1 END5

PR㏄肋戚ぬ。。, .       のである。現在,オートマトンの外部表現を外部から読

   V禄 X‡INTEGER,

   B㏄IN X 字SEARCH(STRING、 脈1TRtN 「肌x)TF「 陀^ c削n        み込んで内部表現に変換して読み込む手続きを開発中で PROCEDURE AO,

  ,㌫NI31NTEGER        ある。

   RESET(INTEXT, I YAMA2:工NTEXT.TEXT I}3

   ;;蒜;:(US.,・,楓、,UST.。,、,,)、      今後は本システムを使用して,字句解析の次の段階で

   CLEARS  STRUNG【1】3・, 1, STRINGl31】:エIB㌧

   N翌1:器鰹↓橿1;2、丁眠IN^D°B㏄IN      ある構文解析系を作成し,最終的にはRTFを入力し,そ  1

     NUMBER 3エ13

   ,ぽ驚識き1       の動作を行う機械を出力させる言語自動生成系を作成す

   TEND 2■TBEGIN;

  卵D        る予定である。

POCEDURE A1,

B斑XN@CLEARS3 STRエNG【11 べH STRINGI31】・ B ,甑RK END・       なお本稿で与えたオートマトンモデル,すなわち順序   

PR㏄EDURE J、23      噛

B㏄IN@STRING【311・3 1 ・ぬ・・E・D・      機械の多重システムは,我々の研究室で与えた再帰降下

PR㏄8DURE A31

眠IN@STRING【SP°INT】cヰH・SP°INT・ヨSP°INT+1 END・         順序変換機系1}に当たる。

PROCEDURE A47  V瓦R LJ.K‡1NTEGER:

 BEGIN

   晶謡摺纈㍑湾㍊1::識:i㌫壬㌣ぴ       参 考 文 献

   蒜:::::;≡:㌫:鷺:TS脚CH,。TBEG、N、       1)安在,潮崎: 再帰降下順序変換機系とその生成機械    FOR K言■1「rO J DO BEGIN

    ㌫。1;;≧}ID°.擦認ε黙61:部・・…ER・・…   電子通信学会論趣63−D・9・PP・771−778(N°v・1980)・

   EN;1隙cH;=TsEucH^・NExT      2)Lewi・J・・et al・tぐA Programming Methodology in    ㌫::漂号器6L器隻1↓Al合篇;llり       Compiler Construction, North−Holland(1979).

囲D @        ・       3)安在他:. 半線形代数フ 第1報〜第8報,信学技法

PROCEDURE PACTION:

 B㏄xN 、      AL801−60,61,62, AI.81−4,5,38,39,74(1981)

,,il三5=°F°:A° 13A1 2ξA2 A3 4‡{    4)D・. K・nn・・h他⊇智他訳・UCSD PASCA・・Mシス

       テム入門J,JBA,(1980)

      5)米田,疋田「PASCALプログラミング」,サイエンス社,

図一15②  (1979)6)中田育男「コンパイラ」,産業図書,(1981)

7)Donovan著,池田訳「システム・プログラムII」,日本  コンピュータ協会,(1976).

参照

関連したドキュメント

実装と評価 4.1 実装 TEBA を拡張することで,本手法を実現した.

バがメールを受信した時に、受信したメールデ

Force

多機能といった特徴を持ち、しかも高速・複 雑なデジタル信号処理システムを応用した製 品を迅速・安価に開発するには、FPGA (Field

したがって,記号論理学は,計算機の理論的な基礎であると言える。また,Lispや Prolog

による自然演繹の体系として与えられる。 これは、適

が措定され、それを含めて記号要素は、3

この問題を解決するためには,データを復号することな