KR100279731B1 - How to Display Control Flow for Fill Languages - Google Patents

How to Display Control Flow for Fill Languages Download PDF

Info

Publication number
KR100279731B1
KR100279731B1 KR1019970065708A KR19970065708A KR100279731B1 KR 100279731 B1 KR100279731 B1 KR 100279731B1 KR 1019970065708 A KR1019970065708 A KR 1019970065708A KR 19970065708 A KR19970065708 A KR 19970065708A KR 100279731 B1 KR100279731 B1 KR 100279731B1
Authority
KR
South Korea
Prior art keywords
node
information
program
null
control flow
Prior art date
Application number
KR1019970065708A
Other languages
Korean (ko)
Other versions
KR19990047347A (en
Inventor
이동길
이수현
김상국
정민수
Original Assignee
이계철
한국전기통신공사
정선종
한국전자통신연구원
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 이계철, 한국전기통신공사, 정선종, 한국전자통신연구원 filed Critical 이계철
Priority to KR1019970065708A priority Critical patent/KR100279731B1/en
Publication of KR19990047347A publication Critical patent/KR19990047347A/en
Application granted granted Critical
Publication of KR100279731B1 publication Critical patent/KR100279731B1/en

Links

Images

Landscapes

  • Engineering & Computer Science (AREA)
  • Software Systems (AREA)
  • General Engineering & Computer Science (AREA)
  • Theoretical Computer Science (AREA)
  • Debugging And Monitoring (AREA)
  • Stored Programmes (AREA)
  • Physics & Mathematics (AREA)
  • General Physics & Mathematics (AREA)
  • Computing Systems (AREA)

Abstract

본 발명은 칠(CHILL) 언어로 프로그램 되는 교환기용 소프트웨어에서 프로그램의 실행 순서를 분석할 수 있는 제어 흐름을 표시해 주는 칠 언어에 대한 제어 흐름 표시방법에 관한 것으로서, 단위 프로그램 내의 모듈리언과 블록에 대한 처리를 하고, 모듈리언과 블록 내의 실행문에 대한 처리를 한 후, 각 노드에 대한 인덴테이션 처리를 하고, 연결 리스트의 각 노드에 대한 출력을 하는 칠 언어에 대한 제어 흐름 표시방법을 제공함으로써, 입력 칠 소스 프로그램의 가시성 구조와 병행성에 따른 제어 흐름 그리고, 실행문들간의 내포 관계를 시각적으로 인덴테이션하여 개발자로 하여금 프로그램의 전체 흐름 및 실행문들간의 관계를 명확하게 이해할 수 있도록하여, 보다 신뢰성 높은 칠 프로그램을 작성할 수 있고, 제어 흐름 분석을 통해 소프트웨어의 품질을 향상시킬 수 있는 효과가 있다.The present invention relates to a control flow display method for a fill language for displaying a control flow for analyzing an execution order of a program in an exchange software programmed in a fill language. By providing a control flow display method for the seven languages that perform the processing, the module and the execution statement in the block, indentation for each node, and output to each node of the linked list, Visually indent the control structure according to the visibility structure and concurrency of the input chill source program, and the nesting relationships between the execution statements, so that the developer can clearly understand the overall flow of the program and the relationship between the execution statements, thereby making it more reliable. High fill program and control flow analysis This has the effect of improving quality.

Description

칠 언어에 대한 제어 흐름 표시방법How to Display Control Flow for Fill Languages

본 발명은 칠(CHILL) 언어로 프로그램 되는 교환기용 소프트웨어의 제어 흐름을 표시해 주는 방법에 관한 것으로서, 특히, 프로그램의 실행 순서를 분석할 수 있는 제어 흐름을 표시해 주는 칠 언어에 대한 제어 흐름 표시방법에 관한 것이다.The present invention relates to a method for displaying a control flow of an exchange software programmed in a CHILL language. In particular, the present invention relates to a control flow display method for a fill language for displaying a control flow capable of analyzing a program execution order. It is about.

교환기용 소프트웨어 제작을 위한 고급 프로그래밍 언어인 칠은 기존의 프로그래밍 언어가 가지는 대부분의 기능을 포함하는 크고 복잡한 언어로서, 신뢰성 보장, 효율적인 목적 코드의 생성과 변경 및 추가의 용이성을 고려하여 설계되었다. 현재 교환기에 사용되는 소프트웨어의 많은 부분이 칠 언어로 작성되고 있다. 교환기는 신뢰성이 높아야 한다는 제약이 있으므로 칠 프로그램 역시 오류를 포함해서는 안된다. 신뢰성이 높은 프로그램을 작성하기 위해서는 오류 발생 가능성이 있는 부분을 찾아서 수정하는 작업이 필요하다.Chil, a high-level programming language for making switch software, is a large and complex language that includes most of the features of existing programming languages. It is designed with reliability, efficiency, and ease of generation and modification of object code. Much of the software currently used in exchanges is written in seven languages. The exchanger must be highly reliable, so the chilling program must not contain any errors. In order to write a highly reliable program, it is necessary to find and correct the parts that may be in error.

종래에는 상기와 같은 오류 발생의 방지 및 수정을 위해서, 올바르지 않게 작동하는 프로그램의 오류를 찾아내는 방법으로 디버거(debugger)를 사용하였다. 디버거는 오류 수정을 위한 강력하고 필수적인 도구이기는 하지만, 프로그램의 실행을 추적하면서 오류 수정을 해야 하는 부담을 가진다. 따라서, 상기 디버거의 단점을 개선하여 프로그램의 신뢰성을 높이는 또 다른 방법으로 프로그램 내의 호출 관계나 제어 구조를 분석하여 출력해 주는 프로그램들을 사용하여 프로그램을 구조화(structuring)하였다. 구조화된 프로그램은 이해하기 쉽고 오류의 가능성을 줄여 준다.In the past, a debugger was used as a method of detecting an error of a program that is operating incorrectly in order to prevent and correct an error. The debugger is a powerful and essential tool for error correction, but it also puts the burden of error correction as you track program execution. Therefore, as another method of improving the reliability of the program by improving the shortcomings of the debugger, the program is structured using programs that analyze and output a call relationship or a control structure in the program. Structured programs are easy to understand and reduce the likelihood of errors.

그러나, 상기와 같은 종래의 디버거 또는 프로그램을 구조화하는 프로그램들은 칠 언어가 갖는 가시성 구조나 병행성 구조를 고려하지 않아 소프트웨어 개발자가 프로그램의 전체 흐름 및 실행문들간의 관계를 이해하는데 어려움이 있다.However, such a conventional debugger or a program structuring a program does not consider the visibility structure or the parallel structure of the seven languages, so that it is difficult for a software developer to understand the relationship between the entire flow and execution statements of the program.

상기 문제점을 해결하기 위해 본 발명은, 단위 프로그램 내의 모듈리언과 블록에 대한 처리를 하고, 모듈리언과 블록 내의 실행문에 대한 처리를 한 후, 각 노드에 대한 인덴테이션 처리를 하고, 연결 리스트의 각 노드에 대한 출력을 하는 칠 언어에 대한 제어 흐름 표시방법을 제공하여, 입력 칠 소스 프로그램의 가시성 구조와 병행성에 따른 제어 흐름 그리고, 실행문들간의 내포 관계를 시각적으로 인덴테이션하여 개발자로 하여금 프로그램의 전체 흐름 및 샐행문들간의 관계를 명확하게 이해할 수 있도록하는데 그 목적이 있다.In order to solve the above problems, the present invention, after processing the module and the block in the unit program, the processing of the execution statement in the module and the block, indentation processing for each node, By providing a control flow display method for the fill language that outputs to each node, the developer visually indents the visibility structure of the input fill source program, the control flow according to the concurrency, and the nesting relationship between execution statements. Its purpose is to provide a clear understanding of the overall flow and relationships between Sal statements.

도 1은 본 발명이 적용되는 하드웨어 시스템 구성도,1 is a hardware system configuration to which the present invention is applied,

도 2는 본 발명에 따른 칠 컴파일러 전단부의 내부 구성도,2 is an internal configuration diagram of a chill compiler front end according to the present invention;

도 3은 도 2의 제어 흐름 분석부에 있는 제어 흐름 표시기의 전체적인 흐름도,3 is an overall flowchart of a control flow indicator in the control flow analyzer of FIG. 2;

도 4는 도 3의 모듈리언과 블록 정보 탐색 단계에 대한 상세 처리 흐름도,4 is a detailed process flowchart of the modular and block information search step of FIG. 3;

도 5는 도 3의 모듈리언과 블록내 실행문의 정보 탐색 단계에 대한 상세 처리 흐름도,FIG. 5 is a detailed processing flowchart of the information search step of the modular and intra-block execution statements of FIG. 3; FIG.

도 6은 도 3의 각 노드에 대한 인덴트 값 설정 단계에 대한 상세 처리 흐름도,FIG. 6 is a detailed process flowchart of an indent value setting step for each node of FIG. 3;

도 7은 도 3의 제어 흐름 구조에 대한 진단 결과 출력 단계의 상세 처리 흐름도.7 is a detailed processing flowchart of a diagnostic result output step for the control flow structure of FIG.

〈도면의 주요 부분에 대한 부호의 설명〉<Explanation of symbols for main parts of drawing>

101 : 메인 메모리 102 : 중앙 처리장치101: main memory 102: central processing unit

103 : 보조 기억장치 104 : 입/출력 장치103: auxiliary memory 104: input / output device

105 : 유닉스 운영체제 106 : 시스템 버스105: Unix Operating System 106: System Bus

본 발명은 칠(CHILL) 언어로 프로그램 되는 교환기용 소프트웨어의 제어 흐름을 표시해 주는 방법에 관한 것으로서, 특히, 프로그램의 실행 순서를 분석할 수 있는 제어 흐름을 표시해 주는 칠 언어에 대한 제어 흐름 표시방법에 관한 것이다.The present invention relates to a method for displaying a control flow of an exchange software programmed in a CHILL language. In particular, the present invention relates to a control flow display method for a fill language for displaying a control flow capable of analyzing a program execution order. It is about.

이하, 첨부된 도면을 참조하여 본 발명의 실시예를 상세히 설명한다.Hereinafter, with reference to the accompanying drawings will be described an embodiment of the present invention;

도 1은 본 발명이 적용되는 하드웨어 시스템 구성도로서, 제어 흐름 표시기를 개발하기 위한 칠 컴파일러가 탑재된 메인 메모리 보드(101)와, 상기 메인 메모리 보드(101)에 탑재된 파일을 실행시키는 중앙 처리 보드(102)와, 하드웨어 시스템의 각 보드 및 장치에서 사용하는 파일 및 데이터 등을 저장하는 보조 기억장치(103)와, 모든 오류 메시지 및 진단 결과들을 입/출력하는 입/출력 장치(104)와, 상기 각 보드 및 장치들을 제어하는 유닉스 운영체제(105)와, 상기 각 보드 및 장치간에 상호 주고받는 메시지나 정보들을 전송해 주는 시스템 버스(106)로 구성된다.1 is a schematic diagram of a hardware system to which the present invention is applied and includes a main memory board 101 equipped with a chill compiler for developing a control flow indicator, and a central processing unit for executing a file mounted on the main memory board 101. Board 102, auxiliary storage 103 for storing files and data used in each board and device of the hardware system, input / output device 104 for inputting / outputting all error messages and diagnostic results, and And a Unix operating system 105 for controlling the boards and devices, and a system bus 106 for transmitting messages and information exchanged between the boards and devices.

도 2는 본 발명에 따른 칠 컴파일러 전단부의 내부 구성도이다.2 is an internal configuration diagram of a chill compiler front end according to the present invention.

먼저, 구문 분석부(201)가 입력 프로그램을 어휘 분석하고 LALR(1) 파싱 방법을 이용하여 구문 분석하면서 심볼 테이블과 추상 구문 트리(Abstract Syntax Tree : AST)를 생성하여 전체 프로그램 구조부(205)에 저장시키고, 가시성 제어부(202)로 출력하면, 가시성 제어부(202)에서는 상기 구문 분석부(201)로부터 출력된 심볼 테이블과 추상 구문 트리의 가시성을 분석하고, GRANT/SEIZE 정보를 이용하여 심볼 테이블을 재구성하며, 의미 분석부(203)는 상기 가시성 제어부(202)에서 출력된 심볼 테이블을 이용하여 프로그램의 의미 분석을 수행한다. 그리고, 제어 흐름 분석부(204)는 컴파일러 전단부에 추가된 형태로 프로그램의 제어 구조에 관하여 입력 소스 프로그램에 대한 호출 관계나 제어 흐름의 골격(skeleton)과 무한 루프나 도달 불능 코드, 불변 부분, 위험한 제어 이동 등에 관한 내용을 정적 시간에 분석하고, 최종적으로 진단 결과 출력부(206)에서 상기 제어 흐름 분석부(204)의 진단 결과를 화면이나 파일로 출력한다.First, the parser 201 lexically analyzes an input program and parses it using a LALR (1) parsing method to generate a symbol table and an abstract syntax tree (AST) to the entire program structure 205. After storing and outputting to the visibility control unit 202, the visibility control unit 202 analyzes the visibility of the symbol table and the abstract syntax tree output from the parser 201, and generates the symbol table using GRANT / SEIZE information. The semantic analysis unit 203 reconstructs the semantic analysis of the program using the symbol table output from the visibility control unit 202. In addition, the control flow analyzer 204 is added to the front end of the compiler in relation to the control structure of the program, the call relationship to the input source program, the skeleton of the control flow, the infinite loop or the unreachable code, the constant part, The contents of the dangerous control movement and the like are analyzed at a static time, and finally, the diagnosis result output unit 206 outputs the diagnosis result of the control flow analyzer 204 to a screen or a file.

도 3은 도 2의 제어 흐름 분석부에 있는 제어 흐름 표시기의 전체적인 흐름도이다.3 is an overall flowchart of a control flow indicator in the control flow analyzer of FIG. 2.

입력된 소스 프로그램은 컴파일러 전단부에 의해 심볼 테이블과 추상 구문 트리 구조가 만들어지는데 추상 구문 트리는 20개의 단위 프로그램 구조로 구성된다. 제어 흐름 표시기에서는 먼저, 20개의 단위 프로그램 탐색이 완료되었는가의 여부를 판단하여(300), 단위 프로그램 탐색이 완료되지 않았을 경우에는 각각의 단위 프로그램 구조를 읽어, 한 개의 단위 프로그램 정보를 읽는다(400). 다음으로, 상기 단계(400)에서 읽은 단위 프로그램과 연관된 추상 구문 트리를 순회하면서 추상 구문 트리를 구성하는 단위 프로그램 내의 모듈리언과 블록의 정보를 탐색하여 연결 리스트에 저장하며(500), 상기 단계(500)와 같은 방법으로 각 모듈리언과 블록 내의 실행문의 첫 위치를 검색하여 실행문중 제어에 영향을 주는 요소들만 탐색하여 그 정보를 연결 리스트에 저장한(600) 후, 상기 단계(300)로 귀환하여 상기 단계들을 반복하여 수행한다. 그리고, 상기 단계(300)에서 단위 프로그램의 탐색이 완료된 경우에는 다음 연결 리스트에 저장된 노드들의 연결 특성을 고려하여 인덴트 값을 설정하고(700), 다음 연결 리스트의 각 노드를 차례대로 읽어서 전체적인 소스 프로그램의 제어 흐름을 시각적으로 인덴테이션 하여 리스트 형식으로 출력한다(800).The input source program is composed of symbol table and abstract syntax tree structure by the compiler front end. The abstract syntax tree is composed of 20 unit program structures. The control flow indicator first determines whether or not the 20 unit program search is completed (300). If the unit program search is not completed, the control flow indicator reads each unit program structure and reads one unit program information (400). . Next, the module searches for the information of the module and block in the unit program constituting the abstract syntax tree while traversing the abstract syntax tree associated with the unit program read in step 400 and stores the information in the linked list (500). In the same manner as in 500), the first position of each execution statement in each module and block is searched, and only the elements affecting the control of the execution statement are stored, and the information is stored in the linked list (600), and then returned to the step (300). Repeat the above steps. When the search of the unit program is completed in step 300, an indentation value is set in consideration of the connection characteristics of the nodes stored in the next connection list (700), and each node of the next connection list is sequentially read to read the entire source. The control flow of the program is visually indented and output in a list format (800).

