JPH01298439A - リスト解析装置 - Google Patents

リスト解析装置

Info

Publication number
JPH01298439A
JPH01298439A JP63130624A JP13062488A JPH01298439A JP H01298439 A JPH01298439 A JP H01298439A JP 63130624 A JP63130624 A JP 63130624A JP 13062488 A JP13062488 A JP 13062488A JP H01298439 A JPH01298439 A JP H01298439A
Authority
JP
Japan
Prior art keywords
list
language
address
section
analysis
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
JP63130624A
Other languages
English (en)
Inventor
Atsushi Ando
安藤 敦史
Yoshihiro Hayakawa
早川 佳宏
Satoshi Sekine
聡 関根
Kenichi Ueda
謙一 上田
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.)
Panasonic Holdings Corp
Original Assignee
Matsushita Electric Industrial Co Ltd
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 Matsushita Electric Industrial Co Ltd filed Critical Matsushita Electric Industrial Co Ltd
Priority to JP63130624A priority Critical patent/JPH01298439A/ja
Publication of JPH01298439A publication Critical patent/JPH01298439A/ja
Pending legal-status Critical Current

Links

Landscapes

  • Devices For Executing Special Programs (AREA)

Abstract

(57)【要約】本公報は電子出願前の出願データであるた
め要約のデータは記録されません。

Description

