<XML>
XML(EXtensible Markup Language) 이란?
💡 구조화된 데이터를 저장하고 전달할 목적으로 만들어진 언어로서, 저장되는 데이터 구조를 기술하기 위해 사용하는 마크업 언어
☝ 마크업 언어란?
💡 태그(tags)를 사용해서 문서 내에서 요소를 정의하는 컴퓨터 언어
예시) HTML, XML 등등
XML의 특징
- XML은 다른 목적의 마크업 언어를 만드는 데 사용되는 다목적 마크업 언어이다.
- XML은 다른 시스템끼리 다양한 종류의 데이터를 손쉽게 교환할 수 있도록 해준다.
- 웹에서 자주 사용된다!
- XML은 새로운 태그를 만들어 추가해도 계속해서 동작하므로, 확장성이 좋다.
- 정해져 있는 태그 뿐만 아니라, 태그를 만들어서 사용 가능하다!
- XML은 데이터를 보여주지 않고, 데이터를 전달하고 저장하는 것만을 목적으로 한다.
- XML은 텍스트 데이터 형식의 언어로 모든 XML 문서는 유니코드 문자로만 이루어진다.
XML이 사용되는 이유
XML은 데이터를 정의하는 규칙을 제공하는 마크업 언어이다. 자체적으로 컴퓨팅 작업을 수행할 수는 없지만, 구조적 데이터를 관리하기 위해서 작성되고 모든 프로그래밍 언어, 소프트웨어를 제한없이 지원할 수 있다. 이러한 강력한 이식성 덕분에 XML은 데이터 교환에서 가장 인기 있는 언어가 될 수 있었다.
예를 들어서 다음과 같은 XML 데이터가 있다.
<?xml version="1.0"?>
<CAT>
<NAME>Izzy</NAME>
<BREED>Siamese</BREED>
<AGE>6</AGE>
<ALTERED>yes</ALTERED>
<DECLAWED>no</DECLAWED>
<LICENSE>Izz138bod</LICENSE>
<OWNER>Colin Wilcox</OWNER>
</CAT>
이때 XML 태그를 활용해서 데이터 종류를 정확하게 알 수 있다. 하지만 HTML로 브라우저로 출력했을 경우에는
Izzy Siamese 6 yes no Izz138bod Colin Wilcox
이런식으로 나타난다. 어떤 데이터가 사용되었고, 어떤 의미를 가지고 있는 것인지 알 수 없다. 명확한 의미를 알 수 없는 데이터는 가비지값일 뿐이다…!
XML의 장점
- 데이터 무결성
- 데이터 설명과 함께 데이터를 전송하기 때문에 데이터 손실을 방지한다.
- 여러 플랫폼에서 일관되게 데이터를 저장 할 수 있다.
- 검색 효율성 증가
- 컴퓨터가 자연어를 더 효율적으로 해석할 수 있게 도와준다.
- 좋은 이식성
- 다양한 시스템에서 사용 가능하기 때문에 다른 시스템끼리의 정보 전달에서 유용하다.
- 쉬운 유지관리
- 코드와 함께 저장 되기 때문에 유지 관리가 쉽다.
XML의 형태
- 트리(tree)형태의 계층 구조를 가진다
- HTML과 같은 구조
- 하나의 루트(root)요소부터 시작해서 각각의 자식 요소에 연결된다.
- 태그(tags)를 통해서 데이터를 설명하고 구조를 구성한다.
☝ 트리(tree) 구조란?
💡 노드로 이루어진 그래프 자료구조로써, 한 노드에서 시작해서 다른 정점들을 순회하여 자기 자신에게
돌아오는 순환이 없는 연결 그래프
- 루트(root) 노드 : 최상위 노드
- 부모(parent) 노드 : 연결되어 있는 상단의 노드
- 자식(child) 노드 : 연결되어 있는 하단의 노드
참고 문헌
XML이란 무엇인가요? - Extensible Markup Language(XML) 설명 - AWS
XML이란 무엇인가요? - Extensible Markup Language(XML) 설명 - AWS
XML이란 무엇인가요? Extensible Markup Language(XML)를 사용하면 공유 가능한 방식으로 데이터를 정의하고 저장할 수 있습니다. XML은 웹 사이트, 데이터베이스 및 타사 애플리케이션과 같은 컴퓨터 시스
aws.amazon.com
초보자를 위한 XML 설명 - Microsoft 지원
구독 혜택을 살펴보고, 교육 과정을 찾아보고, 디바이스를 보호하는 방법 등을 알아봅니다. 커뮤니티를 통해 질문하고 답변하고, 피드백을 제공하고, 풍부한 지식을 갖춘 전문가의 의견을 들을
support.microsoft.com
<Parse>
파싱(Parsing)이란?
💡일련의 문자열을 의미있는 token(어휘 분석의 단위)으로 분해하고 그것들로 이루어진 Parse tree 를 만드는 과정
- 텍스트 형식의 데이터를 분석해서 그것을 이루고 있는 구성 성분에 맞게 분해하고, 그들 사이의 위계 관계를 분석해서 데이터 구조를 결정하는것
- 주로 텍스트 기반 데이터를 해석하거나, 프로그래밍 언어의 소스 코드를 이해하거나, 문서를 구조화하고 내용을 추출하는 데 사용된다
- 특정 형식으로 구성된 데이터를 분석하고 그 의미를 이해하는 과정
파서(Parser)란?
💡 원시 프로그램을 읽어들여 그 문장의 구조를 알아내는 Parshing을 행하는 프로그램
- 인터프리터나 컴파일러의 구성 요소 중 하나
- 입력 토큰에 내재된 자료 구조를 빌드하고 문법을 검사한다.
- 대표적으로 파서 트리(Parser Tree) 형태의 자료구조를 사용한다.
- 기계어로 바꾸기 직전단계까지의 과정을 파서가 담당한다.
☝ 파서가 파싱을 통해 파싱트리가 완성되면 파싱트리를 가지고 컴파일러는 기계어로 변환하는 작업에 들어간다.
토큰(Token)이란?
💡 언어가 사용하는 기본 '단어’
- 구문적으로 의미를 갖는 최소의 단위
- 프로그래밍 언어는 모두 이러한 토큰으로 이루어져 있다
<컴파일러 이론>
Tokenizer
- 어떤 구문을 토큰화 하는 역할
- 토큰 : 어휘 분석의 단위
- 단어, 단어구, 문자열 등 의미있는 단위
- 어떤 요소들을 구조적으로 표현 할 수 있게 도와준다
- 토큰 : 어휘 분석의 단위
Lexer
- Tokenizer로 인해서 쪼개진 토큰들의 의미를 분석하는 역할
- 어휘분석 (lexical analysis) 하는 것
- 텍스트를 받아서 한 글자 한 글자 읽어나가다가 의미를 가진 단어를 만나면 Lexer에서는 그 단어를 전체 텍스트로부터 잘라서 Token으로 만든다
Lexial Analyze
Tokenizer 를 거치며 의미있는 단위로 쪼개지고, Lexer 를 거치며 그 결과의 의미를 분석하는 과정
Parser
- Lexical Analyze 된 데이터를 구조적으로 나타낸다.
- 결과는 AST(Abstract Syntax Tree) 형태로 생성된다.
Syntax Analyze
데이터가 올바른지 검증하는 과정
Parser가 수행되는 과정에서 잘못된 데이터가 발견됬을 때에 Error를 던진다.
AST(Abstract Syntax Tree)
- 컴파일러 과정을 거치면서 분석된 구문을 트리의 형태로 나타내는 자료구조
- 분석된 소스를 컴퓨터가 이해할 수 있는 구조로 변경시킨 트리
[컴파일러 이론] Tokenizer, Lexer, Parser
[컴파일러 이론] Tokenizer, Lexer, Parser
[컴파일러 이론] Tokenizer, Lexer, Parser 컴파일러는 소스코드를 기계어로 바꿔주는 역할을 합니다. 이 때 구문분석 -> 최적화 -> 코드생성 -> 링킹 의 과정이 진행됩니다. 구문분석 과정에서 소스코드
trumanfromkorea.tistory.com