KR101422737B1 - Mixed language code simultaneous running device and method - Google Patents

Mixed language code simultaneous running device and method Download PDF

Info

Publication number
KR101422737B1
KR101422737B1 KR1020120123511A KR20120123511A KR101422737B1 KR 101422737 B1 KR101422737 B1 KR 101422737B1 KR 1020120123511 A KR1020120123511 A KR 1020120123511A KR 20120123511 A KR20120123511 A KR 20120123511A KR 101422737 B1 KR101422737 B1 KR 101422737B1
Authority
KR
South Korea
Prior art keywords
user
code
syntax
language
function
Prior art date
Application number
KR1020120123511A
Other languages
Korean (ko)
Other versions
KR20140056977A (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 KR1020120123511A priority Critical patent/KR101422737B1/en
Publication of KR20140056977A publication Critical patent/KR20140056977A/en
Application granted granted Critical
Publication of KR101422737B1 publication Critical patent/KR101422737B1/en

Links

Images

Classifications

    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F9/00Arrangements for program control, e.g. control units
    • G06F9/06Arrangements 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/30Arrangements for executing machine instructions, e.g. instruction decode
    • G06F9/38Concurrent instruction execution, e.g. pipeline or look ahead
    • G06F9/3885Concurrent instruction execution, e.g. pipeline or look ahead using a plurality of independent parallel functional units

Landscapes

  • Engineering & Computer Science (AREA)
  • Software Systems (AREA)
  • Theoretical Computer Science (AREA)
  • Physics & Mathematics (AREA)
  • General Engineering & Computer Science (AREA)
  • General Physics & Mathematics (AREA)
  • Devices For Executing Special Programs (AREA)

Abstract

다중 언어 코드 동시 실행 장치와 그 방법이 개시된다. 복수의 프로그래밍 언어가 혼재된 사용자 작성 코드를 해석하고 실행하는 다중 언어 코드 동시 실행 장치는, 상기 사용자 작성 코드를 입력받는 에디터; 상기 에디터에 의해 입력된 상기 사용자 작성 코드를 코딩 구획별로 구분하여 상기 코딩 구획에 상응하는 프로그래밍 언어 문법 구조에서 내부 통합 구문 구조로 변환하여 순차 실행하는 런타임 실행부; 및 상기 순차 실행 과정에서 필요한 함수 처리, 변수 처리 혹은 디버깅을 보조하는 실행 보조 엔진을 포함할 수 있다.A multi-language code concurrent execution apparatus and method thereof are disclosed. An apparatus for concurrently executing a multi-language code for interpreting and executing a user-written code in which a plurality of programming languages are mixed includes an editor receiving the user-created code; A run-time execution unit for dividing the user-created code input by the editor into coding segments, converting the user-generated codes into an internal integrated syntax structure from a programming language grammar structure corresponding to the coding segment, and sequentially executing the user- And an execution auxiliary engine for assisting in function processing, variable processing or debugging necessary in the sequential execution process.

Description

다중 언어 코드 동시 실행 장치와 그 방법{Mixed language code simultaneous running device and method}[0001] The present invention relates to a device for simultaneously executing multiple language codes,

본 발명은 다중 언어 코드 동시 실행 장치와 그 방법에 관한 것이다.
The present invention relates to an apparatus and a method for simultaneously executing a multi-language code.

기존의 프로그래밍 소프트웨어(IDE, 통합 개발 환경)는 하나의 프로그래밍 언어만을 인식함으로써 하나의 프로그래밍 언어로 작성된 소스 코드만을 처리할 수 있었다. 따라서, 예전부터 작성되어온 많은 오픈 코드들을 일일이 해당 프로그래밍 언어로 번역하여 사용하거나 독립적으로 개발하게 됨으로써, 코드 재활용성이 떨어지고, 중복 개발 비용이 소요되며, 번역 과정에서 생겨난 오류까지 문제가 되었다. Conventional programming software (IDE, integrated development environment) recognized only one programming language, and was able to process only the source code written in one programming language. As a result, many of the open codes that have been written in the past have been translated into the corresponding programming languages, or independently developed, resulting in poor code reusability, redundant development costs, and errors in the translation process.

근래 들어 윈도우즈(Windows) 뿐만 아니라 안드로이드 OS, 맥 OS, iOS 등 여러 운영체제가 활용되고 있으며, 이로 인해 각 운영체제 상에서의 프로그램 개발에 필요한 새로운 프로그래밍 언어의 습득과 번역에 많은 비용이 발생하고 있다. In recent years, various operating systems such as Android OS, Mac OS, iOS have been used in addition to Windows, resulting in costly acquisition and translation of a new programming language required for program development on each operating system.

또한, 연구자의 경우에도 여러 연구자가 구현해 놓은 다양한 프로그래밍 코드를 사용하기 위해서는 일일이 해당 언어를 습득하여야 하는 부담이 존재하고 있다. In addition, even in the case of researchers, there is a burden to learn a language in order to use various programming codes implemented by various researchers.

한국공개특허공보 제10-2006-0104505호에는 임의의 프로그래밍 언어로 작성된 제1 데이터 파일을 특정 중간 언어로 작성되는 제2 데이터 파일로 변환하는 중간 언어 변환단계를 가지는 종합 문자열 분석기 및 그 분석 방법이 개시되어 있지만, 여전히 하나의 언어로 작성된 범용 코드가 다른 상용의 프로그래밍 소프트웨어에 의해 실행되는 것에 불과한 한계가 있다.
Korean Patent Laid-Open Publication No. 10-2006-0104505 discloses a comprehensive character string analyzer having an intermediate language conversion step of converting a first data file written in a certain programming language into a second data file written in a specific intermediate language, There is a limitation that the general-purpose code still written in one language is executed by other commercially available programming software.

한국공개특허공보 제10-2006-0104505호Korean Patent Laid-Open No. 10-2006-0104505

본 발명은 과거에 다른 프로그래밍 언어로 구현한 코드를 변형없이 복사(copy)하여 사용할 수 있어 별도의 번역 과정이나 독립적인 재개발이 필요치 않아 개발 비용이 절감되고 재활용성 및 안전성이 높아지는 다중 언어 코드 동시 실행 장치 및 방법을 제공하기 위한 것이다. The present invention can copy and use code implemented in another programming language in the past without any modification, so that it is possible to simultaneously execute a multi-language code in which a separate translation process or independent redevelopment is not required, thereby reducing development cost and increasing recyclability and safety Apparatus, and method.

본 발명은 운영체제별로 개별 프로그래밍 언어를 습득할 필요 없이 다른 운영체제 상의 프로그래밍 언어로 작성된 코드로 동일한 동작 수행이 가능하며, 이종 운영체제 간의 재개발 비용이 절감되는 다중 언어 코드 동시 실행 장치 및 방법을 제공하기 위한 것이다. An object of the present invention is to provide an apparatus and a method for simultaneously executing a multi-language code in which the same operation can be performed with a code written in a programming language on another operating system without having to acquire a separate programming language for each operating system, .

본 발명은 과거 연구자가 활용한 여러 가지 프로그래밍 언어의 코드를 가져와 복사하여 사용할 수 있게 되므로 연구자의 여러 프로그래밍 언어 습득에 대한 부담감이 줄어들어 연구 수행의 집중력과 효율을 높일 수 있는 다중 언어 코드 동시 실행 장치 및 방법을 제공하기 위한 것이다.Since the present invention can take and copy codes of various programming languages utilized by researchers in the past, it is possible to reduce the burden on the researchers to learn various programming languages, thereby enhancing the concentration and efficiency of research, Method.

본 발명의 이외의 목적들은 하기의 설명을 통해 쉽게 이해될 수 있을 것이다.
Other objects of the present invention will become readily apparent from the following description.

본 발명의 일 측면에 따르면, 복수의 프로그래밍 언어가 혼재된 사용자 작성 코드를 해석하고 실행하는 다중 언어 코드 동시 실행 장치로서, 상기 사용자 작성 코드를 입력받는 에디터; 상기 에디터에 의해 입력된 상기 사용자 작성 코드를 코딩 구획별로 구분하여 상기 코딩 구획에 상응하는 프로그래밍 언어 문법 구조에서 내부 통합 구문 구조로 변환하여 순차 실행하는 런타임 실행부; 및 상기 순차 실행 과정에서 필요한 함수 처리, 변수 처리 혹은 디버깅을 보조하는 실행 보조 엔진을 포함하는 다중 언어 코드 동시 실행 장치가 제공된다. According to an aspect of the present invention, there is provided an apparatus for concurrently executing a multi-language code for interpreting and executing a user-written code in which a plurality of programming languages are mixed, the apparatus comprising: A run-time execution unit for dividing the user-created code input by the editor into coding segments, converting the user-generated codes into an internal integrated syntax structure from a programming language grammar structure corresponding to the coding segment, and sequentially executing the user- And an execution auxiliary engine for assisting in function processing, variable processing, or debugging, which are necessary in the sequential execution process, are provided.

상기 런타임 실행부는, 상기 사용자 작성 코드를 구문 작성에 이용된 프로그래밍 언어에 따라 복수의 코딩 구획으로 구분하고, 코딩 구획별로 구분된 구문들을 상기 내부 통합 구문 구조로 변환하는 변환기와; 상기 내부 통합 구문 구조로 변환된 변환 구문들을 순차 실행하는 순차 실행기를 포함할 수 있다.Wherein the runtime execution unit comprises: a converter for dividing the user-generated code into a plurality of coding zones according to a programming language used for creating a syntax and converting the statements divided into coding zones into the internal integrated syntax structure; And a sequential executor for sequentially executing the transformation statements converted into the internal integrated syntax structure.

상기 런타임 실행부는 상기 코딩 구획별로 구분된 구문들을 상기 코딩 구획에 상응하는 프로그래밍 언어의 문법에 기초하여 문법 검사를 수행하는 전처리기를 더 포함할 수 있다.The runtime execution unit may further include a preprocessor for performing grammar checking based on a grammar of a programming language corresponding to the coding segment, the phrases classified by the coding segment.

상기 내부 통합 구문 구조는 순차 실행 가능한 절차용 노드 구조로서 트리 노드 구조일 수 있다.The internal unified syntax structure may be a tree node structure as a node structure for a sequentially executable procedure.

상기 트리 노드 구조는 임의의 코딩 구획 내의 구문들을 행 단위로 구문 트리로 변환하고, 상기 구문 트리의 차일드 노드는 독립적으로 순차 수행 가능한 서브 트리를 가질 수 있다.The tree node structure converts the statements in an arbitrary coding section into a syntax tree on a row-by-row basis, and the child nodes of the syntax tree can have independent subtree-capable subtrees.

상기 순차 실행기는 상기 구문 트리 및 상기 서브 트리의 노드에 해당하는 명령어를 트리 노드 구조에 따라 순차적으로 실행할 수 있다.The sequential executor may sequentially execute instructions corresponding to nodes of the syntax tree and the subtree according to a tree node structure.

상기 런타임 실행부는 사용자 인터페이스 및 운영체제 장치와의 입출력을 담당하는 입출력기를 더 포함할 수 있다.The runtime execution unit may further include an input / output unit for input / output with a user interface and an operating system device.

상기 실행 보조 엔진은, 수학 함수, 문자열 함수, 파일(File) 함수, 시간/날짜(Time/Date) 함수 중 적어도 하나를 포함하는 내장 함수와, 사용자에 의해 신규 정의된 사용자 정의 함수를 처리하는 함수 처리 엔진과; 상기 사용자 작성 코드에서 정의된 변수 값의 저장 및 출력 시 데이터 타입을 변환하고 검증하는 변수 처리 엔진과; 상기 순차 실행 과정 중에 발생한 오류에 대한 처리를 수행하는 디버깅 엔진 중 적어도 하나를 포함할 수 있다.Wherein the execution auxiliary engine includes a built-in function including at least one of a mathematical function, a string function, a file function, and a time / date function, and a function for processing a user- A processing engine; A variable processing engine for converting and verifying a data type when storing and outputting a variable value defined by the user creation code; And a debugging engine that performs processing for an error that occurs during the sequential execution process.

한편 본 발명의 다른 측면에 따르면, 복수의 프로그래밍 언어가 혼재된 사용자 작성 코드를 해석하고 실행하는 다중 언어 코드 동시 실행 장치에서의 다중 언어 코드 동시 실행 방법 및 이를 수행하기 위한 프로그램이 기록된 기록매체가 제공된다. According to another aspect of the present invention, there is provided a method for concurrently executing a multi-language code in a multi-language code concurrent execution apparatus for interpreting and executing a user-written code in which a plurality of programming languages are mixed and a recording medium on which a program for executing the same is recorded / RTI >

일 실시예에 따른 다중 언어 코드 동시 실행 방법은, (a) 에디터를 통해 상기 사용자 작성 코드를 입력받는 단계; (b) 상기 에디터에 의해 입력된 상기 사용자 작성 코드를 코딩 구획별로 구분하는 단계; (c) 상기 코딩 구획에 상응하는 프로그래밍 언어 문법 구조에서 내부 통합 구문 구조로 변환하는 단계; 및 (d) 상기 내부 통합 구문 구조로 변환된 변환 구문들을 순차 실행하는 단계를 포함할 수 있다. 상기 내부 통합 구문 구조는 순차 실행 가능한 절차용 노드 구조로서 트리 노드 구조일 수 있다. 상기 트리 노드 구조는 임의의 코딩 구획 내의 구문들을 행 단위로 구문 트리로 변환하고, 상기 구문 트리의 차일드 노드는 독립적으로 순차 수행 가능한 서브 트리를 가질 수 있다.A method for simultaneously executing a multi-language code according to an embodiment includes: (a) receiving the user creation code through an editor; (b) dividing the user creation code input by the editor into coding segments; (c) converting from a programming language grammar structure corresponding to the coding segment into an internal integrated syntax structure; And (d) sequentially executing the transformation statements converted into the internal unified syntax structure. The internal unified syntax structure may be a tree node structure as a node structure for a sequentially executable procedure. The tree node structure converts the statements in an arbitrary coding section into a syntax tree on a row-by-row basis, and the child nodes of the syntax tree can have independent subtree-capable subtrees.

상기 단계 (c) 이전에, 상기 코딩 구획별로 구분된 구문들을 상기 코딩 구획에 상응하는 프로그래밍 언어의 문법에 기초하여 문법 검사를 수행하는 단계를 더 포함할 수 있다.The method may further include, before the step (c), performing a grammar check based on a syntax of a programming language corresponding to the coding segment, the phrases classified by the coding segment.

상기 단계 (d)는 상기 구문 트리 및 상기 서브 트리의 노드에 해당하는 명령어를 트리 노드 구조에 따라 순차적으로 실행할 수 있다.The step (d) may sequentially execute the instruction words corresponding to the nodes of the syntax tree and the subtree according to the tree node structure.

상기 단계 (d)는 실행 보조 엔진을 통해 상기 순차 실행 과정에서 필요한 함수 처리, 변수 처리 혹은 디버깅을 보조받을 수 있다.The step (d) may be assisted with necessary function processing, variable processing, or debugging in the sequential execution process through the execution assistant engine.

전술한 것 외의 다른 측면, 특징, 이점이 이하의 도면, 특허청구범위 및 발명의 상세한 설명으로부터 명확해질 것이다.
Other aspects, features, and advantages will become apparent from the following drawings, claims, and detailed description of the invention.

본 발명의 실시예에 따르면, 과거에 다른 프로그래밍 언어로 구현한 코드를 변형없이 복사하여 사용할 수 있어 별도의 번역 과정이나 독립적인 재개발이 필요치 않아 개발 비용이 절감되고 재활용성 및 안전성이 높아지는 효과가 있다. According to the embodiment of the present invention, it is possible to copy and use codes implemented in other programming languages in the past without modification, so there is no need for a separate translation process or independent redevelopment, thereby reducing development cost, increasing recyclability and safety .

또한, 운영체제별로 개별 프로그래밍 언어를 습득할 필요 없이 다른 운영체제 상의 프로그래밍 언어로 작성된 코드로 동일한 동작 수행이 가능하며, 이종 운영체제 간의 재개발 비용이 절감되는 효과가 있다. In addition, it is possible to perform the same operation with code written in a programming language on another operating system without having to acquire a separate programming language for each operating system, thereby reducing the redevelopment cost of heterogeneous operating systems.

또한, 과거 연구자가 활용한 여러 가지 프로그래밍 언어의 코드를 가져와 복사하여 사용할 수 있게 되므로 연구자의 여러 프로그래밍 언어 습득에 대한 부담감이 줄어들어 연구 수행의 집중력과 효율을 높일 수 있는 효과가 있다.
In addition, since it is possible to copy and use codes of various programming languages utilized by researchers in the past, the burden of researchers acquiring programming languages is reduced, thereby enhancing concentration and efficiency of research.

도 1은 본 발명의 일 실시예에 따른 다중 언어 코드 동시 실행 장치의 구성 블록도,
도 2는 복수의 프로그래밍 언어로 작성된 프로그래밍 코딩 구문의 일 예시를 나타낸 도면,
도 3은 내부 통합 구문 구조와 각종 프로그래밍 언어들 간의 포함 관계를 나타낸 벤다이어그램,
도 4는 내부 통합 구문 구조로 변환하기 위한 사용자 작성 코드의 예시를 나타낸 도면,
도 5은 도 4에 예시된 사용자 작성 코드를 내부 통합 구문 구조로 변환한 경우 실행의 구문 트리를 나타낸 도면,
도 6은 도 5의 기본 트리에 포함되는 서브 트리들에 대한 독립적 노드 구조를 나타낸 도면,
도 7은 본 발명의 일 실시예에 따른 다중 언어 코드 동시 실행 방법의 순서도.
1 is a block diagram of an apparatus for simultaneously executing a multi-language code according to an embodiment of the present invention;
2 is a diagram illustrating an example of a programming coding syntax written in a plurality of programming languages;
FIG. 3 is a diagram showing an internal integrated syntax structure and a Venn diagram showing the inclusion relation between various programming languages,
4 is a diagram illustrating an example of user-written code for conversion to an internal unified syntax structure,
FIG. 5 is a diagram showing a syntax tree of execution when the user creation code illustrated in FIG. 4 is converted into an internal integrated syntax structure;
FIG. 6 is a diagram illustrating an independent node structure for subtrees included in the basic tree of FIG. 5;
7 is a flowchart of a method for simultaneously executing multiple language codes according to an embodiment of the present invention;

본 발명은 다양한 변환을 가할 수 있고 여러 가지 실시예를 가질 수 있는 바, 특정 실시예들을 도면에 예시하고 상세한 설명에 상세하게 설명하고자 한다. 그러나, 이는 본 발명을 특정한 실시 형태에 대해 한정하려는 것이 아니며, 본 발명의 사상 및 기술 범위에 포함되는 모든 변환, 균등물 내지 대체물을 포함하는 것으로 이해되어야 한다. 본 발명을 설명함에 있어서 관련된 공지 기술에 대한 구체적인 설명이 본 발명의 요지를 흐릴 수 있다고 판단되는 경우 그 상세한 설명을 생략한다.BRIEF DESCRIPTION OF THE DRAWINGS The present invention is capable of various modifications and various embodiments, and specific embodiments are illustrated in the drawings and described in detail in the detailed description. It is to be understood, however, that the invention is not to be limited to the specific embodiments, but includes all modifications, equivalents, and alternatives falling within the spirit and scope of the invention. DETAILED DESCRIPTION OF THE PREFERRED EMBODIMENTS Hereinafter, the present invention will be described in detail with reference to the accompanying drawings.

제1, 제2 등의 용어는 다양한 구성요소들을 설명하는데 사용될 수 있지만, 상기 구성요소들은 상기 용어들에 의해 한정되어서는 안 된다. 상기 용어들은 하나의 구성요소를 다른 구성요소로부터 구별하는 목적으로만 사용된다. The terms first, second, etc. may be used to describe various components, but the components should not be limited by the terms. The terms are used only for the purpose of distinguishing one component from another.

본 출원에서 사용한 용어는 단지 특정한 실시예를 설명하기 위해 사용된 것으로, 본 발명을 한정하려는 의도가 아니다. 단수의 표현은 문맥상 명백하게 다르게 뜻하지 않는 한, 복수의 표현을 포함한다. 본 출원에서, "포함하다" 또는 "가지다" 등의 용어는 명세서상에 기재된 특징, 숫자, 단계, 동작, 구성요소, 부품 또는 이들을 조합한 것이 존재함을 지정하려는 것이지, 하나 또는 그 이상의 다른 특징들이나 숫자, 단계, 동작, 구성요소, 부품 또는 이들을 조합한 것들의 존재 또는 부가 가능성을 미리 배제하지 않는 것으로 이해되어야 한다.The terminology used in this application is used only to describe a specific embodiment and is not intended to limit the invention. The singular expressions include plural expressions unless the context clearly dictates otherwise. In the present application, the terms "comprises" or "having" and the like are used to specify that there is a feature, a number, a step, an operation, an element, a component or a combination thereof described in the specification, But do not preclude the presence or addition of one or more other features, integers, steps, operations, elements, components, or combinations thereof.

또한, 명세서에 기재된 "…부", "…기", "…엔진" 등의 용어는 적어도 하나의 기능이나 동작을 처리하는 단위를 의미하며, 이는 하드웨어나 소프트웨어 또는 하드웨어 및 소프트웨어의 결합으로 구현될 수 있다.Also, the terms " part, "" ... "," engine ", and the like described in the specification mean units for processing at least one function or operation, and may be implemented by hardware or software or a combination of hardware and software .

이하, 본 발명의 실시예를 첨부한 도면들을 참조하여 상세히 설명하기로 하며, 첨부 도면을 참조하여 설명함에 있어, 동일하거나 대응하는 구성 요소는 동일한 도면번호를 부여하고 이에 대한 중복되는 설명은 생략하기로 한다.
DETAILED DESCRIPTION OF THE PREFERRED EMBODIMENT Hereinafter, embodiments of the present invention will be described in detail with reference to the accompanying drawings. Referring to the accompanying drawings, the same or corresponding components are denoted by the same reference numerals, .

도 1은 본 발명의 일 실시예에 따른 다중 언어 코드 동시 실행 장치의 구성 블록도이고, 도 2는 복수의 프로그래밍 언어로 작성된 프로그래밍 코딩 구문의 일 예시를 나타낸 도면이며, 도 3은 내부 통합 구문 구조와 각종 프로그래밍 언어들 간의 포함 관계를 나타낸 벤다이어그램이다. FIG. 1 is a block diagram of an apparatus for simultaneously executing a multi-language code according to an embodiment of the present invention. FIG. 2 is a diagram illustrating an example of a programming coding syntax written in a plurality of programming languages. And the programming language.

본 발명의 일 실시예에 따른 다중 언어 코드 동시 실행 장치는 하나의 프로그래밍 소프트웨어 작업용 소스 코드 내에 여러 프로그래밍 언어(예를 들어, 포트란(Fortran), 베이직(Basic), C, Lisp 등)를 이용한 구문을 혼합 기재하고 각 프로그래밍 언어로 작성된 사용자 정의 함수, 변수, 클래스 등을 상호 공유하면서 교차 호출하여 동시 실행함으로써 하나의 프로그래밍 언어로 작성된 것과 같이 프로그래밍 언어별로 구분없이 인식하여 수행하는 것이 가능한 것을 특징으로 한다.The apparatus for simultaneously executing a multi-language code according to an embodiment of the present invention may include a syntax using several programming languages (for example, Fortran, Basic, C, Lisp, etc.) And a user-defined function, a variable, and a class written in each programming language are mutually shared while being mutually shared and simultaneously executed. Thus, it is possible to recognize and execute the program independently of each programming language as written in one programming language.

도 1을 참조하면, 본 발명의 일 실시예에 따른 다중 언어 코드 동시 실행 장치(1)는 에디터(100), 런타임 실행부(200), 실행 보조 엔진(300)을 포함한다. Referring to FIG. 1, an apparatus for simultaneously executing a multi-language code according to an exemplary embodiment of the present invention includes an editor 100, a runtime executing unit 200, and an execution assistant engine 300.

에디터(100)는 동시 실행하고자 하는 다중 언어 프로그래밍 코딩 소스의 입력 및 편집이 가능한 코드 작성 창이다. 예를 들어 키보드, 마우스 등과 같은 사용자 입력 장치를 통해 에디터(100) 상에서 사용자가 직접 소스 코드를 타이핑하거나 이미 구현된 코드 일부 혹은 전체를 복사 및 편집할 수 있다. The editor 100 is a code creation window capable of inputting and editing of a multilingual programming coding source to be simultaneously executed. For example, the user can directly type the source code on the editor 100 through a user input device such as a keyboard, a mouse, or the like, or copy or edit part or all of the already-implemented code.

본 발명에서 에디터(100)에 입력되는 프로그래밍 코딩 소스는 복수의 프로그래밍 언어로 작성될 수 있다. 이 경우 프로그래밍 코딩 구문은 프로그래밍 언어별로 하나 이상의 코딩 구획으로 구분될 수 있다.The programming coding source input to the editor 100 in the present invention can be written in a plurality of programming languages. In this case, the programming coding syntax can be divided into one or more coding sections for each programming language.

도 2를 참조하면, 복수의 프로그래밍 언어로 작성된 프로그래밍 코딩 구문의 일 예시가 도시되어 있다. 도 2에서는 프로그래밍 코딩 구문이 제1 코딩 구획(A1)과 제2 코딩 구획(A2)으로 구분되며, 제1 코딩 구획(A1)은 프로그래밍 언어 중 Basic에 관한 구획이고, 제2 코딩 구획(A2)은 프로그래밍 언어 중 Fortran에 관한 구획인 것으로 예시되어 있다. Referring to FIG. 2, an example of a programming coding syntax written in a plurality of programming languages is shown. In FIG. 2, the programming coding syntax is divided into a first coding section A1 and a second coding section A2. The first coding section A1 is a Basic section of a programming language. The second coding section A2 is a second coding section Is illustrated as a compartment for Fortran among programming languages.

제1 코딩 구획(A1) 내에 기재된 코딩 구문에 대해서는 명령어 및 문장 구조가 Basic을 따르고 있으며, 따라서 그 문법, 내부 변수 처리 등이 Basic 언어 포맷으로 해석된다. 제2 코딩 구획(A2) 내에 기재된 코딩 구문에 대해서는 명령어 및 문장 구조가 Fortran을 따르고 있으며, 따라서 그 문법, 내부 변수 처리 등이 Fortran 언어 포맷으로 해석된다. For the coding syntax described in the first coding section A1, the command and the sentence structure follow Basic, so that the grammar, internal variable processing, and the like are interpreted in the basic language format. For the coding syntax described in the second coding section A2, the instructions and the sentence structure conform to Fortran, so that the grammar, internal variable processing, and the like are interpreted in the Fortran language format.

각 코딩 구획(A1, A2)은 구획별 사용 언어 정의 명령어(C1, C2)에 의해 해당 코딩 구획 내의 명령어 및 문법 구조가 어떠한 프로그래밍 언어에 의해 작성되었고, 해석 과정에서 이용할 프로그래밍 언어 포맷이 무엇인지가 결정된다. In each of the coding sections A1 and A2, the instruction language and grammar structure in the corresponding coding section are created by the programming language and the programming language format to be used in the analysis process .

임의의 구획별 사용 언어 정의명령어가 선언된 이후 후순의 구획별 사용 언어 정의 명령어가 선언되기 전까지의 구문들이 하나의 코딩 구획으로 정의되며, 해당 코딩 구획 내에서는 먼저 선언된 사용 언어의 문법에 따라 코딩이 이루어진 것으로 판단한다. The syntax until the language definition command is declared is used, and the syntax until the declaration of the language definition command is defined as a single coding section. In the corresponding coding section, .

도 2에서는 'Language Basic' 및 'Language Fortran'과 같이 Language 명령어 후단에 프로그래밍 언어 타입을 기재함으로써, 각 코딩 구획 내에서 해당 프로그래밍 언어 타입의 규칙에 따라 코딩 구문이 해석되도록 하고 있다. In FIG. 2, programming language types are described at the end of the Language command, such as 'Language Basic' and 'Language Fortran', so that the coding syntax is interpreted according to the rules of the programming language type in each coding section.

즉, Language 명령어 이후에 프로그래밍 언어 타입을 선언함으로써 구획별 사용 언어를 정의하고 있으나, 이는 일 실시예에 불과하며, 본 발명의 권리범위가 이에 한정되는 것은 아니고, 각 구획을 구분할 수 있고 구획별 사용 언어의 인식이 가능한 명령어라면 구획별 사용 언어 정의 명령어로 이용될 수 있음은 물론이다. That is, although language is defined for each language by declaring a programming language type after the Language command, this is only an example, and the scope of the present invention is not limited to this, and it is possible to distinguish each compartment, It is needless to say that the present invention can be used as a language definition command for each segment if it is a command capable of recognizing the language.

또한, 구획별 사용 언어 정의 명령어를 이용한 프로그래밍 언어 타입의 선언 없이 코딩되는 경우에는 사용자 혹은 장치 제공자에 의해 기본적으로(default) 설정된 언어 타입의 문법을 따르는 것으로 결정할 수 있다. 여기서, 기본 설정된 언어 타입으로는 예를 들어 Basic 등과 같은 시스템 기본 언어가 이용될 수 있다. In addition, when the program is coded without declaring a programming language type using the compartmentalized language definition command, it can be determined to follow the grammar of the language type set by the user or the device provider by default. Here, as the default language type, a system basic language such as Basic or the like may be used.

이와 같이 에디터(100)에 입력된 다중 언어 코드는 구획별 사용 연어 정의 명령어에 의해 코딩 구획이 구분되며, 코딩 구획별로 해석에 이용할 프로그래밍 언어 타입을 구분함으로써 언어별 해석 문제가 용이하게 해결될 수 있다. The multi-language code input to the editor 100 is divided into coding segments by the definition word for each segment, and the language-specific analysis problem can be easily solved by classifying the programming language type to be used for analysis in each coding segment .

다시 도1을 참조하면, 런타임 실행부(200)는 에디터(100)에 입력된 다중 언어 코드를 동일 형태의 내부 통합 구문 구조로 변환하고 순차 실행 및 디버깅을 수행한다. Referring again to FIG. 1, the runtime execution unit 200 converts the multilingual code input to the editor 100 into an internal integrated syntax structure of the same type, and performs sequential execution and debugging.

런타임 실행부(200)는 변환기(220), 순차 실행기(230), 입출력기(240)를 포함한다. 실시예에 따라 전처리기(210)를 더 포함할 수 있다. The runtime execution unit 200 includes a converter 220, a sequential executor 230, and an input / output unit 240. And may further include a preprocessor 210 according to an embodiment.

변환기(220)는 에디터(100)에 입력된 사용자 작성 코드를 코딩 구획별로 구분하고 각 코딩 구획별로 적합한 프로그래밍 언어 타입으로 해석하여 동일 형태의 내부 통합 구문 구조를 가지도록 구문 변환을 수행한다. The converter 220 separates the user-written code input into the editor 100 into coding segments, interprets them as a programming language type suitable for each coding segment, and performs syntax conversion so as to have an internal integrated syntax structure of the same type.

에디터(100)에 입력된 사용자 작성 코드는 도 2에 예시된 것과 같은 다중 언어 코드로서, 하나의 프로그래밍 언어 문법만으로는 해석될 수 없는 특징을 가진다. 따라서, 변환기(220)는 사용자 작성 코드의 명령어 및 문법 구조를 코딩 구획별로 정의된 각 프로그래밍 언어 타입별로 후단의 순차 실행기(230)에서 인식 가능한 문법 구조로 변환할 필요가 있다. The user creation code input to the editor 100 is a multi-language code as illustrated in FIG. 2, and can not be interpreted by only one programming language grammar. Accordingly, the translator 220 needs to convert the command and grammar structure of the user-written code into a grammatical structure that can be recognized by the sequential executor 230 at the subsequent stage for each programming language type defined for each coding segment.

변환기(220)에서의 구문 변환에 앞서, 변환기(220)의 전단에 배치된 전처리기(210)에서 코딩 구획별로 정의된 프로그래밍 언어 타입별로 각 코딩 구획 내의 구문들이 문법적으로 하자가 있는지 여부를 검사할 수 있다. 본 발명에서 전처리기(210)의 기능은 변환기(220)에 통합적으로 구현되어 있을 수도 있다. Prior to the syntax conversion in the converter 220, the preprocessor 210 disposed at the previous stage of the converter 220 checks whether the syntaxes in each coding section are syntactically defective for each programming language type defined for each coding division . In the present invention, the functions of the preprocessor 210 may be integrally implemented in the converter 220.

이를 위해 런타임 실행부(200)에는 에디터(100)를 통해 입력될 수 있는 사용자 작성 코드에 적용될 수 있는 다양한 프로그래밍 언어 타입에 대한 명령어 및 문법 구조에 대한 정보가 별도의 메모리(예를 들어, 데이터베이스 등)에 미리 저장되어 있어, 코딩 구획별로 정의된 프로그래밍 언어 타입에 따라 명령어 및 문법 구조의 해석 방법을 달리 하여 사용자 작성 코드 전체에 대한 해석(필요에 따라서는 문법 검사도 포함함)을 완료할 수 있게 된다. To this end, the runtime execution unit 200 may be provided with a separate memory (for example, a database or the like) for instructions and syntax structures for various programming language types that can be applied to the user- ) So that interpretation of the entire user-written code (including grammar checking if necessary) can be completed by varying the interpretation method of the instruction and grammar structure according to the programming language type defined for each coding section do.

