KR100836736B1 - 마크업 언어를 이용한 파서 장치 및 파싱 방법 - Google Patents

마크업 언어를 이용한 파서 장치 및 파싱 방법 Download PDF

Info

Publication number
KR100836736B1
KR100836736B1 KR1020060124003A KR20060124003A KR100836736B1 KR 100836736 B1 KR100836736 B1 KR 100836736B1 KR 1020060124003 A KR1020060124003 A KR 1020060124003A KR 20060124003 A KR20060124003 A KR 20060124003A KR 100836736 B1 KR100836736 B1 KR 100836736B1
Authority
KR
South Korea
Prior art keywords
data format
data
parser
file
markup language
Prior art date
Application number
KR1020060124003A
Other languages
English (en)
Other versions
KR20080028731A (ko
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 US11/618,810 priority Critical patent/US7984430B2/en
Publication of KR20080028731A publication Critical patent/KR20080028731A/ko
Application granted granted Critical
Publication of KR100836736B1 publication Critical patent/KR100836736B1/ko

Links

Images

Classifications

    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F17/00Digital computing or data processing equipment or methods, specially adapted for specific functions

Abstract

본 발명은 마크업 언어(Markup Language)를 이용하여 응용프로그램의 성격이나 특정 프로그램 개발 언어에 관계없이 재사용이 가능한 데이터 포맷 기술서 모듈(Data Format Description)와 이를 응용프로그램 개발에 적용시킬 수 있는 데이터 포맷 파서 장치(Data Format Parser Framework)를 제공함으로써, 기존의 파서 개발 작업에서 발생하는 중복적인 프로그래밍 작업을 줄이고 재사용성을 극대화하며, 이를 통하여 응용프로그램의 개발 효율을 증대시킬 수 있는 효과가 있다.
마크업 언어, 데이터 포맷, 파서, 데이터 포맷, 프레임워크,

Description

마크업 언어를 이용한 파서 장치 및 파싱 방법{Apparatus for Parser Framework using Markup Language and Method thereof}
도 1은 본 발명의 일실시예에 따른 마크업 언어를 이용한 파서 장치를 설명하기 위한 개념도.
도 2는 본 발명의 일실시예에 따른 마크업 언어를 이용한 데이터 포맷을 기술하기 위하여 모듈별로 공유 범위 및 처리 과정을 나타낸 도면.
도 3은 본 발명의 일실시예에 따른 데이터 포맷 기술서, 데이터 파일 및 콜백함수간 연관 관계를 나타낸 도면.
도 4는 본 발명의 일실시예에 따른 파서 장치의 구조도.
도 5는 본 발명의 일실시예에 사용된 TGA 파일 포맷의 구조를 나타내는 구조도.
<도면의 주요부분에 대한 부호의 간단한 설명>
2 : 데이터 포맷 기술서 모듈 4 : 유니버셜 파서 모듈
6 : 콜백함수 모듈 8 : 데이터 파일
본 발명은 마크업 언어를 이용한 파서 장치에 관한 것으로서, 더욱 상세하게는 다양한 데이터 포맷을 마크업 언어를 이용하여 특정 프로그래밍 언어에 종속되지 않도록 범용적으로 기술함으로써 다양한 응용프로그램에서 재사용이 가능한 마크업 언어를 이용한 파서 장치에 관한 것이다.
응용프로그램에서 사용되는 데이터 파일을 읽고 해석하여 컴퓨터 프로그램에서 처리할 수 있는 형태(List나 Tree등의 데이터 구조체)로 변환하는 소프트웨어 모듈(module)을 파서(Parser)라고 한다.
동일한 데이터 포맷(Data Format)을 사용하는 경우라도, 매번 파서를 새로 개발하거나 공개 혹은 상용 라이브러리 형태의 파서를 사용하게 되며, 라이브러리의 경우 각각의 프로그래밍 언어마다 따로 개발이 이루어져야 한다.
이러한 데이터 파일 파서의 대표적인 예가 이미지 프로세싱 라이브러리(Image Processing Library)에 포함된 파서로 tga, jpg, bmp 등의 다양한 이미지 데이터를 처리할 수 있으며, 내부적으로는 해당 데이터 형식에 대한 각각의 파서가 포함된다.
프레임워크(Framework)란 반복적으로 수행하는 작업을 미리 정의한 틀로 제공하고, 개발자는 이 틀에 필요한 부분을 채워 넣는 형식의 재사용이 가능한 디자인을 의미한다. 프레임워크의 대표적인 예로는 마이크로소프트사의 윈도우 응용프로그램 개발용 라이브러리인 MFC(Microsoft Foundation Class)나 인터넷 환경에서 웹 응용프로그램 개발 방법론을 정의한 .NET Framework, 3D 프로그래밍을 위한 DirectX등이 있다.
한편, 전술한 파서는 다양한 데이터 포맷에 따라서 각각의 파서를 새로 개발해야 하는 문제점이 있으며, 심지어 tga나 bmp와 같은 동일한 파일에 대한 파서를 프로젝트마다 새로 개발하게 되어 개발비용 및 시간 소요가 증가하는 문제점이 있다.
따라서, 재사용이 용이하며 꼭 필요한 부분만 개발할 수 있는 파서의 개발이 필요하다. 즉 재사용+부분개발=프레임워크가 될 수 있도록 하는 파서가 필요한 것이다. 또한, 이를 위해 포맷 정의 부분은 언어에 관계없이 재사용할 수 있도록 하는 방법이 필요하다. 이는 플랫폼/언어 독립적인 마크업 언어의 사용을 의미한다.
본 발명은 전술한 문제점을 해결하고, 전술한 필요성을 충족시키기 위하여 제안된 것으로서, 그 목적은 다양한 종류의 데이터 포맷을 해석하는 방법을 마크업 언어를 이용하여 기술함으로써 프로그래밍 언어에 관계없이 재사용이 가능한 마크업 언어를 이용한 파서 장치를 제공하는 데에 있는 것이다.
본 발명의 또 다른 목적은 데이터 프로그래밍의 반복적인 작업을 미리 정의한 파서 장치를 통하여 최소한의 프로그래밍만으로 데이터 해석 작업의 수행이 가능한 파서 장치를 제공하는 데에 있는 것이다.
상기와 같은 목적을 달성하기 위한 본 발명의 마크업 언어를 이용한 파서 장치는, 데이터 파일의 파싱 방법을 마크업 언어로 기술한 데이터 포맷 기술서를 탑재하고, 이를 이용하여 데이터 파일을 해석하는 유니버셜 파서와, 데이터 포맷 기술서에 따라서 부분적으로 파싱하여 해당 결과를 응용프로그램 내부에 전달하는 콜백함수를 포함하는 것을 특징으로 한다.
이하, 첨부된 도면을 참조하여 본 발명의 구성에 대하여 보다 상세하게 개시하기로 한다.
도 1은 본 발명의 일실시예에 따른 마크업 언어를 이용한 파서 장치을 설명하기 위한 개념도이다.
도 1을 참조하여 보면, 유니버션 파서 모듈(Universal Parser Module)(4)은 TGA, BMP 등의 데이터 포맷을 마크업 언어로 기술한 데이터 포맷 기술서 모듈(Data Format Description)(2)을 탑재하고, 이를 이용하여 데이터 파일(8)(본 도면에서는 TGA파일)을 해석하게 된다.
입력된 데이터 파일(8)은 데이터 포맷 기술서 모듈(2)에 따라서 부분적으로 해석되어 콜백함수 모듈(6)(본 도면에서는 TGA 콜백함수 모듈(513))에 전달되고, 이때 콜백함수 모듈(6)에서 응용 프로그램 내부에서 사용이 가능한 형식으로 변환 과정이 이루어진다. 모든 해석이 끝나면 데이터 파일(8)은 응용프로그램의 내부 자료구조로 변환되어 원하는 목적으로 사용(본 도면에서는 해당 그림 파일을 화면에 표시함) 가능하게 된다.
도 2는 본 발명의 일실시예에 따른 마크업 언어를 이용한 데이터 포맷 기술 하기 위하여 모듈별로 공유 범위 및 처리 과정을 나타낸 도면이며, 도 5는 본 발명의 일실시예에 사용된 TGA 파일 포맷의 구조를 나타내는 구조도이다.
먼저, 도 2를 참조하여 보면, 본 발명은 크게 3가지 모듈로 구성된다. 각 모듈은 마크업 언어를 이용한 데이터 포맷기술서 모듈(2), 유니버셜 파서 모듈(4) 및 응용프로그램 콜백함수 모듈(6)로 구성된다.
각각의 구성 모듈에 대하여 보다 상세하게 설명하면 다음과 같다.
먼저, 데이터 포맷 기술서 모듈(2)는 한번 만들어 놓으면 프로그래밍 언어나 응용프로그램에 관계없이 공유가 가능하다.
먼저, 데이터 포맷 기술서에 대하여 상세하게 설명하기로 한다.
① 데이터 포맷 기술서 모듈
데이터 포맷 기술서 모듈(2)은 tga, bmp 및 기타 데이터 포맷을 마크업 언어를 이용하여 기술한 문서로 해당 마크업 언어의 파일 형식으로 제공되며 여기에 기술된 내용을 바탕으로 입력된 데이터 파일을 해석하게 된다.
데이터 포맷 기술서 모듈(2)의 포맷 기술 문법의 구성요소는 포맷 식별자(format identifier), 필드 판독자(field reader), 필드 확인자(field verifier), 가변자(variant), 후보자(candidate), 반복자(loop), 서브 블록(sub-block), 서브 루틴(sub-routine) 및 연산자(evaluation) 등으로 구성되며 각각에 대하여 설명하면 다음과 같다.
먼저, 포맷 식별자는 기술된 데이터 포맷의 형식을 나타내는 식별자로 해당 데이터 포맷을 한눈에 알아보기 편한 이름을 선택하는 것이 바람직하며, 파일의 확 장자를 포함할 수 있다. 포맷 식별자를 사용한 예제는 다음과 같다.
예제 : <_format name="bmp" suffix=".bmp">
필드 판독자는 데이터 파일(8)에서 원하는 만큼의 바이트 수를 읽어들이는 역할을 하며, 읽어들일 필드의 바이트 수를 명시한다. 필드 판독자를 사용한 예제는 다음과 같다.
예제 : <read name="bitmap_size" desc="바이트 단위의 bitmap 파일 크기" count="4"/>
필드 확인자는 데이터 파일(8)에서 원하는 만큼의 바이트 수를 읽어들이고, 이를 지정한 항목과 비교한 결과 일치하면 계속 파싱을 진행하고, 일치하지 않으면 파싱을 중지한다. 필드 확인자를 사용한 예제는 다음과 같다.
예제 : <_verify name="bitmap_type" desc="bitmap 식별자" count="2" value="BM" error="bitmap file이 아닙니다."/>
가변자는 조건에 따라서 다양한 항목중에 선택적인 작업을 수행해야할 겨우 이를 가변항 블록으로 지정함. 가변항 사이에는 후보자 블록이 위치한다.
후보자는 특정 조건을 만족시킬 경우 수행될 작업 블록을 지정하며 조건에 해당하는 조건값(condition)과 해당 조건을 만족시키는 결과값(matching value)이 명시되어야 한다. 후보자를 사용한 예제는 다음과 같다.
예제 : <_candidate name="CHECK_MAT" desc="MATERIAL 블록 파싱" condition=":checker" value="0x0054414D">
반복자는 동일한 작업을 반복 수행할 작업 블록을 지정하며 반복할 횟수(cycle)는 파일의 끝(EOF : End Of File)이나 숫자 혹은 변수로 지정할 수 있다. 반복자를 사용한 예제는 다음과 같다.
예제 : <_loop name="texture_read" desc="texture 읽어들이는 루프" cycle=":texture_number">
서브 블록은 특정 작업을 하나의 작업 블록으로 지정할 경우 사용하며 내부적으로 식별을 위하여 사용된다. 서브 블록을 사용한 예제는 다음과 같다.
예제 : <_sub_block name="MESH_COMMON" desc="메시/차일드 메시 공통 블록">
서브 루틴은 데이터 포맷 기술서 모듈(2) 내에 정의된 작업을 현재 위치에서 수행하기 위한 기능을 제공한다. 서브 루틴을 사용한 예제는 다음과 같다.
예제 : <_sub_routine name="child_mesh_sub" desc="차일드 메시를 읽기 위한 CHECK_MESH 서브루틴" target="MESH_COMMON"/>
연산자는 데이터 포맷 기술서 모듈(2) 내부에서 특정 연산의 결과 값이 필요한 경우 사용한다. 연산자를 사용한 예제는 다음과 같다.
예제 : <_evaluation expression=":colormap_entry_size_in_bytes = :colormap_entry_size / 8"/>
전술한 포맷 기술 문법의 구성 요소를 포함하고 마크업 언어를 이용한 데이터 포맷 기술서 모듈(2)를 실구현한 예제를 보면 다음과 같다. 한편, 사용한 마크업 언어는 XML이며, 데이터 포맷은 도 5에 도시된 TGA File Format을 이용하였다.
<실구현 예제>
<? xml version ="1.0" encoding =" euc - kr "?>
-> xml 문서임을 나타냄.
<_ format name =" tga " suffix =". tga ">
-> tga 포맷 기술 문서임을 나타내며, 파일의 확장자는 '. tga' 사용함.
<!-- targa header -->
-> xml 형식의 주석문으로 TGA 파일의 헤더부분이 시작됨을 나타냄.
<_ read name =" targa _ id _ length " desc =" Image ID Field 의 길이(보통 0)" count ="1"/>
-> Image ID field 의 길이를 나타내는 필드로 1바이트 읽기 작업을 수행함.
<_ read name =" targa _ color _ map _ type " desc =" 칼라 맵 데이터 존재 여부로 0이 면 노팔레트 , 1이면 팔레트 사용" count ="1"/>
-> 칼라 맵 데이터의 존재여부를 나타내는 필드로 1바이트의 읽기 작업을 수행함.
<_ read name =" targa _ image _ type " desc ="이미지 종류(0- 이미지없음 , 1- 비압축 인덱스, 2- RGB , 3- Grey , 9- RLE Index , 10- RLE RGB , 11- RLE gray " unit ="1"/>
-> 칼라 맵 데이터의 존재여부를 나타내는 필드로 1바이트의 읽기 작업을 수행함.
<!-- colormap -->
-> 칼라 맵 필드의 시작을 나타냄.
<_ read name =" colormap _ start " desc ="팔레트 시작 인덱스" count ="2"/>
-> 칼라 맵의 시작 인덱스를 나타내는 필드로 2바이트 읽기 작업을 수행함.
<_ read name =" colormap _ length " desc ="팔레트 크기" count ="2"/>
-> 칼라 맵의 크기를 나타내는 필드로 2바이트 읽기 작업을 수행함.
<_ read name =" colormap _ entry _ size " desc ="팔레트 종류(15, 16, 24, 32)" count ="1"/>
-> 칼라 맵의 종류를 나타내는 필드로 1바이트 읽기 작업을 수행함.
<!-- image spec -->
-> 이미지 명세 필드의 시작을 나타냄.
<_ read name =" tga _ image _ xstart " desc ="이미지의 x축 원점" count ="2"/>
-> 이미지의 x축 원점 좌표를 나타내는 필드로 2바이트의 읽기 작업을 수행 함.
<_ read name =" tga _ image _ ystart " desc ="이미지의 y축 원점" count ="2"/>
-> 이미지의 y축 원점 좌표를 나타내는 필드로 2바이트의 읽기 작업을 수행함.
<_ read name =" tga _ image _ width " desc ="비트맵 가로 크기" unit ="2"/>
-> 이미지의 가로 크기를 나타내는 필드로 2바이트의 읽기 작업을 수행함.
<_ read name =" tga _ image _ height " desc ="비트맵 세로 크기" unit ="2"/>
-> 이미지의 세로 크기를 나타내는 필드로 2바이트의 읽기 작업을 수행함.
<_ read name =" tga _ image _ bpp " desc =" 픽셀당 비트수 ( bit per pixel - 8, 16, 24, 32" unit ="1"/>
-> 이미지의 픽셀당 비트수를 나타내는 필드로 1바이트의 읽기 작업을 수행함.
<_ read name =" tga _ image _ descriptor " desc ="이미지 디스크립터 비트로 oovhaaaa 형식임( oo = unused vh = 플립비트 aaaaa = 알파채널 )" unit ="1"/>
-> 이미지의 특징을 나타내는 필드로 1바이트의 읽기 작업을 수행함.
<!-- image id -->
-> 이미지 ID 필드의 시작을 나타냄.
<_ read name =" image _ id " desc ="이미지에 대한 추가 정보를 담는다. 최대 255 바이트로 targa _ id _ length 에 길이가 저장되며 0은 없음을 나타낸다." count =": targa _ id _ length "/>
-> 최대 255바이트로 이루어진 이미지의 추가정보를 저장하는 필드로 읽어들일 바이트 수는 targa _ id _ length 에 저장되어 있음.
<!-- color map data -->
-> 칼라 맵 데이터 필드의 시작을 나타냄.
<_ sub _ block name =" read _ colormap " desc =" 칼라맵 읽기용 서브블록으로 targa _ color _ map _ type != 0인경우 수행" condition =": targa _ color _ map _ type ">
-> 칼라맵 읽기용 서브블록을 나타내는 필드로 condition 값이 0이 아니어야 하며 해당 조건값은 targa _ color _ map _ type 에 저장되어 있음.
<_ evaluation expression =": colormap _ entry _ size _ in _ bytes = :colormap_entry_size / 8"/>
-> 칼라 맵을 구성하는 단위값을 바이트 단위로 계산하는 작업을 수행함.
<_ read name =" colormap " desc =" 칼라맵(팔레트)정보로 targa_color_map_type=0이면 없음." unit =": colormap _ entry _ size _ in _ bytes " count =": colormap _ length "/>
-> 칼라 맵을 읽어들이는 필드로 colormap _ entry _ size _ in _ bytes * colormap_length 바이트를 읽어들임.
</_ sub _ block >
-> 칼라맵 읽기용 서브블록의 끝을 나타내는 필드임.
<!-- pixel -->
-> 픽셀 값이 들어있는 필드의 시작을 나타냄.
<_ evaluation expression =": image _ size = (: tga _ image _ width - : tga _ image _ xstart ) * (: tga _ image _ height - : tga _ image _ ystart ) * :tga_image_bpp / 8"/>
-> 이미지의 크기를 구하는 연산을 수행함.
<_ read name =" tga _ pixel " desc =" tga 이미지 블록으로 파싱방법은 targa _ image _ type 을 확인 후 결정함" unit ="1" count=":image_size"/>
-> 픽셀 값을 읽어들이는 필드로 image _ size 바이트를 읽어들임.
</_ format >
-> tga 포맷 기술 문서의 끝을 나타냄.
한편, 도 2에 도시된 유니버션 파서 모듈(4)은 프로그래밍 언어에 종속되며 이는 소스 코드나 라이브러리 형식으로 제공되며 데이터 포맷에는 독립적이며 데이터 포맷 기술서 모듈(2)의 기술 방법이 변경될 경우에만 수정된다. 유니버션 파서 모듈(4)에 대하여 보다 상세하게 설명하면 다음과 같다.
② 유니버셜 파서 모듈
먼저, 유니버션 파서 모듈(4)는 마크업 언어로 작성된 데이터 포맷 기술서 모듈(2)를 파싱하는 도구로, 데이터 포맷 기술서 모듈(2)의 문법에 부합하는 경우 데이터 파일(8)의 종류에 관계없이 동작한다. 즉, 데이터 파일(8)의 포맷으로부터 독립적이다.
유니버션 파서 모듈(4)은 데이터 포맷 기술서 모듈(2)을 마크업 단위로 파싱 한다.
③ 응용 프로그램 콜백함수 모듈
응용 프로그램 콜백함수 모듈(6)은 파서 장치에서 반복 수행되는 작업을 위하여 제공하는 인터페이스 모듈로 수행하고자 하는 작업에 따라서 응용프로그램마다 개발자가 직접 작성해야 하는 부분이다.
한편, 이와 같은 유니버션 파서 모듈(4)에 의해 파싱된 결과는 응용프로그램 콜백함수 모듈(6)이 사용자에게 전달해준다.
도 3은 본 발명의 일실시예에 따른 데이터 포맷 기술서, 데이터 파일 및 콜백함수간 연관 관계를 나타낸 도면이다.
도 3을 참조하여 보면, 유니버션 파서 모듈(4)의 내부에서는 미리 탑재한 데이터 포맷 기술서 모듈(2)의 내용을 순서대로 해석하고, 해석된 내용에 따라서 데이터 파일(8)을 부분적으로 읽어온다. 유니버션 파서 모듈(4)에서 읽어온 내용은 해당 데이터 포맷의 콜백함수 모듈(6)로 전달되어 해당 데이터 파일(8)을 응용 프로그램 내부에서 사용할 수 있는 자료 구조 형태로 변환하여 사용된다.
도 3에서는 .tga 형식의 그림 파일을 읽어들여 응용프로그램 내부에서 사용하는 tga 자료 구조 형태로 재구성하는 파싱 과정을 나타내고 있으며, 유니버션 파서 모듈(4)는 먼저 사전에 로딩한 데이터 포맷 기술서 모듈(2)를 바탕으로 외부의 데이터 파일(.tga)(8)에서 데이터 포맷 기술서 모듈(2)에 명시된 바이트를 읽어들이고 이를 콜백함수 모듈(6)에 전달하게 된다.
콜백함수 모듈(6)에 전달된 데이터는 응용 프로그램 내부에서 사용하는 데이터 구조에 맞도록 저장되며, 모든 파싱 작업이 완료되면 외부 데이터 파일은 응용 프로그램 내부에서 하나의 데이터 구조체로 저장된다.
도 4는 본 발명의 일실시예에 따른 파서 장치의 구조도이다.
도 4를 참조하여 보면, 파서 장치의 구조도로 데이터 파일(8) 등을 읽어들이는 파일 로더(File Loader)(40), 데이터 포맷 기술서 모듈(2)를 해석하는 데이터 포맷 파서(Data Format Parser)(48) 및 읽어들인 데이터 포맷 기술서 모듈(2)와 해당 데이터 포맷의 콜백함수를 관리하며, 데이터 포맷 기술서 모듈(2)을 포함하는 데이터 포맷 기술서 관리자(Data Format Description Manager)(50)로 구성된다.
전술한 유니버션 파서 모듈(4)의 프레임워크는 다음과 같은 모듈로 구성된다.
1) 파일 로더
파일 로더(40)는 데이터 파일 로더(Data File Loader)(42), 데이터 포맷 기술서 파일 로더(Data Format Description File Loader)(44) 및 ZIP 파일 로더(ZIP File Loader)(46)로 구성된다.
먼저, 데이터 파일 로더(Data File Loader)(42)는 tga, bmp 등의 파싱 작업의 대상이 되는 파일을 데이터 포맷 파서(48)로 불러들이는 역할을 하는 서브 모듈이다.
데이터 포맷 기술서 파일 로더(Data Format Description File Loader)(44)는 데이터 포맷 기술서 모듈(2)를 읽어들이는 역할을 하며 읽어들인 데이터 포맷 기술서 파일은 콜백함수 포인터(503, 505, 507, 509)와 함께 데이터 포맷 기술서 관리자(50)가 관리한다.
Zip 파일 로더(ZIP File Loader)(46)는 Zip 형식으로 압축되어 있는 파일을 읽어들이는 모듈로 파서 장치의 부가 요소이다.
2) 데이터 포맷 파서(Data Format Parser)
데이터 포맷 파서(48)는 마크업 언어 파서(Markup Language Parser)(482) 노드 네비게이터(Node Navigator)(484) 및 데이터 포맷 구문 파서(Data Format Syntax Parser)(486)로 구성된다.
먼저, 마크업 언어 파서(Markup Language Parser)(482)는 데이터 포맷 기술서 모듈(2)에 사용한 마크업 언어 파일을 파싱하는 모듈이다.
한편, 데이터 포맷 기술서 모듈(2)에서는 가변자, 후보자, 반복자, 서브 블록, 서브 루틴 등을 하나의 노드로 정의하며, 노드 네비게이터(484)는 데이터 포맷 기술 문서 내부에서의 노드 해석 순서를 제어한다. 예컨대, 가변자 내부에서 알맞은 후보자를 선택하거나, 반복자의 반복 회수에 알맞게 반복 해석(파싱)을 수행한다.
데이터 포맷 구문 파서(486)는 데이터 포맷 문법을 해석하는 모듈로 노드 네비게이터(484)에서 선택한 구문을 마크업 언어 파서(482)를 통하여 항목별로 나누고, 해당 항목에 알맞은 후처리를 위하여 각각의 콜백함수 포인터(503, 505, 507, 509)를 통해 대응하는 콜백함수 모듈(6)를 호출한다.
3) 데이터 포맷 기술서 관리자(Data Format Description Manager)
데이터 포맷 기술서 관리자(50)는 전술한 바와 같이 다수의 파일 형식을 처리하기 위한 파일 규격에 대응하는 다수의 데이터 포맷 기술서 모듈(2)와 대응하는 콜백함수 포인터(503, 505, 507, 509)를 갖는다. 데이터 포맷 기술서 파일 로더(44)를 통하여 로딩된 데이터 포맷 기술서 모듈(2)와 콜백함수 포인터(503, 505, 507, 509)를 쌍(pair)으로 저장하고 관리하는 데이터 포맷 기술서 관리자(50)로 입력되면, 데이터 포맷 기술서 관리자(50)는 외부 파일의 확장자(file extension) 또는 헤더(header) 분석을 통하여 알맞은 데이터 포맷 기술서 모듈(2)를 데이터 포맷 파서(48)로 전달한다.
따라서, 본 발명에 따른 데이터 포맷 기술서를 채용함으로써, 데이터 포맷 기술서는 개발언어 및 응용 프로그램의 성격에 관계없이 재사용이 가능하므로, 데이터 포맷 파서의 경우 개발 언어에 따라서 한번 만들어 놓으면 응용 프로그램에 관계없이 재사용이 가능하며, 추가적인 데이터 포맷의 파싱이 필요한 경우, 해당 데이터 포맷 기술서와 콜백함수만 작성하면 추가적인 파서의 개발없이 해당 데이터 포맷을 파싱할 수 있는 효과가 있다.
또한, 데이터 포맷 기술서의 경우 마크업 언어로 작성된 문서의 메타데이 타(meta-data)적인 특성을 이용하여 재가공이 용이하며, 재가공 방법에 따라서 해당 데이터 포맷의 스팩 문서(specification document)를 자동으로 생성하는데 사용할 수 있는 효과가 있다.
결론적으로 본 발명에서 제안한 데이터 포맷 기술 방법 및 데이터 포맷 파서 장치를 사용할 경우, 기존의 파서 개발 작업에서 발생하는 중복적인 프로그래밍 작업을 줄이고 재사용성을 극대화하며, 이를 통하여 응용프로그램의 개발 효율을 증대시킬 수 있는 효과가 있다.