도 4는 도 3의 모듈리언과 블록 정보 탐색 단계에 대한 상세 처리 흐름도이다.4 is a detailed process flowchart of the modular and block information search step of FIG. 3.

먼저, 추상 구문 트리를 처음부터 검색하여 각 노드의 노드 종류가 모듈리언과 블록인지를 검사하여 현재 노드에 대한 그룹명을 정의한다(501). 여기서, 모듈리언과 블록은 내포 관계 구조이므로 시작 지점과 끝지점을 가진다. 다음으로, 현재 노드의 시작 포인트에 대한 정보를 연결 리스트로 구성할 노드를 생성하여 저장하고, 그 포인트를 연결 리스트에 삽입하며(502), 상기 단계(502)와 같은 방법으로 마지막 포인트에 대한 정보를 연결 리스트로 구성할 노드를 생성하여 연결 리스트에 삽입한다(503).First, an abstract syntax tree is searched from the beginning to check whether the node type of each node is a module and a block, thereby defining a group name for the current node (501). Here, the module and the block have a nesting structure, so they have a starting point and an ending point. Next, create and store a node to configure information about the start point of the current node into a connection list, insert the point into the connection list (502), and the information about the last point in the same manner as in step 502. Generates a node to be configured as a linked list and inserts it into the linked list (503).