변환기(220)에서의 구문 변환 처리를 위해, 런타임 실행부(200)는 다양한 프로그래밍 언어 타입이 가진 기능 명령어, 데이터 구조를 모두 내부 통합 구문 구조로 미리 구현해 두어 변환기(220)에서의 구문 변환에 문제가 없도록 미리 처리해 둘 수 있다. For the syntax conversion processing in the converter 220, the runtime execution unit 200 implements all of the functional instruction words and data structures of various programming language types in an internal integrated syntax structure in advance, It can be processed beforehand.

도 3을 참조하면, 내부 통합 구문 구조와 각종 프로그래밍 언어들 간의 포함 관계가 도시되어 있다. Referring to FIG. 3, an internal integrated syntax structure and a relation between various programming languages are shown.

에디터(100)를 통해 입력되는 사용자 작성 코드는 다양한 프로그래밍 언어로 작성된 코딩 구문이 혼재된 다중 언어 코드이다. 따라서, 내부 통합 구문 구조는 이들 프로그래밍 언어 각각이 가지는 기능 명령어, 데이터 구조를 모두 포함하고 있어야 변환기(220)에서 구문 변환이 원활히 수행될 수 있다. The user-created code input through the editor 100 is a multi-language code in which coding statements written in various programming languages are mixed. Therefore, the internal integrated syntax structure must include all functional commands and data structures of each of the programming languages, so that the translator 220 can smoothly perform the syntax conversion.