Claims (16)

  1. 마크업 언어를 이용한 파서 장치에 있어서,
    데이터 파일의 파싱 방법을 마크업 언어로 기술한 데이터 포맷 기술서를 탑재하고, 상기 데이터 포맷 기술서를 이용하여 데이터 파일을 해석하는 유니버셜 파서 모듈과;
    상기 데이터 파일에 대응하여 해당 데이터 포맷 기술서에 따라 파싱하여 해당 결과를 응용프로그램 내부에 전달하는 콜백함수 모듈을 포함하는 것을 특징으로 하는 마크업 언어를 이용한 파서 장치.
  2. 제1항에 있어서,
    상기 데이터 포맷 기술서는,
    기술된 데이터 포맷의 형식을 나타내는 식별자인 포맷 식별자와;
    상기 데이터 파일에서 원하는 만큼의 바이트 수를 읽어들여 읽어들인 바이트 수를 명시하는 필드 판독자와;
    상기 데이터 파일에서 원하는 만큼의 바이트 수를 읽어들이고, 이를 지정한 항목과 비교한 결과 일치하면 계속 파싱을 진행하고, 일치하지 않으면 파싱을 중지하는 필드 확인자와;
    조건에 따라서 다양한 항목중에 선택적인 작업을 수행해야할 경우 이를 가변항 블록으로 지정하는 가변자와;
    조건을 만족시킬 경우 수행될 작업 블록을 지정하며 조건에 해당하는 조건값과 해당 조건을 만족시키는 결과값을 명시하는 후보자와;
    동일한 작업을 반복 수행할 작업 블록을 지정하며 반복할 횟수는 파일의 끝이나 숫자 혹은 변수로 지정하는 반복자와;
    작업을 하나의 작업 블록으로 지정할 경우 내부적으로 식별을 위하여 사용하는 서브 블록과;
    상기 데이터 포맷 기술서 내에 정의된 작업을 현재 위치에서 수행하기 위한 기능을 제공하는 서브 루틴과;
    상기 데이터 포맷 기술서 내에서 연산의 결과값이 필요한 경우 사용하는 연산자로 이루어진 것을 특징으로 하는 마크업 언어를 이용한 파서 장치.
  3. 제1항 또는 제2항에 있어서,
    상기 유니버셜 파서는,
    사전에 로딩한 상기 데이터 포맷 기술서를 바탕으로 상기 데이터 파일에서 상기 데이서 포맷 기술서에 명시된 바이트를 읽어들이고 이를 콜백함수에 전달하고, 상기 콜백함수에 전달된 데이터는 응용 프로그램 내부에서 사용하는 데이터 구조에 맞도록 저장하며, 모든 파싱 작업이 완료되면 외부 데이터 파일은 응용 프로그램 내부에서 하나의 데이터 구조체로 저장되는 것을 특징으로 하는 마크업 언어를 이용한 파서 장치.
  4. 제1항에 있어서,
    상기 유니버셜 파서는,
    상기 데이터 파일을 읽어들이는 파일 로더와;
    상기 데이터 포맷 기술서를 해석하는 데이터 포맷 파서와;
    입력된 외부 파일의 확장자 또는 헤더 분석을 통하여 해당 데이터 포맷 기술서를 데이터 포맷 파서로 전달하는 데이터 포맷 기술서 관리자로 이루어진 것을 특징으로 하는 마크업 언어를 이용한 파서 장치.
  5. 제4항에 있어서,
    상기 파일 로더는,
    파싱 작업의 대상이 되는 파일을 데이터 포맷 파서로 불러들이는 데이터 파일 로더와;
    상기 데이터 포맷 기술서를 읽어들이는 데이터 포맷 기술서 파일 로더와;
    압축되어 있는 파일을 읽어들이는 Zip 파일 로더로 이루어진 것을 특징으로 하는 마크업 언어를 이용한 파서 장치.
  6. 제5항에 있어서,
    상기 데이터 포맷 기술서 파일 로더가 읽어들인 데이터 포맷 기술서 파일은 콜백함수 포인터와 함께 상기 데이터 포맷 기술서 관리자에 의해 저장되는 것을 특징으로 하는 마크업 언어를 이용한 파서 장치.
  7. 제4항에 있어서,
    상기 데이터 포맷 파서는,
    상기 데이터 포맷 기술서에 사용한 상기 마크업 언어 파일을 파싱하는 모듈인 마크업 언어 파서와;
    데이터 포맷 문법을 해석하고, 상기 마크업 언어 파서에 의해 항목별로 나뉘어진 구문의 후처리를 위하여 각각의 콜백함수 포인터를 통해 대응하는 콜백함수를 호출하는 데이터 포맷 구문 파서와;
    데이터 포맷 기술 문서 내부에서의 노드 해석 순서를 제어하는 노드 네비게이터로 이루어진 것을 특징으로 하는 마크업 언어를 이용한 파서 장치.
  8. 제4항에 있어서,
    데이터 포맷 기술서 관리자는,
    상기 데이터 포멧 기술서와 대응하는 콜백함수 포인터를 포함하는 것을 특징으로 하는 마크업 언어를 이용한 파서 장치.
  9. 제1항에 있어서,
    상기 콜백함수로 전달된 상기 데이터는 상기 응용 프로그램 내부에서 사용하는 데이터 구조에 맞도록 저장되며, 모든 파싱 작업이 완료되면 상기 데이터 파일 은 응용 프로그램 내부에서 하나의 데이터 구조체로 저장되는 것을 특징으로 하는 마크업 언어를 이용한 파서 장치.
  10. 제1항에 있어서,
    상기 유니버셜 파서는 소스 코드 또는 라이브러리 형식으로 제공되며 데이터 포맷으로부터 독립적인 것을 특징으로 하는 마크업 언어를 이용한 파서 장치.
  11. 제2항에 있어서,
    상기 데이터 포맷 기술서는
    상기 가변자, 상기 후보자, 상기 반복자, 상기 서브 블록 및 상기 서브 루틴을 각각 하나의 노드로 정의하는 것을 특징으로 하는 마크업 언어를 이용한 파서 장치.
  12. 제2항에 있어서,
    상기 가변자들 사이에는 상기 후보자가 위치하는 것을 특징으로 하는 마크업 언어를 이용한 파서 장치.
  13. 마크업 언어를 이용한 파싱 방법으로서,
    데이터 파일의 파싱 방법을 마크업 언어로 기술한 데이터 포맷 기술서를 탑재한 데이터 포맷 기술서를 이용하여 데이터 파일을 해석하는 단계와;
    상기 데이터 파일에 대응하여 해당 데이터 포맷 기술서에 따라 파싱하는 부분파싱단계와;
    상기 부분파싱단계에서 해석된 파싱 결과를 응용프로그램으로 전달하는 단계를 포함하는 것을 특징으로 하는 마크업 언어를 이용한 파싱 방법.
  14. 제13항에 있어서,
    상기 부분파싱단계는,
    사전에 로딩한 상기 데이터 포맷 기술서를 바탕으로 상기 데이터 파일에서 상기 데이서 포맷 기술서에 명시된 바이트를 읽어들이고 이를 콜백함수에 전달하는 전송단계와;
    상기 콜백함수에 전달된 데이터는 응용 프로그램 내부에서 사용하는 데이터 구조에 맞도록 저장하는 제1 저장단계와;
    상기 부분파싱 작업이 완료되면 외부 데이터 파일은 응용 프로그램 내부에서 하나의 데이터 구조체로 저장하는 제2 저장단계로 이루어진 것을 특징으로 하는 마크업 언어를 이용한 파싱 방법.
  15. 제13항 또는 제14항에 있어서,
    상기 유니버셜 파서는 소스 코드 또는 라이브러리 형식으로 제공되며 데이 터 포맷으로부터 독립으로 구성하는 것을 특징으로 하는 마크업 언어를 이용한 파싱 방법.
  16. 제15항에 있어서,
    상기 데이터 포맷 기술서는 포맷 식별자, 필드 판독자, 필드 확인자, 가변자, 후보자, 반복자, 서브 블록, 서브 루틴 및 연산자 등으로 구성되며, 상기 가변자, 상기 후보자, 상기 반복자, 상기 서브 블록 및 상기 서브 루틴을 각각 하나의 노드로 정의하여 처리하는 것을 특징으로 하는 마크업 언어를 이용한 파싱 방법.