도 5는 도 3의 모듈리언과 블록내 실행문의 정보 탐색 단계에 대한 상세 처리 흐름도이다.FIG. 5 is a detailed process flowchart of the information search step of the modularity and intra-block execution statement of FIG. 3.

먼저, 노드 엔트리가 널인가의 여부를 판단하여, 널일 경우에는 종료하고(601), 널이 아닐 경우에는 노드 엔트리가 넌터미널인가의 여부를 판단한다(602). 여기에서 상기 단계(601)에서 노드 엔트리가 널인가의 여부를 판단하는 것은, 추상 구문 트리상의 모든 노드를 검색하여 추상 구문 트리를 구성하는 모듈리언과 블록에 대해서 각각에 대한 실행문의 시작 포인트를 찾기 위한 것이다. 따라서, 상기 단계(602)에서는 상기 단계(601)에서 찾은 시작 포인트를 시발점으로 하여 각 노드 중 넌터미널인 노드만을 찾게 된다. 다음으로, 상기 단계(602)에서 넌터미널일 경우에는 제어에 영향을 주는 요소들만을 탐색하여, 엔트리에 대한 노드를 생성하고, 연결 리스트에 삽입하고(603), 형제 엔트리로 포인트를 재설정하여 추상 구문 트리상의 형제 노드들을 차례로 탐색하면서 나머지 실행에 영향을 주는 노드를 탐색하고, 다시 상기 단계(601)로 귀환하여 노드 엔트리가 널이 될 때까지 상기 단계들을 반복한다(604). 그리고, 상기 단계(602)에서 노드엔트리가 넌터미널이 아닐 경우에도 상기 단계(604)를 수행한다.First, it is determined whether or not the node entry is null. If it is null, it is terminated (601). If not, it is determined whether or not the node entry is nonterminal (602). Here, determining whether the node entry is null in step 601 is to search all nodes on the abstract syntax tree to find the starting point of the execution statement for each of the modalities and blocks constituting the abstract syntax tree. It is for. Therefore, in step 602, only the non-terminal node of each node is found using the starting point found in step 601 as a starting point. Next, in step 602, if it is a non-terminal, only the elements that affect the control are searched, a node for the entry is created, inserted into the linked list (603), and the points are reset to sibling entries to abstract. Searching for sibling nodes in the syntax tree in turn, searching for nodes that affect the rest of the execution, and returning to step 601 again, repeating these steps until the node entry is null (604). In step 602, step 604 is performed even if the node entry is not a non-terminal.