예를 들어 도 3에 예시된 것과 같은 경우에는, 내부 통합 구문 구조(10)는 C 구조(21), Basic 구조(22), Lisp 구조(23)를 모두 포함하는 것이 바람직하다. 상세하게는 내부 통합 구문이 처리 가능한 기능은 Basic 언어의 기능, C 언어의 기능, Lisp 언어의 기능의 합집합을 부분집합으로 포함한다(수학식 1 참조). 또한, 내부 통합 구문에 가능한 데이터 구조 역시 Basic 언어의 데이터 구조, C 언어의 데이터 구조, Lisp 언어의 데이터 구조의 합집합을 부분집합으로 포함한다(수학식 2 참조).
For example, in the case illustrated in FIG. 3, it is preferable that the internal integrated syntax structure 10 includes both the C structure 21, the basic structure 22, and the Lisp structure 23. Specifically, the functions that can be processed by the internal integration syntax include a subset of the union of the functions of the Basic language, the functions of the C language, and the functions of the Lisp language (see Equation 1). In addition, the data structure possible in the internal integration syntax also includes a subset of the data structure of the Basic language, the data structure of the C language, and the data structure of the Lisp language as a subset (see Equation 2).

[수학식 1][Equation 1]

내부 통합 구문이 처리 가능한 기능 ⊃ {(Basic 언어의 기능) ∪ (C 언어의 기능) ∪ (Lisp 언어의 기능) ∪ ...}
∪ (function of C language) ∪ (function of Lisp language) ∪ ...}

