'언어'라고 표현되어지는 것들을
분석하고 사용하기 위해 가공하는
프로그램/도구/방법을 의미함
1. 파싱 (Parsing)
일련의 문자열을 의미있는 token(어휘 분석의 단위) 으로 분해하고 그것들로 이루어진 Parse tree를 만드는 과정
parsing은 구문 분석이라고 한다. 문장이 이루고 있는 구성 성분을 분해하고 분해된 성분의 위계 관계를 분석하여 구조를 결정하는 것이다. 즉, 데이터를 분해 분석하여 원하는 형태로 조립하고 다시 빼내는 프로그램을 말한다. 웹상에서 주어진 정보를 내가 원하는 형태로 가공하여 서버에서 불러들이는 것이다. 이러한 parsing 기법으로는 XML parsing과 JSON parsing이 있다.
( XML, JSON : 데이터를 표현하는 문자열. JSON 파싱 : JSON 형식의 문자열을 객체로 변환하는 것)
2. 파서 (Parser)
파서는 파싱을 하는 프로세서를 파서라고 부른다. 즉, 파서가 파싱 작업을 하는 것이다.
Parser란 Compiler의 일부로서 원시 프로그램의 명령문이나 온라인 명령문, HTML 문서 등에서 Markup Tag
등을 입력으로 받아들여서 구분을 해석 할 수 있는 단위로 여러 부분으로 해석해 주는 역할을 한다.
즉, 컴파일러(Compiler)나 인터프리터(Interpreter)에서 원시 프로그램을 읽어 들여, 그 문장이 구조를 알아내는 파싱을 행하여 주는 프로그램이다.
[출처] 파싱(Parsing), 파서(Parser)란?|작성자 go https://blog.naver.com/wndgndi/222666582392
1. 파싱(Parsing) :
1) 어떠한 데이터가 있는데 이를 다른 모양으로 만들어서 이용하는 것을 파싱이라고 한다.
XML같은 특정 파일들을 읽어서 이를 다른 프로그램이나 서브루틴이 사용할 수 있는 표현 방식으로 변환시켜 주는 것이다. XML 문서를 보면 HTML처럼 <>태그가 보이는데 이는 사용자가 이렇게 입력하지만 컴퓨터가 알아 볼 수 있도록 바꿔주는 과정을 의미한다.
2) 컴파일러의 일부로써 원시 프로그램의 명령문이나 온라인 명령문, HTML 문서등에서 마크업태그 등을 입력으로 받아들여서 구문을 해석할 수 있는 단위로 여러 부분으로 분할해 주는 역할을 한다.
2. 파서(Parser) :
파싱을 하는 프로세서를 파서라고 부립니다. 즉, 파서가 파싱 작업을 하는 것.
https://naddola.tistory.com/entry/%ED%8C%8C%EC%8B%B1Parsing%EA%B3%BC-%ED%8C%8C%EC%84%9CParser
Parsing 파싱
파싱(parsing)은 구문 분석이라고 한다. 문장이 이루고 있는 구성 성분을 분해하고 분해된 성분의 위계 관계를 분석하여 구조를 결정하는 것이다. 즉 데이터를 분해 분석하여 원하는 형태로 조립하고 다시 빼내는 프로그램을 말한다. 웹상에서 주어진 정보를 내가 원하는 형태로 가공하여 서버에서 불러들이는 것이다.
구문 분석, 구문 분석, 또는 구문 분석 분석하는 과정이다. 문자열의 문자 중 하나로, 자연 언어, 컴퓨터 언어 또는 데이터 구조의 규정에 부합하는, 형식적인 문법. 파싱(parsing)은 라틴어 파스(pars)에서 유래한 것으로 말의 일부를 의미한다. 용어는 언어학과 컴퓨터 과학의 다른 분야에서 약간 다른 의미를 가지고 있다. 전통적인 문장 분석은 종종 문장 다이어그램과 같은 장치를 사용하여 문장이나 단어의 정확한 의미를 이해하는 방법으로 수행된다. 보통 '주제와 술어'와 같은 문법 구분의 중요성을 강조한다. 내 컴퓨터 언어학 용어는 결과의 성분으로 단어의 문장이나 다른 문자열의 컴퓨터에 의해 형식적인 분석을 참조하는 데 사용된다. 파스 트리도 포함할 수 있는 서로 자신의 구문 관계를 보여주는 의미 및 기타 정보를 이용하는 언어 이해를 설명할 때 심리 언어학에도 사용된다. 이 문맥에서, 파싱은 인간이 "문법적 구성 요소, 말의 부분을 식별하는 것, 구문적 관계 등"으로 문장 또는 구(언어 또는 텍스트로)를 분석하는 방식을 말한다. 이 용어는 특히 "정원 경로 문장 Garden path sentence"을 해석하는데 도움이 되는 언어적 신호를 논의할 때에도 일반적으로 사용된다. 컴퓨터 과학 내에서 이 용어는 컴퓨터 언어 분석에 사용되며, 컴파일러와 해석기의 작성을 용이하게 하기 위해 입력 코드를 구성 요소 부분으로 구문 분석하는 것을 말한다. 이 용어는 또한 분리 또는 분리를 설명하기 위해 사용될 수 있다.
* 정원 경로 문장(Garden path sentence)은 독자의 가장 일반적인 해석이 잘못된 것으로 나타나는 문법적으로 정확한 문장입니다. 독자는 해석이 잘못된 파싱에 이끌려 버립니다. 정원 경로 문장은 심리언어학에서 사용되어 사람들이 언어를 한 단어씩 처리한다는 사실을 보여줍니다. "Garden path"는 "무리하게 인도되다"라는 뜻의 표현을 의미합니다. 현재의 심리언어학 이론에 따르면, 정원 경로 문장을 읽는 동안 독자는 한 단어씩 의미의 구조를 구축합니다. 어느 순간 독자에게 다음 단어나 구문이 지금까지 구축된 구조에 통합될 수 없다는 것이 분명해집니다. 그것은 독자를 인도해온 경로와 일치하지 않습니다. 정원 경로 문장은 구두 표현에서는 덜 흔하게 나타납니다. 왜냐하면 구두 표현의 음운적인 특징이 텍스트의 모호성을 해소하는 데 일반적으로 기여하기 때문입니다. 이 현상은 Stanley Fish의 "Surprised by Sin"이라는 책에서 상세히 논의됩니다. 그는 문장의 점진적 파싱이 문학 이론가들에 의해 다루어져야 한다고 주장합니다.
....
Parser 파서
파서(parser)란 컴파일러(compiler)의 일부로서 원시 프로그램의 명령문이나 온라인 명령문, HTML 문서 등에서 Markup Tag 등을 입력으로 받아들여서 구분을 해석할 수 있는 단위로 여러 부분으로 해석해 주는 역할을 한다. 즉 Compiler나 Interpreter에서 원시 프로그램을 읽어 들여, 그 문장이 구조를 알아내는 Parsing을 행하여 주는 프로그램이다. 파서는 입력
데이터를 얻어 (흔히 텍스트) 및 빌드 소프트웨어 구성 요소 데이터 구조를 종종 일종의 - 파스 트리, 추상 구문 트리 또는
다른 계층 구조를 올바른 신택 니스를 확인하는 동안, 입력의 구조적 표현을 제공한다. 파싱은 다른 단계들에 선행하거나 이어질 수 있거나, 이들은 단일 단계로 결합될 수 있다. 파서 앞에는 종종 입력 문자 시퀀스에서 토큰을 생성하는 별도의 어휘 분석기가 있다. 또는 스캐너 없이 구문 분석할 수 있다. 파서는 수동으로 프로그래밍되거나 파서 생성기에 의해 자동 또는 반자동으로 생성될 수 있다. 구문 분석은 templating을 보완하여 형식화된 출력을 생성한다. 이들은 서로 다른 도메인에 적용될 수 있지만 종종 scanf / printf 쌍 또는 컴파일러의 입력 (프런트 엔드 파싱) 및 출력 (백엔드 코드 생성) 단계와 같이 함께 나타난다.
파서에 대한 입력은 종종 일부 컴퓨터 언어의 텍스트이지만, 자연어 텍스트 또는 구조화되지 않은 텍스트 데이터일 수도 있다. 이 경우 일반적으로 구문 분석 트리가 아닌 텍스트의 특정 부분만 추출된다. 파서는 scanf 와 같은 매우 간단한 기능부터 C++ 컴파일러의 프런트엔드 또는 웹브라우저의 HTML 파서와 같은 복잡한 프로그램에 이르기까지 다양하다. 간단한 구문 분석의 중요한 클래스는 정규표현식을 사용하여 수행된다. 정규표현식 그룹은 정규 언어를 정의한다. 해당 언어에 대한 파서를 자동으로 생성하여 텍스트의 패턴 일치 및 추출을 허용하는 정규식 엔진. 다른 맥락에서, 정규 표현식은 파싱 전에 출력이 사용되는 렉시 단계로서, 파싱 전에 대신 사용된다.
파서의 사용은 입력에 따라 다르다. 데이터 언어의 경우, 파서는 종종 HTML 또는 XML 텍스트로 읽기와 같은 프로그램의 파일 읽기 기능으로 발견된다. 이러한 예는 마크업 언어이다. 프로그래밍 언어의 경우 파서는 컴파일러 또는 인터프리터의 구성 요소로, 컴퓨터 프로그래밍 언어의 소스 코드를 구문 분석하여 일부 형태의 내부 표현을 만든다. 파서는 컴파일러 프런트 엔드의 핵심 단계이다. 프로그래밍 언어는 결정론적인 컨텍스트 프리 문법으로 지정되는 경향이 있다. 빠르고 효율적인 파서를 작성할 수 있기 때문이다. 컴파일러의 경우 구문 분석 자체를 한 번 또는 여러 번 수행할 수 있다. (원 패스 컴파일러 및 멀티 패스 컴파일러 참조).
...
특징
- 프로그램을 컴파일하는 과정에서 특정 프로그래밍 언어가 제시하는 문법을 잘 지켜서 작성하였는지 컴파일러가 검사한다. 예를 들어, XML parser는 XML 문서가 XML 문법에 맞게 작성되었는지를 검사한다.
- XML 문서를 읽고 해석하여 태그명, 속성명, 속성값 및 엘리먼트 내용을 분리해 주는 프로그램
- 인터넷에 주어진 정보를 내가 원하는대로 가공하여 서버에서 원하는 때 불러올 수 있도록 함
- 웹브라우저인 인터넷 익스플로러(IE) 또한 하나의 응용프로그램으로 XML parser가 파싱한 결과를 이용해 디스플레이(display)하도록 프로그래밍한다.
- 어떤 데이터를 원하는 형식(form)으로 만들어 낸다.
- 특정 문서(XML, HTML 등)을 읽어 다른 프로그램이나 서브루틴이 사용할 수 있는 내부의 표현 방식으로 변환해 준다. 예를 들어, 학교 홈페이지의 공지사항(태그 안의 텍스트 내용이 있는 것)을 읽어와서 그 중 텍스트 내용만 따로 저장하는 등의 다른 프로그램이나 서브루틴이 사용할 수 있는 표현방식으로 변경한다. (의미를 파악하면서 읽는다- 값이 얼마인지 id 태그의 이름이 무엇인지 등을 파악)
- <>와 같은 태그를 사용자가 입력하면 컴퓨터가 알아볼 수 있도록 바꿔주는 과정
- 컴파일러의 일부로 원시 프로그램의 명령문이나 온라인 명령문, HTML 문서 등에서 Markup Tag 등을 입력으로 받아들여 구문을 해석할 수 있는 단위로 여러부분으로 분할해주는 역할
- 파싱 기법으로 XMl 파싱 기법인 DOM과 SAX / JSON 파싱 기법이 있다.
구문 분석 - 위키백과, 우리 모두의 백과사전 (wikipedia.org)
https://en.wikipedia.org/wiki/Parsing
Python Parser
https://docs.kanaries.net/ko/tutorials/Python/what-is-parse-python
JavaScript JSON Parser
https://github.com/yeonjuan/dev-blog/blob/master/JavaScript/json-parser-with-javascript.md