도 6은 도 3의 각 노드에 대한 인덴트 값 설정 단계에 대한 상세 처리 흐름도이다.FIG. 6 is a detailed process flowchart of an indent value setting step for each node of FIG. 3.

먼저, 이전 노드의 인덴트 값과 노드의 종류에 따라서 현재 노드의 인덴트 값이 달라지므로, 연결 리스트에서 현재 노드와 현재 노드에 대한 깊이 정보를 탐색한다(701). 또한, 현재 노드가 다중 제어문인지의 여부에 따라서도 인덴트 값이 달라지므로, 현재 노드가 단일 제어문인가의 여부를 판단하여(702), 단일 제어문일 경우에는 기본적인 형태의 인덴트 처리를 하며(703), 단일 제어문이 아닐 경우(즉, 다중 제어문일 경우)에는 제어문의 처음과 끝에 대해 인덴트 처리를 해야하므로 특수한 형태의 인덴트 처리를 한다(704). 여기서, 만일 IF문이나 CASE문과 같은 다중 제어문이 중첩될 경우에는 추상 구문 트리 구조가 일반 제어문에 비해 복잡한 구조를 가지므로, 여러 가지 상태 값을 고려하여 인덴트를 처리해야 한다. 또한, 연결 리스트의 처음부터 하나씩 노드를 검색하여 각각에 대한 인덴트를 부여한다.First, since the indentation value of the current node varies according to the indentation value of the previous node and the type of the node, the depth information about the current node and the current node is searched for in the connection list (701). Also, since the indent value varies depending on whether the current node is a multiple control statement, it is determined whether the current node is a single control statement (702), and in the case of a single control statement, basic indentation processing is performed (703). If it is not a single control statement (ie, multiple control statements), indentation is performed on the beginning and the end of the control statement, and thus a special type of indentation processing is performed (704). Here, if multiple control statements such as IF statement or CASE statement overlap, the abstract syntax tree structure is more complicated than general control statement. Therefore, indentation should be processed considering various state values. It also searches for nodes one by one from the beginning of the linked list and gives indents for each.