[수학식 2]&Quot; (2) "

내부 통합 구문에 가능한 데이터 구조 ⊃ {(Basic 언어 데이터 구조) ∪ (C 언어 데이터 구조) ∪ (Lisp 언어 데이터 구조) ∪ ...}Possible data structure in internal integration syntax ⊃ {(Basic language data structure) ∪ (C language data structure) ∪ (Lisp language data structure) ∪ ...}

즉, 내부 통합 구문 구조는 전체집합 U에 해당하며, 각종 프로그래밍 언어들이 전체집합 U의 부분집합으로 존재하게 된다. That is, the internal unified syntax structure corresponds to the entire set U, and various programming languages exist as a subset of the entire set U.

본 실시예에서 내부 통합 구문 구조는 순차 실행 가능한 절차용 노드 구조로서 트리 노드(Tree Node) 구조가 적용되며, 이에 대해서는 추후 관련 도면을 참조하여 설명하기로 한다. In the present embodiment, the internal integrated syntax structure is a node structure for a procedure that can be executed sequentially, and a tree node structure is applied, which will be described later with reference to related drawings.

다시 도 1을 참조하면, 변환기(220)에서 사용자 작성 코드를 순차 실행기(230)에서 인식 가능한 내부 통합 구문 구조, 특히 트리 노드 구조로 해석하는 과정에는 사용자 작성 코드에서 정의된 변수, 사용자가 정의한 함수, Explicit 등의 각종 선언 구문에 대한 해석 및 노드 구조로의 변환이 포함될 수 있다. Referring again to FIG. 1, in the process of interpreting the user-written code into the internal integrated syntax structure recognizable by the sequential executor 230, in particular, the tree node structure, the variables defined in the user-written code, , Interpretation of various declaration statements such as Explicit, and conversion to a node structure.