【発明の詳細な説明】 産業上の利用分野 本発明は電子計算機上のリストデータな解析するリスト
解析装置に関するものである。
従来の技術 近年、人工知能技術の研究開発が盛んに行われ、その成
果の一部が実用化されはじめてきている。
研究ならびに開発段階ではプログラミング言語としてリ
スプ(以下LISPと記す。)が多く利用されている。
LISPはリストと呼ばれる柔軟な構造のデータを処理
するため、プログラミングの記述が容易である言語であ
る。しかし、使用者にとって柔軟であるデータも計算機
内部では非常に複雑な構造である。その結果LISP処
理系では、データの型判定や複雑なデータ処理を行わな
ければならず処理速度が遅い。そこで実用化の際には、
LISPで記述されたプログラムをC言語、アセンブリ
言語等、処理速度の速い他言語で記述し直して、実用的
な処理速度を得ることが多い。
このとき扱うデータは、LISP処理系で扱うデータ(
リスト)と同一の構造であるほうが適している場合があ
り、従って、リストの内容や構造を、プログラムと同様
、他言語で記述し直さなければならない。
リストは一般に第6図(a)に示すような8式と呼ばれ
る形で表される。また計算機内部のデータ構造は第5図
(b)に示すように、アトム(第5図、6a1〜6a6
)をコンスセルと呼ばれる二進水(第6図、5c1〜6
c6)により再帰的に連結したものである。一般にアト
ムにはシンボル、文字列、配列、数値等の型とN I 
L、Tと呼ばれる特殊データがあり、それぞれの型に応
じて様々な情報を構造体で管理している。リストがLI
SP処理系で処理される過程で、アトムには種々の環境
情報が付加される。
リストを他言語で記述する場合、アトムに付加されてい
る環境情報も記述しなければならない場合が少なくない
。しかしこの環境情報は、多くの場合複雑なリスト構造
であり、さらに、その内容は処理の過程で動的に変化す
るため、第6図(a)のような8式から環境情報の内容
と構造を直接的に知ることは困難である。
従来はプログラムが処理の流れにしたがって、リストの
内容、アトムに付加される環境情報の変化を追跡しなが
ら、目的リストの計算機内部での構造を解析し、その結
果に基づき、目的リストを他言語で記述している。
発明が解決しようとする課題 しかし従来のような、人手によるリストの解析と他言語
への書き替えでは、多大な時間を要し。
さらに、人為的誤りが入る可能性が高い、という課題が
あった。
本発明は以上のような課題に鑑み、自動的にリストの解
析と他言語への書き替えを行うことの出来るリスト解析
装置の提供を目的としている。
課題を解決するための手段 本発明は、リストをLISP処理するL I S P処
理部と、リストの解析を行う解析部と、前記解析部によ
る解析結果に基づいて、他言語でリストを記述したコー
ドを生成するコード生成部と、使用者とのインターフェ
イスな行う入出力部と、処理の過程で適宜データを格納
する記憶部とを備えることによって、上記目的を達成す
る。
作用 上記構成において、本発明は入出力部を介して入力され
たリストを、同じく入出力部を介して入力されたプログ
ラムに従って、LISP処理部で処理し、結果を記憶部
に格納する。次に、処理されたリストの内容と構造を解
析部で解析し、結果を記憶部に格納する。次に、記憶部
に格納された解析結果からコード生成部が目的の他言語
でリストを記述し、記憶部に格納する。以上の作業を中
央処理部の制御によって自動的に行う。使用者は入出力
部を介して他言語で記述されたリストを得る。
実施例 以下、本発明の一実施例について図面を参照しながら作
用とともに説明する。
第1図は、本発明の、リストをC言語で記述する場合の
一実施例のリスト解析装置のブロック図である。
第5図(a)に示すような8式で表されたリストを入出
力部1cから入力し、LISP処理部1bでLISP処
理する。そして第6図(b)に示すような計算機の内部
表現に変換して、記憶部1fに格納する。このとき、リ
ストを構成している個々のアトムには、それぞれ必要と
される環境情報も付加される。
次に、解析部1Cにおいて、指定されたリストの解析を
行う。解析は、指定されたリストの構成要素(コンスセ
ルとアトム)、ならびにアトムに付加された環境情報な
再帰的にたどることによって、コンスセルの数、アトム
の種類と数を解析する。
以下、解析部1Cの動作を、第2図に示す解析部1cの
ブロック図に基づいて説明する。第2図において、2a
はアドレス判定部、2bはアドレスの表、2cは型を判
定する型判定部、2dは計数表、2cは走査部、2fは
型構造情報、2gはスタックメモリである。アドレス表
2b、計数表2d。
型構造情報2f、スタック2gは第1図に示す記憶部1
f上に適宜設けられる。アドレス表2bには、既に解析
されたコンスセル又はアトムのアドレスが登録されてい
る。計数表2dには、リストを構成するコンスセルの数
、アトムの種類と数が登録されている。型構造情報2f
にはコンスセルやアトムの基本構造に関する情報があら
かじめ入力されている。スタック2gは先入れ後出し方
式の記憶装置である。
今第1図に示す記憶部1fに格納されたリストの先頭に
ある要素のアドレスをアドレス判定部2aに入力する。
アドレス判定部2aでは、重複して解析を行わないため
にアドレス表2bを参照して、入力されタアトレスが既
に解析されたコンスセル又はアトムのアドレスであるか
否かを判定する。既に解析されている場合には、走査部
2eに対して次に処理を行うように信号を送る。解析さ
れていない場合には、アドレスをアドレス表2bに登録
した後、型判定部2cにそのアドレスを入力する。
型判定部2cでは、入力されたアドレスにある要素の型
を判定して計数表2dに登録した後、走査部2eにその
アドレスと型情報を入力する。
走査部2eは、型構造情報2f内の情報を基に、現在入
力されたアドレスにある要素に、他の要素又は他のリス
トへのポインタが含まれているか否かを調べる。N個(
Nは自然数)のポインタが含まれている場合には、現在
入力されたアドレスにある要素より・も先に、ポインタ
で指されている全ての要素又はリストを解析する。そこ
で現在入力されたアドレスをスタック2gに格納し、次
に(N−1)個の要素又はリストのアドレスをポインタ
から求め、それらをスタック2gに逐次格納し、残った
1個の要素又はリストのアドレスをアドレス判定部2a
に入力する。ポインタが含、まれでいない場合、又はア
ドレス判定部2aから次の処理に移行することを表す信
号が入力された場合には、スタック2gから直前に入力
されたアドレスを取り出し、アドレス判定部2aに入力
する。
スタック2gが空である場合には解析を終了する。
次に、コード生成部1dにおいて、解析部1cからの解
析結果に基づいて、リストなC言語で記述したコードを
生成する。
以下、コード生成部1dの動作を第3図と第4図を用い
て説明する。第3図は生成されたコードの概略図で、リ
ストの構成要素の型宣言を行う宣言部分3aと各構成要
素の内容を定義する関数部3bから構成されている。第
4図はコード生成部1dの構造を示すブロック図である
。第4図において、4aは宣言部、4bは計数表、4c
は定義を行う定義部、4dは型構造情報、4eはアドレ
ス表、4fはスタックメモリ、4gはコード格納ファイ
ルである。計数表4b、アドレス表4e、型構造情報4
d、スタック4f、コード格納ファイル4gは第1図に
示す記憶部1f上に適宜設けられる。計数表4bと型構
造情報4dはそれぞれ第2図に示す計数表2d、−型構
造情報2fと同一の内容である。また、アドレス表4e
とスタック4fはそれぞれ第2図に示すアドレス表2b
、スタック2gと同一の目的で使用される。
ここで宣言部4aは、まず始めに、各構成要素を表わす
構造体が定義されているヘッダファイルの包含(第3図
、3a1)を生成する。次に、第1図に示す解析部1c
によって作られた計数表4bから構成要素の種類と数を
読み取り、第3図に示す宣言部分3a2を生成する。最
後に、第3図に示す関数部3bの関数名(第3図、3b
1)を生成した後、生成したコードをコード格納ファイ
ル4gに格納する。格納が終わると、第1図に示す記憶
部1rに格納したリストの先頭にある要素のアドレスを
定義部4cへ入力する。
定義部4cでは、以下に述べるように、要素な再帰的に
たどりながら要素をC言語で記述し、要素を連結する。
そして生成したコードなコード格納ファイル4gに格納
する。
入力されたアドレスにある要素の型判定を行った後、型
構造情報4d内の情報を基に、当該要素に、他の要素又
は他のリストへのポインタが含まれているか否かを調べ
る。ポインタが含まれている場合には、個々のポインタ
で指されている要素又はリストがC言語で記述されてい
るか否かを、アドレス表4eを用いて調べる。
全ての要素又はリストが既にC言語で記述されている場
合には、型構造情報4d内にある要素の雛形を用いて入
力されたアドレスにある要素なC言語で記述する。その
ときには、ポインタで指された要素のC言語による表記
をアドレス表4eから取り出し、またポインタ以外の情
報は、要素を表す記憶部1r(第1図)上の構造体の内
容を直接参照して得る。記述が終わると、入力されたア
ドレスとそれに対応した要素のC言語による表記を対に
してアトし・ス表4eに登録する。次に、スタック4f
から直前に入力されたアドレスを取り出し、定義部4c
に入力する。スタック4fが空である場合には、関数の
終わりを示すコード(第3図、3b3)を生成して、処
理を終了する。
一部の要素又はリストがまだC言語で記述されていない
場合には、現在入力されたアドレスにある要素よりも先
に、またC言語で記述されていない要素又はリストの記
述を行う。そこで現在入力されたアドレスをスタック4
fに格納し、次に、記述しようとする要素又はリストの
アドレスをポインタより求め、それらをスタック4fに
逐次格納する。そして、スタック4fから一つのアドレ
スを取り出し、定義部4cに入力する。
ポインタが含まれていない場合には、型構造情報4dを
基に、記憶部1f(第1図)上の構造体の内容を直接参
照して、入力されたアドレスにあろ要素なC言語で記述
し、さらに、入力されたアドレスと要素のC言語による
表記を対にしてアドレス表4cに登録する。次に、スタ
ック4fから直前に入力されたアドレスな取り出し、定
義部4cに入力する。スタック4fが空である場合には
、関数の終わりを示すコード(第3図、3b3)を生成
して、処理を終了する。
以上で、リストの解析とC言語によるリストの記述を終
了する。使用者は生成されたコードな入出力部1eを介
して得ることができる。
発明の詳細 な説明したように、本発明によると、リストの解析と他
言語への書き替えを自動的に行うことができ、また他言
語によるリストの正確な記述?短時間で得ろことができ
るので誤りも発生しないという効果がある。
【図面の簡単な説明】
第1図は本発明の一実施例におけるリスト解析装置を示
したブロック図、第2図は本発明の一実施例における解
析部のブロック図、第3図は本発明の一実施例における
コード生成部により生成されたコードの概略コード図、
第4図は本発明の一実施例におけるコード生成部のブロ
ック図、第5図(a)、(b)は8式によるリストの表
現と一般的な内部表現を示すブロック図である。 1a・・・中央処理部、1b・・LISP処理部、1c
・・・解析部、1d・・コード生成部、1e・・入出力
部、1r・・・記憶部。 代理人の氏名 弁理士 中 尾 敏 男 ほか1名第1
図 N2図 第3図 第4図 第5図 (Q) 5oz     5a3