도 7은 도 3의 제어 흐름 구조에 대한 진단 결과 출력 단계의 상세 처리 흐름도이다.7 is a detailed processing flowchart of a diagnostic result output step for the control flow structure of FIG. 3.

먼저, 연결 리스트가 널인가의 여부를 판단하여 널일 경우에는 종료하고(801), 널이 아닐 경우에는 모듈리언, 블록 그리고 제어에 영향을 주는 실행문들의 정보로 구성된 연결 리스트의 각 노드를 차례대로 읽고, 읽은 노드의 인덴트 값에 따라서 인덴테이션하여 각 노드들간의 내포 관계를 시각적으로 출력하고, 다시 상기 단계(801)로 귀환하여 연결 리스트가 널일때까지 반복하여 수행한다(802).First, it determines whether or not the linked list is null and terminates if it is null (801). Otherwise, it modifies each node of the linked list consisting of the information of modalities, blocks, and execution statements that affect control. Read and indent according to the read indent value of the node to visually output the nesting relationship between each node, and returns to the step 801 again to repeat until the linked list is null (802).

본 발명은 단위 프로그램 내의 모듈리언과 블록에 대한 처리를 하고, 모듈리언과 블록 내의 실행문에 대한 처리를 한 후, 각 노드에 대한 인덴테이션 처리를 하고, 연결 리스트의 각 노드에 대한 출력을 하는 칠 언어에 대한 제어 흐름 표시방법을 제공함으로써, 입력 칠 소스 프로그램의 가시성 구조와 병행성에 따른 제어 흐름 그리고, 실행문들간의 내포 관계를 시각적으로 인덴테이션하여 개발자로 하여금 프로그램의 전체 흐름 및 실행문들간의 관계를 명확하게 이해할 수 있도록하여, 보다 신뢰성 높은 칠 프로그램을 작성할 수 있고, 제어 흐름 분석을 통해 소프트웨어의 품질을 향상시킬 수 있는 효과가 있다.According to the present invention, a module and a block in a unit program are processed, an execution statement in a module and a block is processed, an indentation process is performed for each node, and an output is output for each node of the linked list. By providing a control flow display method for the fill language, the visual flow of the visibility structure and concurrency of the input fill source program and the nesting relationship between the execution statements enables the developer to visually indent the overall flow and execution statements of the program. By clearly understanding the relationship between, it is possible to write more reliable chilling program and improve the quality of software through control flow analysis.