KR1020060124003A 2006-09-27 2006-12-07 마크업 언어를 이용한 파서 장치 및 파싱 방법 KR100836736B1 (ko)

Priority Applications (1)

Application Number Priority Date Filing Date Title
US11/618,810 US7984430B2 (en) 2006-09-27 2006-12-30 Parser framework using markup language

Applications Claiming Priority (2)

Application Number Priority Date Filing Date Title
KR1020060094266 2006-09-27
KR20060094266 2006-09-27

Publications (2)

Publication Number Publication Date
KR20080028731A KR20080028731A (ko) 2008-04-01
KR100836736B1 true KR100836736B1 (ko) 2008-06-10

Family

ID=39531611

Family Applications (1)

Application Number Title Priority Date Filing Date
KR1020060124003A KR100836736B1 (ko) 2006-09-27 2006-12-07 마크업 언어를 이용한 파서 장치 및 파싱 방법

Country Status (1)

Country Link
KR (1) KR100836736B1 (ko)

Citations (4)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JP2004005611A (ja) 2002-04-26 2004-01-08 Extreme Networks Inc ネットワーク・デバイスの構成をリストアするための方法および装置
KR20040007545A (ko) * 2001-06-07 2004-01-24 인터내셔널 비지네스 머신즈 코포레이션 소프트웨어 객체와 구조화 언어 요소 기반 문서간의 매핑시스템 및 방법
KR20050053671A (ko) * 2002-10-15 2005-06-08 인터내셔널 비지네스 머신즈 코포레이션 고성능 스키마 검증을 위한 xml 스키마의 주해된 자동인코딩
KR100580198B1 (ko) 2004-04-02 2006-05-16 삼성전자주식회사 트리 패스 필터링 기능을 갖는 엑스엠엘 프로세서, 트리패스 필터링 방법 및 그 방법을 수행하기 위한 프로그램이저장된 기록 매체