순차 실행기(230)는 변환기(220)에 의해 구문 변환된 내부 통합 구문에 대하여 원소(노드)에 해당하는 명령어(Command)를 순차적으로 실행한다. The sequential executor 230 sequentially executes commands corresponding to the elements (nodes) with respect to the syntactically-transformed internal unified syntax by the converter 220. [

내부 통합 구문 구조는 트리 노드 구조로서, 탑 노드 및 차일드 노드를 가지는 기본 트리(구문 트리) 및 서브 트리에 따라 순차 실행이 가능한 구문 구조를 가진다. 따라서, 순차 실행기(230)에서는 노드 순서에 따라 해당 노드에 기록된 내용(즉, 해당 노드에 상응하는 명령어)을 순차 실행하며, 실행상에 발생한 오류에 대한 디버깅을 처리할 수 있게 된다. The internal integrated syntax structure is a tree node structure having a basic tree (syntax tree) having a top node and a child node, and a syntax structure capable of being sequentially executed according to a subtree. Accordingly, the sequential executor 230 sequentially executes the contents recorded in the corresponding node (i.e., the instruction corresponding to the corresponding node) according to the order of the nodes, and is able to process debugging for the errors that occur on the execution.

순차 실행 및/또는 디버깅을 위해 순차 실행기(230)는 실행 보조 엔진(300)의 도움을 받는다. The sequential executor 230 is assisted by the execution auxiliary engine 300 for sequential execution and / or debugging.

실행 보조 엔진(300)은 런타임 실행부(200), 특히 순차 실행기(230)에서의 순차 실행 시 혹은 디버깅 시에 필요로 하는 함수 처리, 변수 처리 혹은 디버깅을 보조한다. 실행 보조 엔진(300)은 함수 처리 엔진(310), 변수 처리 엔진(320), 디버깅 엔진(330) 중 적어도 하나를 포함한다. The execution assistant engine 300 assists the function processing, the variable processing, or the debugging, which are required at the time of execution or debugging in the runtime execution unit 200, in particular, the sequential execution unit 230. The execution auxiliary engine 300 includes at least one of a function processing engine 310, a variable processing engine 320, and a debugging engine 330.

함수 처리 엔진(310)은 수학 함수, 문자열 함수, 사용자 작성 코드에서 신규 정의된 사용자 정의 함수 등과 같이 순차 실행에 필요한 다양한 함수들을 처리한다. The function processing engine 310 processes various functions required for sequential execution such as a mathematical function, a string function, a user-defined function newly defined in user-created code, and the like.

순차 실행에 필요한 함수들 중 수학 함수 및 문자열 함수와 같은 내장 함수는 내부 통합 구문 구조에 포함되는 각종 프로그래밍 언어 데이터 구조에서 기본적으로 사용되는 함수들이며, 사용자 정의 함수는 사용자 작성 코드를 통해 신규 정의된 함수이다. 사용자 정의 함수의 경우 내부 통합 구문 구조(트리 노드 구조)로 변환 기록되며, 코드 상에서 해당 함수를 호출한 경우 해당 함수명의 노드 인자를 찾아 해당 노드 인자의 차일드 노드들을 순차적으로 실행하게 된다. Among the functions required for sequential execution, intrinsic functions such as mathematical functions and string functions are functions that are basically used in various programming language data structures included in the internal integrated syntax structure. User-defined functions are functions newly defined through user- to be. In the case of a user-defined function, the transformation is recorded in the internal integrated syntax structure (tree node structure). When the function is called in the code, the node argument of the function name is found and the child nodes of the node parameter are sequentially executed.

이러한 함수 처리 엔진(310)은 내장 함수 처리부와 사용자 정의 함수 처리부를 포함한다. 내장 함수 처리부는 행렬, 복소수, 문자열, 날짜 등과 같은 여러 가지 데이터 타입에 대해 각종 수학 함수, 문자열 함수, 파일(File) 함수, 시간/날짜(Time/Date) 함수를 처리하게 된다. 사용자 정의 함수 처리부는 사용자가 호출한 함수를 인덱스하고, 할당된 변수와 반환되는 값에 대해 검증하는 부분적인 역할과 재귀적 호출에 대한 처리를 담당한다. The function processing engine 310 includes a built-in function processing unit and a user defined function processing unit. The built-in function processor processes various mathematical functions, a string function, a file function, and a time / date function for various data types such as a matrix, a complex number, a string, and a date. The user-defined function processor handles the partial role of indexing the user-called function, verifying the assigned variable and the returned value, and processing the recursive call.

변수 처리 엔진(320)은 사용자 작성 코드에서 정의된 변수 값의 저장 및 출력 시에 데이터 타입을 변환하고 검증한다. 또한, 로컬 변수, 전역 변수, 매개 변수, 상수 변수, 정적(static) 변수 등 각종 변수에 대한 규격화된 처리를 수행한다. The variable processing engine 320 transforms and verifies the data type at the time of storing and outputting the variable value defined in the user created code. It also performs standardized processing on various variables such as local variables, global variables, parameters, constant variables, and static variables.

또한, 변수 처리 엔진(320)에서 처리 가능한 변수로는 내부 통합 구문 구조에 포함되는 각종 프로그래밍 언어 데이터 구조에 따라 정의 가능한 변수들이 포함된다. Variables that can be processed by the variable processing engine 320 include variables that can be defined according to various programming language data structures included in the internal integrated syntax structure.

예를 들어, Fortran에서는 변수 타입으로 복소수를 정의할 수 있고, Basic에서는 가변길이 문자열 타입을 지정할 수 있다. 즉, Fortran을 이용한 코딩 시에는 가변길이 문자열 타입의 변수 지정이 불가능하며, Basic을 이용한 코딩 시에는 복소수 타입의 변수 지정이 불가능하다. For example, in Fortran you can define a complex number as a variable type, and in Basic you can specify a variable-length string type. That is, it is not possible to designate variables of variable length string type when coding using Fortran, and it is impossible to design a complex number type variable when coding using Basic.

하지만, 본 실시예에서는 내부 통합 구문 구조가 각종 프로그래밍 언어 데이터 구조를 모두 포함하고 있어, 복소수 타입 및 가변길이 문자열 타입의 변수 지정이 가능하게 된다. 뿐만 아니라, 수식, 행렬, 집합, 테이블, 리스트 등의 다양한 프로그래밍 언어에서 지원하는 변수 타입에 대하여 지원 및 처리가 가능하다. However, in the present embodiment, the internal integrated syntax structure includes all the programming language data structures, so that variables of complex type and variable length string type can be specified. In addition, it supports and processes variable types supported by various programming languages such as mathematical expressions, matrices, sets, tables, and lists.

즉, 변수 처리 엔진(320)을 통해 다형 변수 타입에 대하여 호환성 있는 지원 및 처리가 가능하게 된다. That is, the variable processing engine 320 enables compatible support and processing for polymorphic variable types.

디버깅 엔진(330)은 순차 실행 중 발생한 오류에 대한 처리를 수행한다. The debugging engine 330 performs processing for errors that occur during sequential execution.

실행 보조 엔진(300)에 포함되는 각 엔진들 사이의 상호 데이터 전송은 순차 실행기(230)에서 처리한다. 즉, 순차 실행기(230)에서 필요에 따라 각 엔진을 호출하여 처리하게 된다. 예를 들어, 변수 X의 값은 변수 처리 엔진(320)에서 받아오며, X에 대한 입력 명령어가 있으면 순차 실행기(230)에서 변수 처리 엔진(320)에 X의 값이 변경되었음을 전달하여 변수 처리 엔진(320)에서 변경된 X의 값을 저장하도록 할 수 있다. The mutual data transfer between the engines included in the execution auxiliary engine 300 is processed by the sequential executor 230. That is, the sequential execution unit 230 calls and processes each engine as needed. For example, the value of the variable X is received by the variable processing engine 320, and if there is an input instruction for X, the sequential executor 230 notifies the variable processing engine 320 that the value of X has been changed, The controller 320 may store the changed X value.

런타임 실행부(200)에 포함되는 입출력기(240)는 정의된 변수의 입출력, 파일 입출력, 사용자 입출력 인터페이스 제공 등과 같이 기록 및 출력을 담당한다. The input / output unit 240 included in the runtime execution unit 200 performs recording and output such as input / output of defined variables, file input / output, provision of a user input / output interface, and the like.

입출력기(240)는 사용자 인터페이스 및 운영체제 장치와의 입출력을 담당하게 되며, 예를 들어 Print, Input, File I/O, Table, Chart, Graph 등과 같은 명령어에 관련된 입출력을 처리한다.
The input / output unit 240 performs input / output with respect to a user interface and an operating system device, and processes input / output related to commands such as Print, Input, File I / O, Table, Chart,

이상에서는 본 발명의 일 실시예에 따른 다중 언어 코드 동시 실행 장치의 구성 및 기능에 대하여 살펴보았으며, 이하에서는 내부 통합 구문 구조로서 트리 노드 구조에 대하여 설명하기로 한다. Hereinafter, the configuration and function of the multi-language code concurrent execution apparatus according to an embodiment of the present invention have been described. In the following, a tree node structure as an internal integrated syntax structure will be described.

도 4는 내부 통합 구문 구조로 변환하기 위한 사용자 작성 코드의 예시를 나타낸 도면이고, 도 5은 도 4에 예시된 사용자 작성 코드를 내부 통합 구문 구조로 변환한 경우 실행의 구문 트리를 나타낸 도면이며, 도 6은 도 5의 기본 트리에 포함되는 서브 트리들에 대한 독립적 노드 구조를 나타낸 도면이다. FIG. 4 is a diagram showing an example of user-created code for converting into an internal integrated syntax structure, FIG. 5 is a diagram showing a syntax tree of execution when the user-created code illustrated in FIG. 4 is converted into an internal integrated syntax structure, FIG. 6 is a diagram illustrating an independent node structure for subtrees included in the basic tree of FIG.

도 4를 참조하면, 일반적인 프로그래밍 언어를 이용하여 작성된 소스 코드로서, 해당 프로그래밍 언어에서 Function 선언문을 이용하여 Main 명칭의 함수를 정의하는 코딩 구문을 나타내고 있다. Referring to FIG. 4, a source code written using a general programming language shows a coding syntax for defining a function of a Main name using a Function declaration in the programming language.

Main 함수는 우선 Matrix 타입의 변수 X를 호출하며, 변수 X는 (a, b), (c, d)라는 행렬 요소를 입력받거나 미리 저장된 값을 가져온다. 그리고 변수 Y에 대하여 변수 X가 인자로 적용된 FuncUser 함수의 출력값을 저장하고, Y 값을 출력한다. The Main function first calls a variable X of the Matrix type, and the variable X receives a matrix element of (a, b), (c, d) or fetches a pre-stored value. Then, for variable Y, the output value of the FuncUser function, to which the variable X is applied as a parameter, is stored, and the Y value is output.

도 4에서 예시된 것과 같은 사용자 작성 코드는 순차 실행기에서 동작할 수 있도록 트리 노드에 정렬되며, 트리 노드는 실행문, 변수, 내장함수, 라벨(Label), 사용자 정의 함수, 내장상수 등과 같은 속성별로 정리된다. The user-written code as illustrated in FIG. 4 is arranged in a tree node so that it can operate in a sequential executor, and the tree node is classified into attributes such as execution statements, variables, built-in functions, labels, user defined functions, It is organized.

각각의 노드들은 다시 세부 구조를 정의하는 독립적인 트리 노드들을 가지게 된다. 즉, 구문을 처리하는 트리(구문 트리)가 있고, 각 노드에는 구문 정보와 함께 세부적인 구조를 정의하는 독립적인 트리(서브 트리)가 포함된다. Each node again has independent tree nodes that define the detail structure. That is, there is a tree (syntax tree) for processing the syntax, and each node includes an independent tree (subtree) which defines detailed structure together with syntax information.

도 5을 참조하면, 도 4에 예시된 사용자 작성 코드를 내부 통합 구문 구조(트리 노드 구조)로 변환한 경우 구문 트리가 도시되어 있다.Referring to FIG. 5, a syntax tree is shown when the user creation code illustrated in FIG. 4 is converted into an internal integrated syntax structure (tree node structure).

구문 트리는 실행의 기본이 되는 기본 트리로서, 탑 노드(Top Node)와 탑 노드에 종속되는 차일드 노드(Child Node)를 포함한다. 각 노드들(탑 노드 및 차일드 노드)은 독립적인 서브 트리를 가지고 있다. A syntax tree is a basic tree that is the basis of execution, and includes a top node and a child node that is dependent on the top node. Each node (top node and child node) has an independent subtree.

도 5에 예시된 바에 의하면, 탑 노드에는 Function 선언문을 이용한 Main 함수의 정의 구문 'Function Main()'이 대응되고, 차일드 노드 각각에는 도 4의 Main() 함수를 설명하는 구문들이 행 단위로 대응된다. 차일드 노드 1에는 블록을 오픈하는 식별자 '{' 가 대응되고, 차일드 노드 2에는 변수 X를 정의하는 구문 'Matrix X'가 대응되며, 차일드 노드 3에는 변수 X에 대해 기술한 구문 'X = Matrix( (a, b), (c, d) )'가 대응되고, 차일드 노드 4에는 변수 Y에 대해 기술한 구문 'Y = FuncUser(X)'가 대응되며, 차일드 노드 5에는 변수 Y의 출력을 나타내는 구문 'Print Y'가 대응되고, 차일드 노드 6에는 블록을 클로즈하는 식별자 '}'가 대응된다. 5, the definition statement 'Function Main ()' of the Main function using the Function declaration statement corresponds to the top node, and the statements describing the Main () function of FIG. 4 correspond to each child node on a line basis do. The child node 1 is associated with the identifier '{' that opens the block, the child node 2 is associated with the syntax 'Matrix X' defining the variable X, and the child node 3 is associated with the syntax X = Matrix Y = FuncUser (X) 'described for the variable Y corresponds to the child node 4 and the output of the variable Y corresponds to the child node 5 The syntax 'Print Y' corresponds to the child node 6, and the identifier '}' for closing the block corresponds to the child node 6.