Claims (5)

교환기용 소프트웨어를 프로그램 하는 칠(CHILL) 언어에 대한 프로그램 실행 순서를 분석하기 위한 제어 흐름의 표시방법에 있어서,In the display method of the control flow for analyzing the program execution order for the CHILL language for programming the exchange software, 20개의 단위 프로그램 탐색이 완료되었는가의 여부를 판단하는 제 1 과정과;A first step of determining whether 20 unit program searches have been completed; 상기 제 1 과정에서 완료되지 않은 경우 한 개의 단위 프로그램 정보를 읽는 제 2 과정과;A second step of reading one unit program information if not completed in the first step; 상기 제 2 과정에서 읽은 단위 프로그램과 연관된 추상 구문 트리를 순회하면서 추상 구문 트리를 구성하는 단위 프로그램 내의 모듈리언과 블록의 정보를 탐색하여 연결 리스트에 저장하는 제 3 과정과;A third step of traversing the abstract syntax tree associated with the unit program read in the second step, searching for information of the module and the block in the unit program constituting the abstract syntax tree and storing the information in a linked list; 상기 제 3 과정에서 탐색된 모듈리언과 블록내 실행문중 제어에 영향을 주는 요소들만 탐색하여 그 정보를 연결 리스트에 저장하고, 제 1 과정으로 귀환하여 상기 과정들을 반복하여 수행하는 제 4 과정과;A fourth step of searching for only elements influencing the control of the execution statements within the module and the block found in the third step, storing the information in a linked list, and returning to the first step to repeat the steps; 상기 제 1 과정에서 20개의 단위 프로그램 탐색이 완료된 경우, 각 노드에 대한 인덴트 값을 설정하는 제 5 과정과;A fifth process of setting an indent value for each node when 20 unit program searches are completed in the first process; 상기 제 5 과정에서 인덴트 값이 설정된 각 노드를 차례대로 읽고 프로그램의 제어 흐름 구조 정보를 시각적으로 인덴테이션 하여 리스트 형식으로 출력하는 제 6 과정을 포함하는 것을 특징으로 하는 칠 언어에 대한 제어 흐름 표시방법.And a sixth process of sequentially reading each node having an indent value set in the fifth process, visually indenting the control flow structure information of the program, and outputting the list in the form of a list. Way. 제 1 항에 있어서,The method of claim 1, 상기 제 3 과정은, 추상 구문 트리를 처음부터 검색하여 각 노드의 노드 종류가 모듈리언과 블록인지를 검사하여 현재 노드에 대한 그룹명을 정의하는 제 1 단계와;The third step may include: a first step of defining an group name for a current node by searching an abstract syntax tree from the beginning and checking whether a node type of each node is a module and a block; 상기 제 1 단계의 현재 노드의 시작 포인트에 대한 정보를 연결 리스트로 구성할 노드를 생성하여 저장하고, 그 포인트를 연결 리스트에 삽입하는 제 2 단계와;A second step of generating and storing a node to form a connection list of information about a start point of the current node of the first step, and inserting the point into the connection list; 마지막 포인트에 대한 정보를 연결 리스트로 구성할 노드를 생성하여 연결 리스트에 삽입하는 제 3 단계를 포함하는 것을 특징으로 하는 칠 언어에 대한 제어 흐름 표시방법.And a third step of generating a node to be configured as a linked list of information about the last point and inserting the node into the linked list. 제 1 항에 있어서,The method of claim 1, 상기 제 4 과정은, 노드 엔트리가 널인가의 여부를 판단하여, 널일 경우에는 종료하는 제 1 단계와;The fourth step includes: a first step of determining whether the node entry is null and ending if it is null; 상기 제 1 단계에서 널이 아닐 경우 노드 엔트리가 넌터미널인가의 여부를 판단하는 제 2 단계와;A second step of determining whether a node entry is a non-terminal if not null in the first step; 상기 제 2 단계에서 넌터미널일 경우 제어에 영향을 주는 요소들만을 탐색하고, 엔트리에 대한 노드를 생성하여 연결 리스트에 삽입하는 제 3 단계와;A third step of searching for only elements that affect control when the non-terminal is used in the second step, and generating a node for the entry and inserting the node into the connection list; 상기 제 3 단계를 수행한 후, 또는 상기 제 2 단계에서 노드 엔트리가 넌터미널이 아닐 경우 형제 엔트리로 포인트를 재설정하여 추상 구문 트리상의 형제 노드들을 차례로 탐색하면서 나머지 실행에 영향을 주는 노드를 탐색하고, 상기 제 1 단계로 귀환하여 노드 엔트리가 널이 될 때까지 상기 단계들을 반복하는 제 4 단계를 포함하는 것을 특징으로 하는 칠 언어에 대한 제어 흐름 표시방법.After performing the third step or in the second step, if the node entry is not a non-terminal, the node is reset to a sibling entry to search for sibling nodes in the abstract syntax tree in order to search for nodes that affect the rest of the execution. And a fourth step of returning to said first step and repeating said steps until a node entry becomes null. 제 1 항에 있어서,The method of claim 1, 상기 제 5 과정은, 연결 리스트에서 현재 노드와 현재 노드에 대한 깊이 정보를 탐색하는 제 1 단계와;The fifth process includes: a first step of searching for a current node and depth information about the current node in a connection list; 상기 제 1 단계에서 탐색된 현재 노드가 단일 제어문인가의 여부를 판단하는 제 2 단계와;A second step of determining whether the current node found in the first step is a single control statement; 상기 제 2 단계에서 단일 제어문일 경우 기본적인 형태의 인덴트 처리를 하는 제 3 단계와;A third step of performing basic indentation processing in the case of the single control statement in the second step; 상기 제 2 단계에서 단일 제어문이 아닐 경우(즉, 다중 제어문일 경우) 특수한 형태의 인덴트 처리를 하는 제 4 단계를 포함하는 것을 특징으로 하는 칠 언어에 대한 제어 흐름 표시방법.And a fourth step of performing a special type of indentation processing when the second step is not a single control statement (ie, multiple control statements). 제 1 항에 있어서,The method of claim 1, 상기 제 5 과정은, 연결 리스트가 널인가의 여부를 판단하여 널일 경우에는 종료하는 제 1 단계와;The fifth process includes: a first step of determining whether the linked list is null and ending if it is null; 상기 제 1 단계에서 널이 아닐 경우에는 모듈리언, 블록 그리고 제어에 영향을 주는 실행문들의 정보로 구성된 연결 리스트의 각 노드를 차례대로 읽고, 읽은 노드의 인덴트 값에 따라서 인덴테이션하여 각 노드들간의 내포 관계를 시각적으로 출력하고, 다시 상기 제 1 단계로 귀환하여 연결 리스트가 널일때까지 반복하여 수행하는 제 2 단계를 포함하는 것을 특징으로 하는 칠 언어에 대한 제어 흐름 표시방법.If the first step is not null, each node of the linked list composed of the information of the module, the block, and the execution statements affecting the control is read in sequence, and indented according to the read indent value of each node, and the nodes are read. And a second step of visually outputting a nested relationship of the and returning to the first step and repeatedly performing a connection list until null.
KR1019970065708A 1997-12-03 1997-12-03 How to Display Control Flow for Fill Languages KR100279731B1 (en)

