KR101585044B1 - Integrated processing system for programming languages - Google Patents
Integrated processing system for programming languages Download PDFInfo
- Publication number
- KR101585044B1 KR101585044B1 KR1020140044525A KR20140044525A KR101585044B1 KR 101585044 B1 KR101585044 B1 KR 101585044B1 KR 1020140044525 A KR1020140044525 A KR 1020140044525A KR 20140044525 A KR20140044525 A KR 20140044525A KR 101585044 B1 KR101585044 B1 KR 101585044B1
- Authority
- KR
- South Korea
- Prior art keywords
- language
- parse tree
- tree data
- data
- module
- Prior art date
Links
Images
Classifications
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F9/00—Arrangements for program control, e.g. control units
- G06F9/06—Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
- G06F9/44—Arrangements for executing specific programs
- G06F9/455—Emulation; Interpretation; Software simulation, e.g. virtualisation or emulation of application or operating system execution engines
- G06F9/45504—Abstract machines for programme code execution, e.g. Java virtual machine [JVM], interpreters, emulators
Abstract
본 발명은 프로그래밍 언어 통합 처리 시스템에 관한 것으로서, 보다 구체적으로는 소스코드 및 언어 정보를 이용해 파싱 프로세스(parsing process)를 수행하여 파스 트리 데이터(parse tree data)를 생성하는 데이터 임포트(data importer) 모듈; 상기 파스 트리 데이터를 실행하는 플레이어(player)를 포함하는 커널(kernel) 모듈; 및 상기 파스 트리 데이터를 미리 설정된 형태로 파일(file)에 저장하는 익스포터(exporter), 및 상기 익스포터로부터 파스 트리 데이터를 전달받아 미리 설정된 언어에 따른 변환 사전(dictionary)을 참조하여 변환된 코드를 생성하는 코드 제너레이터(code generator)를 포함하는 컨버전(conversion) 모듈을 포함하는 것을 그 구성상의 특징으로 한다.
본 발명에서 제안하고 있는 프로그래밍 언어 통합 처리 시스템에 따르면, 데이터 임포트 모듈이 언어 정보를 참고하여 다양한 소스 코드로부터 파스 트리 데이터(parse tree data)를 생성하고, 커널 모듈이 파스 트리 데이터를 실행함으로써, 다양한 언어에서 작업 되었던 계산 알고리즘을 하나의 통합된 환경에서 개발할 수 있으며, 특정 언어에 의존하지 않고도 사용자가 기존에 알고 있는 익숙한 언어로 알고리즘을 작성하고 실행할 수 있어 언어 습득에 따르는 개발 노력을 절감시킬 수 있다.
또한, 본 발명에 따르면, 컨버전 모듈이 파스 트리 데이터를 미리 설정된 언어별 변환 사전을 참조하여 변환된 코드를 생성함으로써, 특정 수치연산 소프트웨어에서 개발한 소스코드를 다른 언어로 변환하여 그 활용 범위를 넓힐 수 있다.
뿐만 아니라, 본 발명에 따르면, 언어별 변환 기능을 이용하여 특정 언어에 대한 지식 없이도 그 언어를 구사할 수 있도록 하고, 특정 언어를 배우고자 할 때에도 변환된 표현과 자신이 아는 언어의 문법이나 형식들을 비교해가며 학습해 볼 수 있다.The present invention relates to a programming language integrated processing system, and more particularly, to a data importer module for generating parse tree data by performing a parsing process using source code and language information ; A kernel module including a player executing the parse tree data; And an exporter for storing the parse tree data in a file in a predetermined form and a conversion dictionary receiving a parse tree data from the exporter, And a conversion module including a code generator for converting the input signal into a digital signal.
According to the programming language integrated processing system proposed in the present invention, the data import module generates parse tree data from various source codes by referring to language information, and executes the parse tree data by the kernel module, It is possible to develop the calculation algorithms worked on the language in a single integrated environment and to write and execute the algorithm in the familiar language that the user already knows without relying on a specific language, .
Further, according to the present invention, the conversion module refers to the translation dictionary for each language in which the parse tree data is set in advance, and generates the converted code, so that the source code developed by the specific numerical calculation software is converted into another language .
In addition, according to the present invention, it is possible to use the language conversion function to speak the language without knowledge of a specific language, and to compare the converted expression with the grammar or form of the language that the user knows, You can learn to go.
Description
본 발명은 프로그래밍 언어 통합 처리 시스템에 관한 것으로서, 보다 구체적으로는 다양한 프로그래밍 언어들의 처리 및 이들의 변환 시스템에 관한 것이다.The present invention relates to a programming language integrated processing system, and more particularly, to processing of various programming languages and their conversion system.
컴퓨터 프로그램은 컴퓨터 또는 프로세서-기반 장치에 의해 수행될 동작들을 설명하는 명령어들의 목록이다. 컴퓨터 프로그램이 컴퓨터 하드웨어에 로드되어 실행될 때, 컴퓨터는 컴퓨터 프로그램의 명령어들을 따름으로써 미리 결정된 방식으로 동작할 것이다. 따라서 컴퓨터 프로그램은 컴퓨터를 명령어들에 의해 미리 정해진 동작들을 수행하는 특화된 기계로 만든다.
A computer program is a list of instructions describing operations to be performed by a computer or a processor-based device. When a computer program is loaded into computer hardware and executed, the computer will operate in a predetermined manner following instructions of the computer program. Thus, a computer program makes a computer a specialized machine that performs predetermined operations by instructions.
프로그래밍 언어는 통상적으로 언어의 특성 및 특징에 기초한 범주들로 분류된다. 예를 들어, C는 절차형(procedural) 프로그래밍 언어로 설명되는데, 이는 그것이 모듈성(modularity) 및 프로시져 호출의 개념에 기초하기 때문이다. C# 및 Java는 개체 클래스와 같은 프로그램 코드의 생성 및 조작 범위(Scope)에 맞춰진 개체지향 프로그래밍 언어들이다. SQL(Structured Query Language) 및 XPath를 포함하는 데이터 중심 언어들은 관계형 또는 XML(Extensible Markup Language) 데이터와 같은 저장된 데이터의 검색 및 조작에 맞춰진 것이다. 이러한 특화의 결과로서, 개별 프로그래밍 언어들은 응용 분야에 따라 장단점들을 갖는다.
Programming languages are typically categorized into categories based on language characteristics and characteristics. For example, C is described in a procedural programming language because it is based on the concept of modularity and procedure calls. C # and Java are object-oriented programming languages tailored to the creation and manipulation of program code, such as object classes. Data-centric languages, including Structured Query Language (SQL) and XPath, are tailored to the retrieval and manipulation of stored data such as relational or Extensible Markup Language (XML) data. As a result of this specialization, individual programming languages have advantages and disadvantages depending on the application.
현재의 프로그래머들은 종종 그들이 충분한 경험을 갖고 있는 특정 언어나 프로젝트의 가장 비중 있는 부분에 적합한 특정 언어로 컴퓨터 프로그램을 개발하는 것을 선호한다. 따라서 응용 분야에 따라 사용되는 언어는 다양할 수밖에 없다. 하지만, 어떤 알고리즘이 여러 응용 분야에서 동일하게 요구되고 이 알고리즘을 각 분야에 적합한 언어로 번역해야 한다면, 많은 시간과 노력을 필요로 하게 된다. 이 알고리즘을 업그레이드할 경우, 다른 언어로 매번 수작업 변환을 해야 한다면, 이는 상당히 비생산적이다. 따라서 프로그래밍 언어들 간의 통합된 자동 번역시스템이 필요하다.
Current programmers often prefer to develop computer programs in specific languages that are appropriate for the most specific part of a particular language or project for which they have sufficient experience. Therefore, the language used varies depending on the application field. However, if an algorithm is required equally in many applications and the algorithm needs to be translated into a language suitable for each field, it will take a lot of time and effort. If you upgrade this algorithm, you have to manually translate each language in another language, which is fairly counterproductive. Therefore, an integrated automatic translation system between programming languages is needed.
이와 관련된 기술로서, 변환대상 고수준 언어 코드에 대한 수정 없이도 모든 고수준 언어의 syntax 및 semantics를 변환 가능하여, 메인 컴파일러가 지원하는 모든 고수준 언어 코드를 HDL 코드로 변환하는 방법이 개시된바 있다(공개특허 제10-2011-0093965호).
As a related art, there has been disclosed a method for converting syntax and semantics of all high-level languages without converting the high-level language codes to be converted, and converting all high-level language codes supported by the main compiler into HDL codes 10-2011-0093965).
한편, 이학, 공학 분야에서는 다양한 수치연산 소프트웨어가 사용되며, 이와 같은 수치연산 소프트웨어에서 사용되는 언어와 함수들을 익히는 데 상당한 노력과 시간이 소요된다. 이미 다룰 줄 아는 소프트웨어 도구가 있었다 할지라도, 새로운 언어와 도구 사용법을 익혀야하는 상황이 얼마든지 발생하고, 이로 인해 효율적인 연구 및 알고리즘 개발에만 집중하지 못하는 경우가 많다. 따라서 이와 같은 문제를 해결하고 다양한 수치연산 소프트웨어를 통합적으로 사용할 수 있는 시스템의 개발이 시급히 필요한 실정이다.On the other hand, various numerical computation software are used in the fields of science and engineering, and it takes considerable effort and time to learn the languages and functions used in such numerical computation software. Even if you already have a software tool to deal with, there are a lot of situations where you need to learn new languages and tools, and often you can not concentrate on developing efficient research and algorithms. Therefore, there is an urgent need to develop a system capable of solving such problems and using various numerical computation software in an integrated manner.
본 발명은 기존에 제안된 방법들의 상기와 같은 문제점들을 해결하기 위해 제안된 것으로서, 데이터 임포트 모듈이 언어 정보를 참고하여 다양한 소스 코드로부터 파스 트리 데이터(parse tree data)를 생성하고, 커널 모듈이 파스 트리 데이터를 실행함으로써, 다양한 언어에서 작업되었던 계산 알고리즘을 하나의 통합된 환경에서 개발할 수 있으며, 특정 언어에 의존하지 않고도 사용자가 기존에 알고 있는 익숙한 언어로 알고리즘을 작성하고 실행할 수 있어 언어 습득에 따르는 개발 노력을 절감시킬 수 있는, 프로그래밍 언어 통합 처리 시스템을 제공하는 것을 그 목적으로 한다.
The present invention has been proposed in order to solve the above-mentioned problems of the previously proposed methods. The data import module generates parse tree data from various source codes with reference to language information, By executing the tree data, it is possible to develop the calculation algorithms worked on in various languages in one integrated environment, and it is possible to write and execute algorithms in a familiar language that the user knows without depending on a specific language, And to provide a programming language integrated processing system capable of reducing development effort.
또한, 본 발명은, 컨버전 모듈이 파스 트리 데이터를 미리 설정된 언어별 변환 사전을 참조하여 변환된 코드를 생성함으로써, 특정 수치연산 소프트웨어에서 개발한 소스코드를 다른 언어로 변환하여 그 활용 범위를 넓힐 수 있는, 프로그래밍 언어 통합 처리 시스템을 제공하는 것을 또 다른 목적으로 한다.Further, the present invention can convert the source code developed by a specific numerical computation software into another language by broadening the application range by generating a converted code by referring to the translation dictionary for each language in which the parse tree data is preset by the conversion module Another object of the present invention is to provide a programming language integrated processing system.
상기한 목적을 달성하기 위한 본 발명의 특징에 따른 프로그래밍 언어 통합 처리 시스템은,According to an aspect of the present invention,
소스코드 및 언어 정보를 이용해 파싱 프로세스(parsing process)를 수행하여 파스 트리 데이터(parse tree data)를 생성하는 데이터 임포트(data import) 모듈;A data import module for generating parse tree data by performing a parsing process using source code and language information;
상기 파스 트리 데이터를 실행하는 플레이어(player)를 포함하는 커널(kernel) 모듈; 및A kernel module including a player executing the parse tree data; And
상기 파스 트리 데이터를 미리 설정된 형태로 파일(file)에 저장하는 익스포터(exporter), 및 상기 익스포터로부터 파스 트리 데이터를 전달받아 미리 설정된 언어에 따른 변환 사전(dictionary)을 참조하여 변환된 코드를 생성하는 코드 제너레이터(code generator)를 포함하는 컨버전(conversion) 모듈을 포함하는 것을 그 구성상의 특징으로 한다.
An exporter for storing the parse tree data in a file in a predetermined form and a converted dictionary by referring to a dictionary in accordance with a predetermined language and receiving the parse tree data from the exporter And includes a conversion module including a code generator.
바람직하게는, 상기 익스포터는,Preferably, the above-
상기 파스 트리 데이터를 시리얼 데이터 형태로 상기 파일에 저장하는 시리얼라이저(serializer)를 더 포함할 수 있다.
And a serializer for storing the parse tree data in the file in the form of serial data.
바람직하게는, 상기 플레이어는, 외부 라이브러리를 이용하여 동작할 수 있다.
Advantageously, the player is operable using an external library.
바람직하게는, 상기 커널 모듈은,Advantageously, the kernel module further comprises:
상기 파스 트리 데이터에서 버그를 찾아내는 디버거(debugger)를 더 포함할 수 있다.
And a debugger for finding a bug in the parse tree data.
바람직하게는, 상기 데이터 임포트 모듈은,Preferably, the data import module includes:
미리 입력된 프리셋(preset) 정보에 포함된 언어 정보를 이용해 파싱 프로세스를 수행할 수 있다.
The parsing process can be performed using the language information included in the preset information that is input in advance.
바람직하게는,Preferably,
상기 파일에 저장된 변환된 코드를 컴파일(compile)하여 출력하는 컴파일러(compiler)를 더 포함할 수 있다.
And a compiler for compiling and outputting the converted code stored in the file.
바람직하게는, 상기 소스코드 또는 변환된 코드는,Advantageously, the source code or the transformed code comprises:
C/C++, 파스칼(PASCAL), 파이썬(Python), 매틀랩(MATLAB), 셈툴(CEMTool), 리스프(LISP), 아이엘(IL), 피엘시(PLC) 및 임베디드(embedded) 계열을 포함하는 군에서 선택된 언어로 작성될 수 있다.In the group including C / C ++, PASCAL, Python, MATLAB, CEMTool, LISP, IL, PLI and embedded, It can be written in the selected language.
본 발명에서 제안하고 있는 프로그래밍 언어 통합 처리 시스템에 따르면, 데이터 임포트 모듈이 언어 정보를 참고하여 다양한 소스 코드로부터 파스 트리 데이터(parse tree data)를 생성하고, 커널 모듈이 파스 트리 데이터를 실행함으로써, 다양한 언어에서 작업되었던 계산 알고리즘을 하나의 통합된 환경에서 개발할 수 있으며, 특정 언어에 의존하지 않고도 사용자가 기존에 알고 있는 익숙한 언어로 알고리즘을 작성하고 실행할 수 있어 언어 습득에 따르는 개발 노력을 절감시킬 수 있다.
According to the programming language integrated processing system proposed in the present invention, the data import module generates parse tree data from various source codes by referring to language information, and executes the parse tree data by the kernel module, It is possible to develop the calculation algorithms worked on the language in a single integrated environment and to write and execute the algorithm in the familiar language that the user already knows without relying on a specific language, .
또한, 본 발명에 따르면, 컨버전 모듈이 파스 트리 데이터를 미리 설정된 언어별 변환 사전을 참조하여 변환된 코드를 생성함으로써, 특정 수치연산 소프트웨어에서 개발한 소스코드를 다른 언어로 변환하여 그 활용 범위를 넓힐 수 있다.
Further, according to the present invention, the conversion module refers to the translation dictionary for each language in which the parse tree data is set in advance, and generates the converted code, so that the source code developed by the specific numerical calculation software is converted into another language .
뿐만 아니라, 본 발명에 따르면, 언어별 변환 기능을 이용하여 특정 언어에 대한 지식 없이도 그 언어를 구사할 수 있도록 하고, 특정 언어를 배우고자 할 때에도 변환된 표현과 자신이 아는 언어의 문법이나 형식들을 비교해가며 학습해 볼 수 있다.In addition, according to the present invention, it is possible to use the language conversion function to speak the language without knowledge of a specific language, and to compare the converted expression with the grammar or form of the language that the user knows, You can learn to go.
도 1은 본 발명의 일실시예에 따른 프로그래밍 언어 통합 처리 시스템의 구성을 도시한 도면.
도 2는 프로그래밍 언어의 계산 작업 영역을 도시한 도면.
도 3은 본 발명의 일실시예에 따른 프로그래밍 언어 통합 처리 시스템에서, 데이터 임포트 모듈의 세부적인 구성을 도시한 도면.
도 4는 프로그래밍 언어로 작성된 코드의 데이터 구조를 도시한 도면.
도 5는 본 발명의 일실시예에 따른 프로그래밍 언어 통합 처리 시스템에서, 커널 모듈의 세부적인 구성을 도시한 도면.
도 6은 본 발명의 일실시예에 따른 프로그래밍 언어 통합 처리 시스템에서, 컨버전 모듈 및 파일의 세부적인 구성을 도시한 도면.1 is a diagram showing the configuration of a programming language integrated processing system according to an embodiment of the present invention;
Fig. 2 shows a calculation working area of a programming language; Fig.
3 is a diagram showing a detailed configuration of a data import module in a programming language integrated processing system according to an embodiment of the present invention;
4 is a diagram showing a data structure of a code written in a programming language;
5 is a diagram illustrating a detailed configuration of a kernel module in a programming language integrated processing system according to an embodiment of the present invention.
6 is a diagram showing a detailed configuration of a conversion module and a file in a programming language integrated processing system according to an embodiment of the present invention;
이하, 첨부된 도면을 참조하여 본 발명이 속하는 기술분야에서 통상의 지식을 가진 자가 본 발명을 용이하게 실시할 수 있도록 바람직한 실시예를 상세히 설명한다. 다만, 본 발명의 바람직한 실시예를 상세하게 설명함에 있어, 관련된 공지 기능 또는 구성에 대한 구체적인 설명이 본 발명의 요지를 불필요하게 흐릴 수 있다고 판단되는 경우에는 그 상세한 설명을 생략한다. 또한, 유사한 기능 및 작용을 하는 부분에 대해서는 도면 전체에 걸쳐 동일한 부호를 사용한다.
Hereinafter, preferred embodiments of the present invention will be described in detail with reference to the accompanying drawings, in order that those skilled in the art can easily carry out the present invention. In the following detailed description of the preferred embodiments of the present invention, a detailed description of known functions and configurations incorporated herein will be omitted when it may make the subject matter of the present invention rather unclear. In the drawings, like reference numerals are used throughout the drawings.
덧붙여, 명세서 전체에서, 어떤 부분이 다른 부분과 ‘연결’ 되어 있다고 할 때, 이는 ‘직접적으로 연결’ 되어 있는 경우뿐만 아니라, 그 중간에 다른 소자를 사이에 두고 ‘간접적으로 연결’ 되어 있는 경우도 포함한다. 또한, 어떤 구성요소를 ‘포함’ 한다는 것은, 특별히 반대되는 기재가 없는 한 다른 구성요소를 제외하는 것이 아니라 다른 구성요소를 더 포함할 수 있다는 것을 의미한다.
In addition, in the entire specification, when a part is referred to as being 'connected' to another part, it may be referred to as 'indirectly connected' not only with 'directly connected' . Also, to "include" an element means that it may include other elements, rather than excluding other elements, unless specifically stated otherwise.
도 1은 본 발명의 일실시예에 따른 프로그래밍 언어 통합 처리 시스템의 구성을 도시한 도면이다. 도 1에 도시된 바와 같이, 본 발명의 일실시예에 따른 프로그래밍 언어 통합 처리 시스템은, 데이터 임포트 모듈(100), 커널 모듈(200), 컨버전 모듈(300) 및 파일(400)을 포함하여 구성될 수 있다.
1 is a diagram illustrating a configuration of a programming language integrated processing system according to an embodiment of the present invention. 1, a programming language integrated processing system according to an embodiment of the present invention includes a
즉, 본 발명은, 데이터 임포트 모듈(100)이 소스코드(10) 및 언어 정보를 이용해 파스 트리 데이터(20)를 생성하고 커널 모듈(200)이 파스 트리 데이터(20)를 실행할 수 있으며, 컨버전 모듈(300)은 파스 트리 데이터(20)를 미리 설정된 언어에 따른 변환 사전(340)을 참조하여 변환된 코드(40)를 생성하여 파일(400)에 저장할 수 있다. 따라서 기존에 알고 있던 언어나 친숙한 언어로 코드를 작성하여 다른 언어로 된 소프트웨어에서 실행할 수 있으므로 개발 노력이 절약될 수 있고, 각 언어에서 사용되는 계산 작업을 하나의 통합된 환경에서 수행할 수 있으며, 특정 수치연산 소프트웨어에서 개발한 소스코드(10)를 변환하여 자유롭게 활용할 수 있다.
That is, the present invention can be applied to a case where the
도 2는 프로그래밍 언어의 계산 작업 영역을 도시한 도면이다. 도 2에 도시된 바와 같이, 본 발명의 일실시예에 따른 프로그래밍 언어 통합 처리 시스템에서 처리하는 응용 영역은 계산 작업 영역에 국한한다. 다양한 프로그래밍 언어들은 응용 영역에 따라 특화되어 각자 독특한 문법과 특성을 갖고 있다. 특정 언어에서만 지원하는 알고리즘이나 명령어 체계들은 다른 언어로 변환될 수 없는 것이 사실이다. 그러나 도 2에 도시된 바와 같이, 거의 모든 대중적 프로그래밍 언어들은 공통적으로 수치적 계산 작업을 지원한다. 각 언어의 계산 작업 영역에는 공통적인 영역(빨간색 테두리 부분)이 존재하므로, 본 발명의 일실시예에 따른 프로그래밍 언어 통합 처리 시스템에서는 이러한 공통 영역을 이용해, 소스코드(10)의 언어에 관계없이 실행을 하거나, 언어 간 변환을 하는 등 통합적인 처리를 할 수 있다.
2 is a diagram showing a calculation work area of a programming language. As shown in FIG. 2, the application area to be processed by the programming language integrated processing system according to the embodiment of the present invention is limited to the calculation work area. Various programming languages have their own unique grammar and characteristics that are tailored to the application domain. It is true that algorithms and instructional schemes that are supported only in one language can not be translated into another language. However, as shown in Figure 2, almost all popular programming languages commonly support numerical computation operations. In the programming language integrated processing system according to the embodiment of the present invention, since there is a common area (red border part) in the calculation working area of each language, , Or can perform integrated processing such as conversion between languages.
이하에서는, 본 발명의 일실시예에 따른 프로그래밍 언어 통합 처리 시스템을 구성하는 각 구성요소에 대하여 상세히 설명하도록 한다.
Hereinafter, each component constituting the programming language integrated processing system according to an embodiment of the present invention will be described in detail.
데이터 임포트(data import) 모듈(100)은, 소스코드(10) 및 언어 정보를 이용해 파싱 프로세스(parsing process)를 수행하여 파스 트리 데이터(parse tree data)(20)를 생성할 수 있다. 이때, 언어 정보는 소스코드(10)의 언어의 종류일 수 있다. 이하에서는, 도 3을 참조하여 데이터 임포트 모듈(100)의 세부적인 구성에 대하여 설명하도록 한다.
The
도 3은 본 발명의 일실시예에 따른 프로그래밍 언어 통합 처리 시스템에서, 데이터 임포트 모듈(100)의 세부적인 구성을 도시한 도면이다. 도 3에 도시된 바와 같이, 본 발명의 일실시예에 따른 프로그래밍 언어 통합 처리 시스템의 데이터 임포트 모듈(100)은, 임포터(110) 및 파서(parser)(120)를 포함하여 구성될 수 있다.
3 is a diagram showing a detailed configuration of the
임포터(importer)(110)는, 소스코드(10) 및 언어 정보를 받아들일 수 있다. 도 3에 도시된 바와 같이, 소스코드(10)는, C/C++, 파스칼(PASCAL), 파이썬(Python), 매틀랩(MATLAB), 셈툴(CEMTool), 리스프(LISP), 아이엘(IL), 피엘시(PLC) 및 임베디드(embedded) 계열을 포함하는 군에서 선택된 언어로 작성된 것일 수 있다. 본 발명의 임포터(110)는 수치연산 소프트웨어에서 사용되는 다양한 언어를 수용할 수 있도록 구현될 수 있으며, 이를 통해 다양한 수치연산 소프트웨어의 통합 환경을 구성할 수 있다.
파서(120)는, 파싱 프로세스(parsing process)를 수행하여 파스 트리 데이터(parse tree data)(20)를 생성할 수 있다. 파서(120)는 임포터(110)를 통해 입력된 소스코드(10)와 언어 정보를 이용해, 언어 정보에 부합하는 파싱 프로세스를 수행하여 소스코드(10)를 파싱(parsing)하고 파스 트리 데이터(20)를 생성할 수 있다.
The
도 4는 프로그래밍 언어로 작성된 코드의 데이터 구조를 도시한 도면이다. 도 4에 도시된 바와 같이, 본 발명의 일실시예에 따른 프로그래밍 언어 통합 처리 시스템의 파서(120)는, 파싱 프로세스를 통해 각 언어의 문법을 해석할 수 있다. 문법 해석을 통해, 도 4의 우측에 도시된 바와 같은 파스 트리(parse tree)로 변환할 수 있는데, 이 파스 트리 구조는 알고리즘 자체로서 모든 언어에서 공통적으로 표현 가능한 형태이다. 본 발명의 일실시예에 따른 프로그래밍 언어 통합 처리 시스템에서는, 이와 같은 동일한 파스 트리 구조에 근거하여 프로그래밍 언어 간의 계산 표현의 장벽을 허물고, 통합적인 처리를 할 수 있다.
4 is a diagram showing a data structure of a code written in a programming language. As shown in FIG. 4, the
한편, 데이터 임포트 모듈(100)은, 미리 입력된 프리셋(preset) 정보에 포함된 언어 정보를 이용해 파싱 프로세스를 수행할 수 있다. 즉, 사용자가 미리 언어 정보 등을 설정하는 프리셋 단계를 처리하고 데이터 임포트 모듈(100)을 통해 소스코드(10)를 입력함으로써, 파싱 프로세스가 원활하게 처리되도록 할 수 있다.
Meanwhile, the
커널 모듈(200)은, 데이터 임포트 모듈(100)로부터 파스 트리 데이터(20)를 전달받아 실행할 수 있다. 사용자는, 커널 모듈(200)을 통해 실행을 함으로써 소스코드(10)에 의한 계산 결과를 신속하게 확인해볼 수 있다. 이하에서는, 도 5를 참조하여 커널 모듈(200)의 세부적인 구성에 대해 상세히 설명하도록 한다.
The
도 5는 본 발명의 일실시예에 따른 프로그래밍 언어 통합 처리 시스템에서, 커널 모듈(200)의 세부적인 구성을 도시한 도면이다. 도 5에 도시된 바와 같이, 본 발명의 일실시예에 따른 프로그래밍 언어 통합 처리 시스템의 커널 모듈(200)은, 플레이어(210)를 포함하여 구성될 수 있으며, 디버거(220)를 더 포함하여 구성될 수 있다.
5 is a diagram illustrating a detailed configuration of a
플레이어(210)는, 파스 트리 데이터(20)를 실행할 수 있다. 즉, 플레이어(210)는 데이터 임포트 모듈(100)로부터 파스 트리 데이터(20)를 전달받아 실행함으로써, 소스코드(10)의 계산 결과를 신속하게 확인해볼 수 있다. 한편, 플레이어(210)는, 외부 라이브러리(library)를 이용하여 동작할 수 있다.
The
이와 같이, 본 발명의 일실시예에 따른 프로그래밍 언어 통합 처리 시스템에서는, 서로 상이한 프로그래밍 언어에 의해 작성된 소스코드(10)를 파싱하더라도 궁극적으로는 동일한 구조를 갖는 파스 트리 데이터(20)로 생성함으로써, 소스코드(10)의 특정 언어 표현에 관계없이 플레이어(210)를 통해 동일한 실행 결과를 얻을 수 있다. 따라서 다양한 프로그래밍 언어를 단일 개발 환경에서 사용할 수 있게 된다.
As described above, in the programming language integrated processing system according to the embodiment of the present invention, even if the
디버거(debugger)(220)는, 파스 트리 데이터(20)에서 버그를 찾아낼 수 있다. 즉, 디버거(220)는, 알고리즘의 오류를 추적하기 위한 모듈이다. 플레이어(210)와 실행 기능은 동일하지만, 파스 트리 노드에 실행 중단점을 가진다. 따라서 디버거(220)는 사용자가 특정 트리 노드를 선택적으로 실행해 가면서 계산 오류 위치를 파악하도록 도울 수 있다.
A
컨버전 모듈(300)은, 커널 모듈(200)로부터 파스 트리 데이터(20)를 전달받아 미리 설정된 언어로 변환하여 변환된 코드(40)를 생성할 수 있다. 이하에서는, 도 6을 참조하여 컨버전 모듈(300)의 세부적인 구성에 대하여 상세히 설명하도록 한다.
The
도 6은 본 발명의 일실시예에 따른 프로그래밍 언어 통합 처리 시스템에서, 컨버전 모듈(300) 및 파일(400)의 세부적인 구성을 도시한 도면이다. 도 6에 도시된 바와 같이, 본 발명의 일실시예에 따른 프로그래밍 언어 통합 처리 시스템의 컨버전 모듈(300)은, 익스포터(310), 시리얼라이저(320), 코드 제너레이터(330) 및 변환 사전(340)을 포함하여 구성될 수 있으며, 컨버전 모듈(300) 외부에 컴파일러(350)를 더 포함하여 구성될 수 있다.
6 is a diagram showing a detailed configuration of the
익스포터(exporter)(310)는, 파스 트리 데이터(20)를 미리 설정된 형태로 파일(file)(400)에 저장할 수 있다. 즉, 도 6에 도시된 바와 같이, 커널 모듈(200)로부터 컨버전 모듈(300)에 전달된 파스 트리 데이터(20)는 사용자의 선택에 따라 익스포터(310)를 통해 미리 설정된 형태로 파일(400)에 저장될 수 있다. 파일(400)에 저장된 파스 트리 데이터(20)는 파싱 과정 없이 메모리 영역에 로드되어 커널 모듈(200)의 플레이어(210)를 통해 실행될 수 있다.
The
한편, 익스포터(310)는, 파스 트리 데이터(20)를 시리얼 데이터(32) 형태로 파일(400)에 저장하는 시리얼라이저(serializer)(320)를 더 포함할 수 있다. 즉, 도 6에 도시된 바와 같이, 익스포터(310)는 xml(31) 형태로 파일(400)에 파스 트리 데이터(20)를 저장할 수 있으나, 시리얼라이저(320)를 더 포함하여 시리얼 데이터(serial data)(32)의 형태로 파스 트리 데이터(20)를 파일(400)에 저장할 수 있다.
The
코드 제너레이터(code generator)(330)는, 익스포터(310)로부터 파스 트리 데이터(20)를 전달받아 미리 설정된 언어에 따른 변환 사전(dictionary)(340)을 참조하여 변환된 코드(40)를 생성할 수 있다. 이때, 미리 설정된 언어에 따라 변환된 코드(40)는, C/C++, 파스칼(PASCAL), 파이썬(Python), 매틀랩(MATLAB), 셈툴(CEMTool), 리스프(LISP), 아이엘(IL), 피엘시(PLC) 및 임베디드(embedded) 계열을 포함하는 군에서 선택된 언어로 작성된 것일 수 있다. 코드 제너레이터(330)에 의해 생성된 변환된 코드(40)는 파일(400)에 저장될 수 있다.
The code generator 330 receives the parse
사용자는 각종 수치연산을 위하여 특정 프로그래밍 언어로 소스코드(10)를 작성할 수 있는데, 작성된 소스코드(10)의 알고리즘을 다른 언어 환경에서도 동작시켜야 하는 경우가 있을 수 있다. 예를 들어, 파이썬과 같은 오픈소스 프로그램에서는 이미 작성된 다양한 스크립트가 공개되어 있는데, 본 발명에 따르면 이와 같이 파이썬에서 작성된 스크립트를 매틀랩 스크립트 파일과 혼합하여 활용할 수 있게 된다.
The user may write the
컴파일러(350)는, 파일(400)에 저장된 변환된 코드(40)를 컴파일(compile)하여 재사용할 수 있다. 예를 들어, 도 6에 도시된 바와 같이, 변환된 코드(40)가 C 또는 C++로 되어있는 경우, 외부 컴파일러(350)가 컴파일을 수행하여 DLL(Dynamic Linking Library)을 생성할 수 있다. 커널 모듈(200)의 플레이어(210) 및 디버거(220)는, 외부 라이브러리뿐 아니라 컨버전 모듈(300)의 컴파일러(350)에서 생성된 DLL을 포함하여 작동할 수 있다.
The
이와 같이, 본 발명의 일실시예에 따른 프로그래밍 언어 통합 처리 시스템에서는, 수치연산 시 사용되는 다양한 언어를 수용할 수 있는 임포터(110) 및 익스포터(310)를 구현함으로써, 각 언어에서 사용되는 계산 작업을 하나의 통합된 환경에서 수행할 수 있고, 기존에 알고 있던 언어나 친숙한 언어로 소스코드(10)를 작성할 수 있으므로 개발 노력이 절감되며, 개발된 소스코드(10)를 DLL과 같은 형태로 변환하여 활용 범위를 확장할 수 있다.
As described above, in the programming language integrated processing system according to the embodiment of the present invention, by implementing the
이상 설명한 본 발명은 본 발명이 속한 기술분야에서 통상의 지식을 가진 자에 의하여 다양한 변형이나 응용이 가능하며, 본 발명에 따른 기술적 사상의 범위는 아래의 특허청구범위에 의하여 정해져야 할 것이다.The present invention may be embodied in many other specific forms without departing from the spirit or essential characteristics and scope of the invention.
10: 소스 코드 20: 파스 트리 데이터
31: xml 32: 시리얼 데이터
40: 변환된 코드 100: 데이터 임포트 모듈
110: 임포터 120: 파서
200: 커널 모듈 210: 플레이어
220: 디버거 300: 컨버전 모듈
310: 익스포터 320: 시리얼라이저
330: 코드 제너레이터 340: 변환 사전
350: 컴파일러 400: 파일10: source code 20: parse tree data
31: xml 32: serial data
40: converted code 100: data import module
110: importer 120: parser
200: Kernel module 210: Player
220: Debugger 300: Conversion module
310: Exposer 320: Serializer
330: Code generator 340: Conversion dictionary
350: Compiler 400: Files
Claims (7)
소스코드(10) 및 언어 정보를 이용해 파싱 프로세스(parsing process)를 수행하여 파스 트리 데이터(parse tree data)(20)를 생성하는 데이터 임포트(data import) 모듈(100);
상기 파스 트리 데이터(20)를 실행하는 플레이어(player)(210)를 포함하는 커널 모듈(200); 및
상기 파스 트리 데이터(20)를 미리 설정된 형태로 파일(file)(400)에 저장하는 익스포터(exporter)(310), 및 상기 익스포터(310)로부터 파스 트리 데이터(20)를 전달받아 미리 설정된 언어에 따른 변환 사전(dictionary)(340)을 참조하여 변환된 코드(40)를 생성하는 코드 제너레이터(code generator)(330)를 포함하는 컨버전(conversion) 모듈(300)을 포함하며,
상기 익스포터(310)는,
상기 파스 트리 데이터(20)를 시리얼 데이터(32) 형태로 상기 파일(400)에 저장하는 시리얼라이저(serializer)(320)를 더 포함하는 것을 특징으로 하는, 프로그래밍 언어 통합 처리 시스템.
A programming language integrated processing system,
A data import module 100 for performing parse process using source code 10 and language information to generate parse tree data 20;
A kernel module 200 including a player 210 executing the parse tree data 20; And
An exporter 310 for storing the parse tree data 20 in a file 400 in a predetermined form and a parser for receiving the parse tree data 20 from the exporter 310, A conversion module 300 comprising a code generator 330 for generating a translated code 40 with reference to a translation dictionary 340 according to the present invention,
The exporter 310 may include:
Further comprising a serializer (320) for storing the parse tree data (20) in the file (400) in the form of serial data (32).
외부 라이브러리를 이용하여 동작하는 것을 특징으로 하는, 프로그래밍 언어 통합 처리 시스템.
The game system according to claim 1, wherein the player (210)
Wherein the program language integrated processing system operates using an external library.
상기 파스 트리 데이터(20)에서 버그를 찾아내는 디버거(debugger)(220)를 더 포함하는 것을 특징으로 하는, 프로그래밍 언어 통합 처리 시스템.
The apparatus of claim 1, wherein the kernel module (200)
Further comprising a debugger (220) for finding bugs in the parse tree data (20).
미리 입력된 프리셋(preset) 정보에 포함된 언어 정보를 이용해 파싱 프로세스를 수행하는 것을 특징으로 하는, 프로그래밍 언어 통합 처리 시스템.
The data import module according to claim 1, wherein the data import module (100)
Wherein the parsing process is performed using the language information included in the preset information previously input.
상기 파일(400)에 저장된 변환된 코드(40)를 컴파일(compile)하여 출력하는 컴파일러(compiler)(350)를 더 포함하는 것을 특징으로 하는, 프로그래밍 언어 통합 처리 시스템.
The method according to claim 1,
Further comprising a compiler (350) for compiling and outputting the converted code (40) stored in the file (400).
C/C++, 파스칼(PASCAL), 파이썬(Python), 매틀랩(MATLAB), 셈툴(CEMTool), 리스프(LISP), 아이엘(IL), 피엘시(PLC) 및 임베디드(embedded) 계열을 포함하는 군에서 선택된 언어로 작성된 것을 특징으로 하는, 프로그래밍 언어 통합 처리 시스템.The method of claim 1, wherein the source code (10) or the converted code (40)
In the group including C / C ++, PASCAL, Python, MATLAB, CEMTool, LISP, IL, PLI and embedded, And the selected language is written in a selected language.
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
KR1020140044525A KR101585044B1 (en) | 2014-04-15 | 2014-04-15 | Integrated processing system for programming languages |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
KR1020140044525A KR101585044B1 (en) | 2014-04-15 | 2014-04-15 | Integrated processing system for programming languages |
Publications (2)
Publication Number | Publication Date |
---|---|
KR20150118682A KR20150118682A (en) | 2015-10-23 |
KR101585044B1 true KR101585044B1 (en) | 2016-01-13 |
Family
ID=54427161
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
KR1020140044525A KR101585044B1 (en) | 2014-04-15 | 2014-04-15 | Integrated processing system for programming languages |
Country Status (1)
Country | Link |
---|---|
KR (1) | KR101585044B1 (en) |
Cited By (1)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US11636022B2 (en) | 2019-04-16 | 2023-04-25 | Samsung Electronics Co., Ltd. | Server and control method thereof |
-
2014
- 2014-04-15 KR KR1020140044525A patent/KR101585044B1/en active IP Right Grant
Cited By (1)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US11636022B2 (en) | 2019-04-16 | 2023-04-25 | Samsung Electronics Co., Ltd. | Server and control method thereof |
Also Published As
Publication number | Publication date |
---|---|
KR20150118682A (en) | 2015-10-23 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
US7992140B2 (en) | Compiler supporting programs as data objects | |
CN105164641B (en) | Expand and develop environment | |
CN110149800B (en) | Apparatus for processing abstract syntax tree associated with source code of source program | |
JP4157016B2 (en) | Compiler apparatus and compiling method | |
US20130139137A1 (en) | Systems and Methods for Customizing Optimization/Transformation/ Processing Strategies | |
US20180203676A1 (en) | Removing library objects from a static library | |
CN108595334B (en) | Method and device for calculating dynamic slices of Java program and readable storage medium | |
RU2347269C2 (en) | System and method of declarative definition and use of subclasses in marking | |
US20150020051A1 (en) | Method and apparatus for automated conversion of software applications | |
KR101585044B1 (en) | Integrated processing system for programming languages | |
CN111158665B (en) | Code generation method and device, electronic equipment and storage medium | |
JP6651974B2 (en) | Information processing apparatus, compiling method and compiler program | |
Contrastin et al. | Units-of-measure correctness in Fortran programs | |
US9304743B1 (en) | Converting from incorrect program code to correct program code | |
CN109359055B (en) | Data testing method and device | |
KR20220047928A (en) | source modification engine | |
Bezzubikov et al. | Automatic dynamic binary translator generation from instruction set description | |
JP2011129102A (en) | Method and device for endian conversion | |
JPH0736680A (en) | Parallelized program development aid device | |
Sharma et al. | Finding substitutable binary code for reverse engineering by synthesizing adapters | |
Visser | Understanding software through linguistic abstraction | |
CN109271237B (en) | Simulation control method and device | |
Korenkov et al. | Declarative target architecture definition for data-driven development toolchain | |
Porubän et al. | Model-aware language specification with java | |
KR101585048B1 (en) | Algorithm simulation system based on diagram |
Legal Events
Date | Code | Title | Description |
---|---|---|---|
A201 | Request for examination | ||
E902 | Notification of reason for refusal | ||
E701 | Decision to grant or registration of patent right | ||
GRNT | Written decision to grant | ||
FPAY | Annual fee payment |
Payment date: 20181107 Year of fee payment: 4 |
|
FPAY | Annual fee payment |
Payment date: 20191205 Year of fee payment: 5 |