기본 트리의 탑 노드 및 차일드 노드 각각은 다시 노드의 세부 구조를 정의하는 독립적인 트리 노드들, 즉 서브 트리(Sub Tree)를 가지고 있다. Each of the top node and the child node of the basic tree again has independent tree nodes that define the detailed structure of the node, that is, a sub-tree.

도 6을 참조하면, 기본 트리의 탑 노드에 상응하는 서브 트리들은 다시 탑 노드와 차일드 노드를 포함하는 트리 노드 구조를 가진다. Referring to FIG. 6, the subtrees corresponding to the top node of the basic tree again have a tree node structure including a top node and a child node.

서브 트리 1(Sub Tree 1)을 살펴보면, 탑 노드에는 Function을 정의하는 명령어 'Define Function'이 기록되며, 차일드 노드들에는 순차적으로 명칭(Name), 파라미터(Parameters), 리턴 타입(Return Type), 재귀 타입(Recursive Type)에 관한 속성이 기록된다. 명칭에 해당하는 차일드 노드에 'Main'이 기록되며, 타 속성에 관해서는 기록되는 값이 없어, 서브 트리 1에 의하면 별도 파라미터를 포함하지 않는 명칭 Main 함수가 신규 정의될 수 있다. In the subtree 1, a command 'Define Function' for defining a function is recorded in the top node. In the child node, a name, a parameter, a return type, Attributes related to recursive type are recorded. &Quot; Main " is recorded in the child node corresponding to the name, and there is no value to be recorded with respect to the other attributes. According to subtree 1, the name Main function which does not include any additional parameter can be newly defined.

서브 트리 2(Sub Tree 2)를 살펴보면, 탑 노드에는 블록을 오픈하는 명령어 'Block Open'이 기록되며, 차일드 노드는 오픈 대상이 Function Block임을 의미하는 속성을 나타낸다. In Sub Tree 2, a command 'Block Open' is opened to open a block in the top node, and a child node indicates an attribute indicating that the object to be opened is a function block.

서브 트리 3(Sub Tree 3)을 살펴보면, 탑 노드에는 변수를 정의하는 명령어 'Define Variable'이 기록되며, 차일드 노드들에는 변수 타입(Variable Type), 변수 명칭(Variable Name), 변수 차원(Variable Dimension)에 관한 속성이 기록된다. 서브 트리 3에 의하면 Matrix 타입의 명칭 X라는 변수가 신규 정의될 수 있다. In the subtree 3, a command 'Define Variable' for defining a variable is recorded in the top node. In the child nodes, a variable type, a variable name, a variable dimension ) Is recorded. According to subtree 3, a variable named X of the matrix type can be newly defined.

서브 트리 4(Sub Tree 4) 및 서브 트리 5(Sub Tree 5)를 살펴보면, 탑 노드에는 값 입력을 나타내는 명령어 'Put'이 기록되며, 서브 트리 4의 차일드 노드들에는 변수 X 및 Matrix( (a, b), (c, d) )에 대해 기술한 서브 트리 구조가 기록되고, 서브 트리 5의 차일드 노드들에는 변수 Y 및 함수 FuncUser(X) 호출에 대해 기술한 서브 트리 구조가 기록된다. 서브 트리 4 및 5에 의하면 변수 X 및 변수 Y에 대한 값이 결정될 수 있다. In the subtree 4 and the subtree 5, a command 'Put' indicating the input of a value is recorded in the top node. In the child nodes of the subtree 4, variables X and Matrix ((a , b), (c, d)) is recorded, and the subtree structure described in relation to the variable Y and the function FuncUser (X) is recorded in the child nodes of the subtree 5. According to subtrees 4 and 5, the values for variable X and variable Y can be determined.

서브 트리 6(Sub Tree 6)을 살펴보면, 탑 노드에는 출력을 나타내는 명령어 'Print'이 기록되며, 차일드 노드에는 변수 Y에 대해 기술한 서브 트리 구조가 기록된다. 서브 트리 6에 의하면 Main 함수의 실행 결과로 변수 Y의 값이 출력될 수 있다. Referring to Sub Tree 6, a command 'Print' indicating an output is recorded in the top node, and a subtree structure describing the variable Y is recorded in the child node. According to the subtree 6, the value of the variable Y can be output as the execution result of the Main function.

서브 트리 7(Sub Tree 7)을 살펴보면, 탑 노드에는 블록을 클로즈하는 명령어 'Block Close'가 기록되며, 차일드 노드는 클로즈 대상이 Function Block임을 의미하는 속성을 나타낸다.In the subtree 7, a command 'Block Close' is recorded in the top node to close the block. The child node indicates an attribute indicating that the object to be closed is a function block.

이상과 같이 트리 노드 구조로 변환되는 경우, 소스 코드 작성 시 이용되었던 프로그래밍 언어와는 무관하게 해석 가능하게 되고, 기본 트리의 각 노드들이 순차적으로 실행될 수 있다. As described above, when the tree structure is transformed into a tree structure, it can be interpreted irrespective of the programming language used for writing the source code, and each node of the basic tree can be sequentially executed.

이러한 트리 노드 구조를 가짐으로써, 여러 프로그래밍 언어가 혼재된 사용자 작성 코드에 대해서도 구문 해석하여 차별없이 동시에 서로의 변수 혹은 함수를 호출 실행할 수 있다.By having such a tree node structure, it is possible to execute a mutual variable or function call without discrimination by syntactically analyzing user-written code in which a plurality of programming languages are mixed.

또한, 기존에 사용된 여러 프로그래밍 언어의 다양한 소스들을 일일이 변환하지 않고서 직접 사용자 작성 코드에 해당 프로그래밍 언어 그대로 이식하여 실행하는 것이 가능하게 된다. 이로 인해 코드 번영 비용 및 번역 상의 오류를 낮추고, 전문 프로그래머가 아닌 일반 연구자의 연구 능력을 향상시킬 수 있는 장점이 있다.
In addition, it becomes possible to directly transplant user-written code directly into the corresponding programming language without converting various sources of various programming languages used in the past. This has the advantage of lowering the cost of prosperity and translation mistakes and improving the research capability of general researchers, not professional programmers.

도 7은 본 발명의 일 실시예에 따른 다중 언어 코드 동시 실행 방법의 순서도이다. 도 7의 각 단계들은 도 1에 도시된 다중 언어 코드 동시 실행 장치(1)의 각 구성요소에서 수행될 수 있다. 7 is a flowchart of a method for simultaneously executing multiple language codes according to an embodiment of the present invention. Each step of FIG. 7 can be performed in each component of the multi-language code concurrent execution apparatus 1 shown in FIG.