Priority Applications (1)

Application Number Priority Date Filing Date Title
KR1019970065708A KR100279731B1 (en) 1997-12-03 1997-12-03 How to Display Control Flow for Fill Languages

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
KR1019970065708A KR100279731B1 (en) 1997-12-03 1997-12-03 How to Display Control Flow for Fill Languages

Publications (2)

Publication Number Publication Date
KR19990047347A KR19990047347A (en) 1999-07-05
KR100279731B1 true KR100279731B1 (en) 2001-02-01

Family

ID=66095481

Family Applications (1)

Application Number Title Priority Date Filing Date
KR1019970065708A KR100279731B1 (en) 1997-12-03 1997-12-03 How to Display Control Flow for Fill Languages

Country Status (1)

Country Link
KR (1) KR100279731B1 (en)

Cited By (1)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
KR100692172B1 (en) 2005-03-30 2007-03-12 아이티플러스 주식회사 Universal string analyzer and method thereof

Cited By (1)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
KR100692172B1 (en) 2005-03-30 2007-03-12 아이티플러스 주식회사 Universal string analyzer and method thereof

Also Published As

Publication number Publication date
KR19990047347A (en) 1999-07-05

Similar Documents

Publication Publication Date Title
AU2003231305B2 (en) System and method for transformation of XML documents using stylesheets
EP0643851B1 (en) Debugger program which includes correlation of computer program source code with optimized objet code
US6353925B1 (en) System and method for lexing and parsing program annotations
US7308680B2 (en) Intermediate representation for multiple exception handling models
US5276880A (en) Method for parsing and representing multi-versioned computer programs, for simultaneous and synchronous processing of the plural parses
US9710243B2 (en) Parser that uses a reflection technique to build a program semantic tree
EP0406602A2 (en) Method and apparatus for debugging parallel programs by serialization
JPS61103247A (en) Translation program generation system
US20080320031A1 (en) Method and device for analyzing an expression to evaluate
US7313785B2 (en) Method and system for generating executable code for formatting and printing complex data structures
JPH11213031A (en) Inspection of hardware for software and inspection contrary to it
US5822592A (en) Method and system for determining source code location
KR100279731B1 (en) How to Display Control Flow for Fill Languages
JPH0736680A (en) Parallelized program development aid device
Bülow Proof visualization for the lean 4 theorem prover
CN112799942B (en) Keil C51-based software source code and target code coverage rate analysis method and system
JPH09288580A (en) Device and method for optimizing source program
Mennicken Locating and presenting lexical references in a theorem prover
Oorschot VCLLVM: A Transformation Tool for LLVM IR programs to aid Deductive Verification
KR100276086B1 (en) Method for generating a c++ code from lotos specitication
Elgh Bridging of complex data structures between xtUML domains
Boye et al. Dependency-based groundness analysis of functional logic programs
JPH05108372A (en) System for outputting compiler optimization processing content
Maris FORTRAN 90 Programming Guidelines for PLANCK/LFI
Palanisamy Extended Metamodelica Based Integrated Copiler Generator

Legal Events

Date Code Title Description
A201 Request for examination
E701 Decision to grant or registration of patent right
GRNT Written decision to grant
FPAY Annual fee payment

Payment date: 20041101

Year of fee payment: 5

LAPS Lapse due to unpaid annual fee