Claims (1)

    【特許請求の範囲】
  1. リストをLISP処理するLISP処理部と、リストの
    解析を行う解析部と、前記解析部による解析結果に基づ
    いて、他言語でリストを記述したコードを生成するコー
    ド生成部と、使用者とのインターフェイスを行う入出力
    部と、処理の過程で適宜データを格納する記憶部とを備
    えたことを特徴とするリスト解析装置。
JP63130624A 1988-05-27 1988-05-27 リスト解析装置 Pending JPH01298439A (ja)

Priority Applications (1)

Application Number Priority Date Filing Date Title
JP63130624A JPH01298439A (ja) 1988-05-27 1988-05-27 リスト解析装置

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
JP63130624A JPH01298439A (ja) 1988-05-27 1988-05-27 リスト解析装置

Publications (1)

Publication Number Publication Date
JPH01298439A true JPH01298439A (ja) 1989-12-01

Family

ID=15038688

Family Applications (1)

Application Number Title Priority Date Filing Date
JP63130624A Pending JPH01298439A (ja) 1988-05-27 1988-05-27 リスト解析装置

Country Status (1)

Country Link
JP (1) JPH01298439A (ja)

Similar Documents

Publication Publication Date Title
CN109614329B (zh) 一种基于接口控制文件的软件测试用例辅助设计方法
CN113687817A (zh) 一种消息格式解析器及解析方法
JP3205406B2 (ja) 参照対象変数決定処理方法および翻訳処理システム
US5379407A (en) Error handling in a state-free system
JPH0916382A (ja) プログラム開発支援システム
JPH01298439A (ja) リスト解析装置
CN111708572B (zh) 一种基于Clang程序结构的控制流程图自动生成方法
Kuno The augmented predictive analyzer for context-free languages—its relative efficiency
JP2811804B2 (ja) 変数出力範囲指定方式
JPH042961B2 (ja)
KR970011897B1 (ko) 언어해석 처리장치
JPS60157639A (ja) プログラム編集方法
KR100279731B1 (ko) 칠 언어에 대한 제어 흐름 표시방법
CN116185415A (zh) 一种JSP页面转Thymeleaf页面的转换方法及装置
JP2721377B2 (ja) Basicプログラム圧縮方法
JPS61234435A (ja) プログラム開発支援方式
JP2999654B2 (ja) 端末装置
Hong et al. Integrated software development environment based on CCITT/SDL for telecommunication systems
JPH04229343A (ja) 対話型デバッガにおけるメモリ内容表示方式
Jameson A Software Engineering Environment
CN111190872A (zh) 一种可继承可扩展的数据处理方法及其对解析日志的应用
JPH01222333A (ja) 書式なし出力文処理方式
JPH05127885A (ja) 処理フロー図変換方式
JPH0731594B2 (ja) プログラム情報解析処理装置
JPH02308355A (ja) インタプリタにおける入力手続き管理方式