Patent Citations (4)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
KR20040007545A (ko) * 2001-06-07 2004-01-24 인터내셔널 비지네스 머신즈 코포레이션 소프트웨어 객체와 구조화 언어 요소 기반 문서간의 매핑시스템 및 방법
JP2004005611A (ja) 2002-04-26 2004-01-08 Extreme Networks Inc ネットワーク・デバイスの構成をリストアするための方法および装置
KR20050053671A (ko) * 2002-10-15 2005-06-08 인터내셔널 비지네스 머신즈 코포레이션 고성능 스키마 검증을 위한 xml 스키마의 주해된 자동인코딩
KR100580198B1 (ko) 2004-04-02 2006-05-16 삼성전자주식회사 트리 패스 필터링 기능을 갖는 엑스엠엘 프로세서, 트리패스 필터링 방법 및 그 방법을 수행하기 위한 프로그램이저장된 기록 매체

Also Published As

Publication number Publication date
KR20080028731A (ko) 2008-04-01

Similar Documents

Publication Publication Date Title
Rose et al. The epsilon generation language
US10831456B1 (en) External code integrations within a computing environment
US8091071B2 (en) Method and system for template-based code generation
Voelter et al. mbeddr: Instantiating a language workbench in the embedded software domain
US20220318130A1 (en) Auto test generator
CN110673854A (zh) Sas语言编译方法、装置、设备及可读存储介质
Lytra et al. Supporting consistency between architectural design decisions and component models through reusable architectural knowledge transformations
CN111240684B (zh) 一种js代码的裁剪方法、装置、介质和电子设备
CN111427583A (zh) 组件的编译方法、装置和电子设备及计算机可读存储介质
CN110134380B (zh) 一种基于模板引擎的代码生成方法、装置及电子设备
EP2626784A1 (en) Method and apparatus for automated MATLAB interfacing
US7984430B2 (en) Parser framework using markup language
Schreiner et al. A new approach for generating view generators
KR100836736B1 (ko) 마크업 언어를 이용한 파서 장치 및 파싱 방법
CN114757124B (zh) 一种基于xml的cfd工作流建模方法、装置、计算机及存储介质
CN111078217A (zh) 脑图生成方法、装置和计算机可读存储介质
US20220075796A1 (en) Architecture for data map converters
CN112667202B (zh) Mda与bpmn相结合的软件设计方法和装置
CN113031940A (zh) 前端框架开发方法、装置及终端设备
CN112667278A (zh) 一种医院医保接口配置方法及系统
Amyot et al. Flexible verification of user-defined semantic constraints in modelling tools
CN111240693A (zh) 实时数据处理方法、装置、设备及存储介质
CN111368523A (zh) 一种影视剧本排版格式转换方法及装置
EP4336348A1 (en) Iterative and interactive method for code conversion
Randak et al. Extending ATL for Native UML Profile Support: An Experience Report.

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: 20110531

Year of fee payment: 4

LAPS Lapse due to unpaid annual fee