단계 S400에서, 에디터(100)를 통해 사용자 작성 코드가 입력된다. 사용자 작성 코드는 복수의 프로그래밍 언어로 작성된 구문이 혼합된 다중 언어 코드이다. 사용자 작성 코드의 입력은 사용자 입력 장치를 통한 직접 입력 이외에도 타 소스 코드로부터의 복사, 편집 등을 포함하는 개념이다. In step S400, a user creation code is input through the editor 100. [ User-written code is a multi-language code that is a mixture of statements written in multiple programming languages. The input of the user-written code is a concept including not only direct input through the user input device but also copying and editing from other source code.

단계 S410에서, 변환기(220)는 에디터(100)에 입력된 사용자 작성 코드를 코딩 구획별로 구분한다. 사용자 작성 코드 내에 포함된 구획별 사용 언어 정의 명령어를 이용한 선언문을 기준으로 코딩 구획별 구분이 이루어질 수 있다. 임의의 구획별 사용 언어 정의 명령어가 등장한 이후 다음에 등장할 때까지는 이번 구획별 사용 언어 정의 명령어에 의해 정의된 사용 언어가 해당 코딩 구획 내에서의 프로그래밍 언어가 된다. In step S410, the converter 220 divides the user creation code input to the editor 100 by coding division. Categorization can be done based on the declaration statement using the language-specific definition command contained in the user-written code. Until an arbitrary compartmentalized language definition command comes up and appears next, the language to be used defined by the compartmentalized language definition command becomes the programming language in the corresponding coding compartment.

단계 S420에서, 변환기(220)는 코딩 구획별로 작성된 구문들을 공통의 내부 통합 구문으로 변환한다. 여기서, 공통의 내부 통합 구문은 트리 노드 구조일 수 있다. 다양한 프로그래밍 언어로 작성된 구문들이 공통의 내부 통합 구문으로 변환됨으로써, 언어 구분 없이 실행 가능하게 된다. In step S420, the converter 220 converts the statements created for each coding segment into a common internal integration syntax. Here, the common internal integration syntax may be a tree node structure. Syntaxes written in various programming languages are converted into a common internal integration syntax, so that they can be executed without language discrimination.

단계 S420의 수행 이전에, 전처리기(210)가 코딩 구획별로 작성된 구문들에 대하여 상응하는 프로그래밍 언어를 이용한 문법 검사(단계 S415)가 선수행될 수 있다. 예를 들어, C 언어로 작성된 코딩 구획에 대해서는 C 언어 문법 검사를 수행하고, Basic 언어로 작성된 코딩 구획에 대해서는 Basic 언어 문법 검사를 수행할 수 있다. Before the execution of step S420, a grammar check (step S415) using the programming language corresponding to the statements created by the preprocessor 210 for each coding section may be performed in advance. For example, a C language grammar check may be performed on a coding segment written in C language, and a Basic language grammar check may be performed on a coding segment written in Basic language.

단계 S430에서, 순차 실행기(230)는 내부 통합 구문으로 변환된 사용자 작성 코드에 대하여 구문별로 순차 실행한다. In step S430, the sequential executor 230 sequentially executes the user-created codes converted into the internal integrated syntax on a statement-by-phrase basis.

내부 통합 구문은 트리 노드 구조를 가지고 있어, 기본 트리의 노드들이 순차적으로 실행된다. 기본 트리의 노드들은 독립적인 서브 트리를 가지고 있어 해당 노드의 실행 시 서브 트리의 각 노드들을 순차적으로 실행하게 된다. 노드의 실행 과정 중에 사용자 정의 함수의 호출이 있을 경우, 해당 함수의 노드 인자를 찾아 해당 노드 인자의 차일드 노드들을 순차적으로 실행하게 된다. The internal integration syntax has a tree node structure, so that the nodes of the basic tree are executed sequentially. The nodes of the basic tree have independent subtrees, and each node of the subtree is sequentially executed when the corresponding node is executed. If there is a user-defined function call during the execution of the node, the child node of the corresponding node parameter is sequentially executed by finding the node parameter of the corresponding function.

순차 실행기(230)에 의한 순차 실행 과정 중에 필요에 따라 실행 보조 엔진(300) 중 함수 처리 엔진(310), 변수 처리 엔진(320), 디버깅 엔진(330) 중 적어도 하나가 호출되어 이용될 수 있다. At least one of the function processing engine 310, the variable processing engine 320 and the debugging engine 330 among the execution auxiliary engine 300 may be called and used as needed during the sequential execution process by the sequential execution unit 230 .

단계 S440에서, 입출력기(240)는 순차 실행 결과 사용자 입력값이 필요한 경우에는 사용자 입력값을 입력받고, 이를 이용하여 사용자 작성 코드를 실행하여 계산하고 그 결과를 출력한다. In step S440, when the sequential execution result user input value is required, the input / output unit 240 receives the user input value, executes the user creation code using the user input value, and outputs the result.

지금까지 도 1에 예시된 다중 언어 코드 동시 실행 장치(1)의 각 구성요소가 사용자 작성 코드를 입력받아 구문 실행하는 것을 가정하여, 도 7의 다중 언어 코드 동시 실행 방법을 설명하였다. 그러나 본 발명은 이에 한정되지 아니한다. 보다 구체적으로, 도 1에 예시된 다중 언어 코드 동시 실행 장치(1)의 각 구성요소는 본 발명이 적용되는 환경에 따라 다수개의 구성으로 분할되어 구현되거나 또는 기능이 통합되어 하나의 구성으로 구현될 수 있으므로, 해당 명칭에 관계없이 그 기능으로 통합 또는 분할하여 해석되어져야 할 것이다. The simultaneous execution of the multi-language code of FIG. 7 has been described assuming that each component of the multi-language code concurrent execution apparatus 1 illustrated in FIG. 1 receives the user-written code and executes the syntax. However, the present invention is not limited thereto. More specifically, each component of the multi-language code concurrent execution apparatus 1 illustrated in FIG. 1 may be divided into a plurality of configurations according to the environment to which the present invention is applied, or may be implemented as a single configuration by incorporating functions It should be interpreted as integrating or dividing into its function regardless of its name.

상술한 다중 언어 코드 동시 실행 방법은 디지털 처리 장치에 내장되거나 설치된 프로그램 등에 의해 시계열적 순서에 따른 자동화된 절차로 수행될 수도 있음은 당연하다. 상기 프로그램을 구성하는 코드들 및 코드 세그먼트들은 당해 분야의 컴퓨터 프로그래머에 의하여 용이하게 추론될 수 있다. 또한, 상기 프로그램은 디지털 처리 장치가 읽을 수 있는 정보저장매체에 저장되고, 디지털 처리 장치에 의하여 읽혀지고 실행됨으로써 상기 방법을 구현한다. 상기 정보저장매체는 자기 기록매체, 광 기록매체 및 캐리어 웨이브 매체를 포함한다.
It is a matter of course that the above-described simultaneous execution of a multi-language code can be performed by an automated procedure in a time series sequence by a built-in or installed program in the digital processing apparatus. The codes and code segments that make up the program can be easily deduced by a computer programmer in the field. In addition, the program is stored in an information storage medium readable by the digital processing apparatus, and is read and executed by the digital processing apparatus to implement the method. The information storage medium includes a magnetic recording medium, an optical recording medium, and a carrier wave medium.

본 발명에 의하면, 하나의 코드 페이지 안에 여러 프로그래밍 언어를 동시에 기술하는 것이 가능하다. 각 언어의 구분은 전술한 것과 같이 구획별 사용 언어 정의 명령어를 이용한 선언문을 통해 구획 처리가 가능하다. According to the present invention, it is possible to simultaneously describe a plurality of programming languages in one code page. As for the division of each language, it is possible to compartmentalize through the declaration statement using the language definition command for each compartment as described above.

또한, 하나의 사용자 작성 코드 안에 동시 서술된 C, Fortran, Basic 등의 여러 프로그래밍 언어를 동시에 실행하여, 서로 다른 프로그래밍 언어로 기술된 함수, 변수, 전역 선언 등을 서로 교차하여 함께 사용하는 것이 가능하다. 즉, 여러 프로그래밍 언어가 병합되고 서로의 함수 혹은 변수를 함께 공유하면서 교차 호출하는 것이 가능하다. 도 2에 예시된 것과 같은 사용자 작성 코드에서 Basic 구문 내에서 Fortran으로 작성된 Plus 함수를 호출하는 것이 그 일례이다. In addition, it is possible to simultaneously execute various programming languages such as C, Fortran, and Basic simultaneously described in one user-written code, so that functions, variables, and global declarations described in different programming languages can be crossed and used together . That is, it is possible to merge several programming languages and make cross calls with each other sharing functions or variables. One example is calling a Plus function written in Fortran in the Basic syntax in user-written code as illustrated in FIG.

또한, 실행 가능한 노드 구조로 해석된 프로그래밍 언어는 해당 노드에서 정의한 내용에 따라 순차적으로 실행되며, 실행 상에 발생한 오류는 디버깅을 처리하게 된다. In addition, a programming language interpreted as an executable node structure is sequentially executed according to contents defined by the corresponding node, and an error occurring on execution is handled by debugging.

상기에서는 본 발명의 실시예를 참조하여 설명하였지만, 해당 기술 분야에서 통상의 지식을 가진 자라면 하기의 특허 청구의 범위에 기재된 본 발명의 사상 및 영역으로부터 벗어나지 않는 범위 내에서 본 발명을 다양하게 수정 및 변경시킬 수 있음을 이해할 수 있을 것이다.
It will be apparent to those skilled in the art that various modifications and variations can be made in the present invention without departing from the spirit or scope of the invention as defined in the following claims And changes may be made without departing from the spirit and scope of the invention.

1: 다중 언어 코드 동시 실행 장치 100: 에디터
200: 런타임 실행부 210: 전처리기
220: 변환기 230: 순차 실행기
240: 입출력기 300: 실행 보조 엔진
310; 함수 처리 엔진 320: 변수 처리 엔진
330; 디버깅 엔진
1: Multi-language code concurrent execution device 100: Editor
200: runtime execution unit 210: preprocessor
220: converter 230: sequential launcher
240: I / O unit 300: execution auxiliary engine
310; Function Processing Engine 320: Variable Processing Engine
330; Debugging engine

Claims (15)

복수의 프로그래밍 언어가 혼재된 사용자 작성 코드를 해석하고 실행하는 다중 언어 코드 동시 실행 장치로서,
상기 사용자 작성 코드를 입력받는 에디터;
상기 에디터에 의해 입력된 상기 사용자 작성 코드를 코딩 구획별로 구분하여 상기 코딩 구획에 상응하는 프로그래밍 언어 문법 구조에서 내부 통합 구문 구조로 변환하여 순차 실행하는 런타임 실행부; 및
상기 순차 실행 과정에서 필요한 함수 처리, 변수 처리 혹은 디버깅을 보조하는 실행 보조 엔진을 포함하되,
상기 실행 보조 엔진은,
수학 함수, 문자열 함수, 파일(File) 함수, 시간/날짜(Time/Date) 함수 중 적어도 하나를 포함하는 내장 함수와, 사용자에 의해 신규 정의된 사용자 정의 함수를 처리하는 함수 처리 엔진과;
상기 사용자 작성 코드에서 정의된 변수 값의 저장 및 출력 시 데이터 타입을 변환하고 검증하는 변수 처리 엔진과;
상기 순차 실행 과정 중에 발생한 오류에 대한 처리를 수행하는 디버깅 엔진 중 적어도 하나를 포함하는 것을 특징으로 하는 다중 언어 코드 동시 실행 장치.
A multi-language code concurrent execution apparatus for interpreting and executing a user-written code in which a plurality of programming languages are mixed,
An editor receiving the user creation code;
A run-time execution unit for dividing the user-created code input by the editor into coding segments, converting the user-generated codes into an internal integrated syntax structure from a programming language grammar structure corresponding to the coding segment, and sequentially executing the user- And
And an execution auxiliary engine that assists in function processing, variable processing, or debugging necessary in the sequential execution process,
Wherein the execution auxiliary engine comprises:
A built-in function including at least one of a function, a function, a string function, a file function, and a time / date function; a function processing engine for processing a user-defined function newly defined by the user;
A variable processing engine for converting and verifying a data type when storing and outputting a variable value defined by the user creation code;
And a debugging engine that performs processing for an error that occurs during the sequential execution process.
제1항에 있어서,
상기 런타임 실행부는,
상기 사용자 작성 코드를 구문 작성에 이용된 프로그래밍 언어에 따라 복수의 코딩 구획으로 구분하고, 코딩 구획별로 구분된 구문들을 상기 내부 통합 구문 구조로 변환하는 변환기와;
상기 내부 통합 구문 구조로 변환된 변환 구문들을 순차 실행하는 순차 실행기를 포함하는 것을 특징으로 하는 다중 언어 코드 동시 실행 장치.
The method according to claim 1,
The run-
A converter for dividing the user-generated code into a plurality of coding sections according to a programming language used for writing a syntax and converting the statements divided into coding sections into the internal integrated syntax structure;
And a sequential executor for sequentially executing the transformation statements converted into the internal integrated syntax structure.
제2항에 있어서,
상기 런타임 실행부는 상기 코딩 구획별로 구분된 구문들을 상기 코딩 구획에 상응하는 프로그래밍 언어의 문법에 기초하여 문법 검사를 수행하는 전처리기를 더 포함하는 것을 특징으로 하는 다중 언어 코드 동시 실행 장치.
3. The method of claim 2,
Wherein the runtime execution unit further comprises a preprocessor for performing grammar checking based on a syntax of a programming language corresponding to the coding segment, the syntaxes being classified according to the coding segment.
제2항에 있어서,
상기 내부 통합 구문 구조는 순차 실행 가능한 절차용 노드 구조로서 트리 노드(Tree Node) 구조인 것을 특징으로 하는 다중 언어 코드 동시 실행 장치.
3. The method of claim 2,
Wherein the internal integrated syntax structure is a tree node structure as a node structure for sequentially executable procedures.
제4항에 있어서,
상기 트리 노드 구조는 임의의 코딩 구획 내의 구문들을 행 단위로 구문 트리로 변환하고, 상기 구문 트리의 차일드 노드는 독립적으로 순차 수행 가능한 서브 트리를 가지는 것을 특징으로 하는 다중 언어 코드 동시 실행 장치.
5. The method of claim 4,
Wherein the tree node structure converts the statements in an arbitrary coding section into a syntax tree on a row-by-row basis, and the child nodes of the syntax tree have a subtree that can be independently executed sequentially.
제5항에 있어서,
상기 순차 실행기는 상기 구문 트리 및 상기 서브 트리의 노드에 해당하는 명령어를 트리 노드 구조에 따라 순차적으로 실행하는 것을 특징으로 하는 다중 언어 코드 동시 실행 장치.
6. The method of claim 5,
Wherein the sequential executor sequentially executes instructions corresponding to nodes of the syntax tree and the subtree according to a tree node structure.
제2항에 있어서,
상기 런타임 실행부는 사용자 인터페이스 및 운영체제 장치와의 입출력을 담당하는 입출력기를 더 포함하는 것을 특징으로 하는 다중 언어 코드 동시 실행 장치.
3. The method of claim 2,
Wherein the runtime execution unit further comprises an input / output unit for input / output with a user interface and an operating system device.
삭제delete 복수의 프로그래밍 언어가 혼재된 사용자 작성 코드를 해석하고 실행하는 다중 언어 코드 동시 실행 장치에서의 다중 언어 코드 동시 실행 방법으로서,
(a) 에디터를 통해 상기 사용자 작성 코드를 입력받는 단계;
(b) 상기 에디터에 의해 입력된 상기 사용자 작성 코드를 코딩 구획별로 구분하는 단계;
(c) 상기 코딩 구획에 상응하는 프로그래밍 언어 문법 구조에서 내부 통합 구문 구조로 변환하는 단계; 및
(d) 상기 내부 통합 구문 구조로 변환된 변환 구문들을 순차 실행하는 단계를 포함하되,
상기 내부 통합 구문 구조는 순차 실행 가능한 절차용 노드 구조로서 트리 노드(Tree Node) 구조이며,
상기 트리 노드 구조는 임의의 코딩 구획 내의 구문들을 행 단위로 구문 트리로 변환하고, 상기 구문 트리의 차일드 노드는 독립적으로 순차 수행 가능한 서브 트리를 가지는 것을 특징으로 하는 다중 언어 코드 동시 실행 방법.
There is provided a method for simultaneously executing a multi-language code in a multi-language code concurrent execution apparatus for interpreting and executing a user-written code in which a plurality of programming languages are mixed,
(a) receiving the user creation code through an editor;
(b) dividing the user creation code input by the editor into coding segments;
(c) converting from a programming language grammar structure corresponding to the coding segment into an internal integrated syntax structure; And
(d) sequentially executing the conversion statements converted into the internal unified syntax structure,
The internal integrated syntax structure is a tree node structure as a node structure for sequentially executable procedures,
Wherein the tree node structure converts the statements in an arbitrary coding section into a syntax tree on a row-by-row basis, and the child nodes of the syntax tree have a subtree that can be independently executed sequentially.
제9항에 있어서,
상기 단계 (c) 이전에, 상기 코딩 구획별로 구분된 구문들을 상기 코딩 구획에 상응하는 프로그래밍 언어의 문법에 기초하여 문법 검사를 수행하는 단계를 더 포함하는 것을 특징으로 하는 다중 언어 코드 동시 실행 방법.
10. The method of claim 9,
Further comprising the step of performing a grammar check based on the grammar of the programming language corresponding to the coding section before the step (c).
삭제delete 삭제delete 제9항에 있어서,
상기 단계 (d)는 상기 구문 트리 및 상기 서브 트리의 노드에 해당하는 명령어를 트리 노드 구조에 따라 순차적으로 실행하는 것을 특징으로 하는 다중 언어 코드 동시 실행 방법.
10. The method of claim 9,
Wherein the step (d) sequentially executes the instruction words corresponding to the nodes of the syntax tree and the subtree according to a tree node structure.
제9항에 있어서,
상기 단계 (d)는 실행 보조 엔진을 통해 상기 순차 실행 과정에서 필요한 함수 처리, 변수 처리 혹은 디버깅을 보조받는 것을 특징으로 하는 다중 언어 코드 동시 실행 방법.
10. The method of claim 9,
Wherein the step (d) is supplemented with necessary function processing, variable processing or debugging through the execution assistant engine in the sequential execution step.
제9항 내지 제10항, 제13항 내지 제14항 중 어느 한 항에 기재된 다중 언어 코드 동시 실행 방법을 수행하기 위해 디지털 처리 장치에 의해 실행될 수 있는 명령어들의 프로그램이 유형적으로 구현되어 있으며 디지털 처리 장치에 의해 판독될 수 있는 기록매체.A program of instructions executable by a digital processing apparatus to perform the method of simultaneous execution of multiple language codes according to any one of claims 9 to 10 and 13 to 14 is tangibly embodied, A recording medium that can be read by an apparatus.
KR1020120123511A 2012-11-02 2012-11-02 Mixed language code simultaneous running device and method KR101422737B1 (en)

Priority Applications (1)

Application Number Priority Date Filing Date Title
KR1020120123511A KR101422737B1 (en) 2012-11-02 2012-11-02 Mixed language code simultaneous running device and method

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
KR1020120123511A KR101422737B1 (en) 2012-11-02 2012-11-02 Mixed language code simultaneous running device and method

Publications (2)

Publication Number Publication Date
KR20140056977A KR20140056977A (en) 2014-05-12
KR101422737B1 true KR101422737B1 (en) 2014-07-24

Family

ID=50888032

Family Applications (1)

Application Number Title Priority Date Filing Date
KR1020120123511A KR101422737B1 (en) 2012-11-02 2012-11-02 Mixed language code simultaneous running device and method

Country Status (1)

Country Link
KR (1) KR101422737B1 (en)

Cited By (1)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US11645125B2 (en) 2019-05-28 2023-05-09 Samsung Sds Co., Ltd. Method and apparatus for executing workflow including functions written in heterogeneous programing language

Families Citing this family (1)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
KR101892356B1 (en) 2016-10-04 2018-08-28 (주)모션블루 Apparatus and mehtod for providng coding education using block

Citations (2)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
KR20060104505A (en) * 2005-03-30 2006-10-09 아이티플러스 주식회사 Universal string analyzer and method thereof
KR101150003B1 (en) * 2003-06-26 2012-06-01 마이크로소프트 코포레이션 Software development infrastructure

Patent Citations (2)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
KR101150003B1 (en) * 2003-06-26 2012-06-01 마이크로소프트 코포레이션 Software development infrastructure
KR20060104505A (en) * 2005-03-30 2006-10-09 아이티플러스 주식회사 Universal string analyzer and method thereof

Cited By (1)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US11645125B2 (en) 2019-05-28 2023-05-09 Samsung Sds Co., Ltd. Method and apparatus for executing workflow including functions written in heterogeneous programing language

Also Published As

Publication number Publication date
KR20140056977A (en) 2014-05-12

Similar Documents

Publication Publication Date Title
US8438551B2 (en) Code transformation
Schreiner et al. Comparison of type-based and alias-based component recognition for embedded systems software
US5371747A (en) Debugger program which includes correlation of computer program source code with optimized object code
US7958493B2 (en) Type inference system and method
US8453126B1 (en) System and method for converting base SAS runtime macro language scripts to JAVA target language
US20130227533A1 (en) Code transformation
US7657878B2 (en) Compiler, method of compiling and program development tool
US9535664B1 (en) Computerized software development process and management environment
US11579856B2 (en) Multi-chip compatible compiling method and device
EP0583117A2 (en) A device and method for converting computer programming languages
CN110673854A (en) SAS language compiling method, device, equipment and readable storage medium
US11294665B1 (en) Computerized software version control with a software database and a human database
CN113535184A (en) Cross-platform code conversion method and device
Schröer The GENTLE Compiler Construction System
Busbee Integrated development environment
KR101422737B1 (en) Mixed language code simultaneous running device and method
US20150020051A1 (en) Method and apparatus for automated conversion of software applications
CN116257245A (en) Multi-output compiling method and system based on flex and bison grammar analysis
AU2012201466B2 (en) Code Transformation
KR20090011974A (en) Method for extracting the target files of compilation
WO2021208867A1 (en) Cross-platform code conversion method and device
Visser Understanding software through linguistic abstraction
CN113608748A (en) Data processing method, device and equipment for converting C language into Java language
Overbey A toolkit for constructing refactoring engines
Dausend et al. Towards a comprehensive extension of abstract state machines for aspect-oriented specification

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
LAPS Lapse due to unpaid annual fee