관리 메뉴

IT 컴퓨터공학 자료실

파싱 (Parsing) (構文解析)에 대해 본문

영어 번역 & 일본어 번역

파싱 (Parsing) (構文解析)에 대해

윤맨1 2015. 7. 19. 20:59

構文解析こうぶんかいせきSyntactic Analysisとはある文章文法的関係説明すること(parse)計算機科学世界では構文解析字句解析Lexical Analysisとともにコンピュータ言語などの形式言語解析使用されるまた自然言語処理応用されることもある

構文解析機構構文解析器Parser

 

구문 분석 (行文분석, Syntactic Analysis)은 한 문장의 문법적인 관계를 설명하는 것(parse)이다. 컴퓨터 과학의 세계에서 구문 분석은 어휘 분석 (Lexical Analysis)과 함께 컴퓨터 언어 등의 형식 언어 분석에 사용된다. 또한 자연 언어 처리에 응용 될 수있다.

구문 분석을 실시하는 기구를 구문 분석기 (Parser)라고 부른다.

 

一般的プログラムにおける構文解析ではコンピュータ言語などの形式言語記述された入力から字句解析してトークン構文木抽象構文木のようなデータ構造生成その処理構文解析同時目的処理をおこなってしまう場合もある

 

일반적으로 프로그래밍에서의 구문 분석에서는 컴퓨터 언어 등의 형식 언어로 기술된 입력에서 어휘 분석을 통해 토큰 열을 받아 파서 트리와 추상 구문 트리와 같은 데이터 구조를 생성 한 다음 처리하여 넘긴다. 구문 분석과 동시에 원하는 처리를 행해 버리는 경우도 있다.

 

プログラミング言語場合実用上プログラムとしてしい入力のみをけるような構文規則めることは現実的でないそのため一般構文解析器制約めて本来言語文法よりも範囲構文つまり不正構文ける)、不正なものを排除するようにすることが

構文解析器からるのではなくパーサジェネレータで生成することもわれている

 

프로그래밍 언어의 경우, 실질적인 프로그램으로 올바른 입력 만 허용하도록 구문 규칙을 정하는 것은 현실적이지 못하다. 따라서 일반적으로 구문 분석기는 제약을 약화 본래 언어의 문법보다 넓은 범위의 구문을 접수 (, 부정한 구문도 접수) 나중에 잘못된 것을 배제하도록 하는 경우가 많다.

구문 분석기를 처음부터 만드는 것이 아니라 파서 생성기 로 생성 할 수도 널리 이용되고 있다.

 

 

처리 개요

 

以下では字句文法構文文法という2段階文法つコンピュータ言語構文解析として説明する

 

다음은 어휘 문법과 구문 문법이라는 2 단계의 문법을 가진 컴퓨터 언어의 구문 분석을 예로 설명한다.

 

まず第一段階として字句トークン生成するこれを字句解析入力文字列正規表現による文法定義された意味のあるシンボルに分割されるえば電卓プログラムに "12*(3+4)^2" 入力されたときこれを 12, *, (, 3, +, 4, ), ^, 2 という字句トークン分割するトークンは電卓プログラムの数式として意味のあるシンボルである字句解析構文解析器*, +, ^, (, ) といった文字たなトークンの先頭になるという規則っているため"12*" "(3" といった無意味字句けは発生しない

 

첫째 단계로 자구(토큰)를 생성한다. 이것을 어휘 분석이라고 부른다. 입력 문자열은 정규표현에 의한 문법에 정의되어 의미 있는 기호로 분할된다. 예를 들어, 계산기 프로그램 "12 * (3 + 4) ^ 2"를 입력했을 때 이를 12 * (3 + 4), ^ 2라는 문구 (토큰)로 나눕니다. 각 토큰은 계산기 프로그램의 수식으로 의미 있는 상징이다. 어휘 분석을 포함 구문 분석기는 * + ^ (,) 등의 문자가 새로운 토큰의 시작된다는 규칙을 가지고 있기 때문에 "12 *"또는 "(3"등 무의미한 어휘 분리는 발생하지 않는다.

 

段階実際構文解析構文解析ではトークンのびが文法らしてしい表現となっているかを判定するこのため文脈自由文法参照して再帰的規則適用していくただしプログラミング言語構文規則文脈自由文法だけでは表現できないえばデータしいか識別子宣言しいかなどは文脈自由文法範囲外であるそのような規則形式的には属性文法される

 

다음 단계에서 실제 구문 분석을 실시한다. 구문 분석에서는 토큰의 줄이 문법에 비추어 올바른 표현되고 있는지를 판정한다. 따라서 문맥 자유 문법을 참조 재귀적으로 규칙을 적용해 나간다. 그러나 프로그래밍 언어의 구문 규칙은 문맥 자유 문법만으로는 표현할 수 없다. 예를 들어, 데이터 유형이 올바른지 식별자의 선언이 정확한지 등은 문맥 자유 문법의 범위를 벗어난 얘기이다. 그런 규칙은 형식적으로는 속성 문법으로 표현된다.

 

最後意味的解析われ構文確認された表現意味識別して適当行動をとる電卓プログラムの場合適当行動とは評価計算でありコンパイラならコードの生成である属性文法もそのような行動決定関与する

마지막으로, 의미적인 해석을 구문이 확인 된 표현의 의미를 식별하여 적절한 행동을 취한다. 계산기 프로그램의 경우 적절한 행동과는 식의 평가 (계산)이며, 컴파일러라면 코드의 생성이다. 속성 문법도 그런 행동 결정에 관여한다.

 

 

방법

 

構文解析にはさまざまな手法提案されておりそれぞれの構文解析法して適用可能文法範囲存在する構文解析法まかに演算子順位法トップダウン構文解析法ボトムアップ構文解析法分類でき歴史的には演算子順位法トップダウン構文解析法構文解析理論によってから説明えられボトムアップ構文解析法理論主導作成された

 

구문 분석에는 다양한 방법이 제안되어 있으며, 각각의 구문 분석 방법에 적용가능한 문법의 범위가 존재한다. 구문 분석 방법은 대충 연산자 순위법 , 하향식 구문 분석 방법 , 상향식 파싱 방법으로 분류 할 수 있고, 역사적으로는 연산자 순위 법, 하향식 구문 분석 방법은 구문 분석 이론에 의해 나중에 설명이 추가된다. 상향식 파싱 법을 기준으로 작성되었다.

 

演算子順位法とトップダウン構文解析法手続きは人力作成されることがコンパイラの初期時代にはあったトップダウン構文解析法である再帰下降構文解析法はそのプログラムの実際のコードが文法記述によく一致することがられているしかし一般にボトムアップ構文解析非常くの内部状態とその遷移規則必要としその手続きを人力作成するのは困難である

 

연산자 순위 법과 하향식 구문 분석 방법의 절차는 인력으로 작성 될 수 컴파일러의 초기 시대에는 있었다. 특히 하향식 구문 분석 방법 인 재귀 하강 파싱 법은 그 프로그램의 실제 코드가 문법 설명 잘 일치하는 것으로 알려져 있다. 그러나 일반적으로 상향식 구문 분석은 많은 내부 상태와 그 사이의 전이 규칙을 필요로 하고 그 절차를 인력으로 만드는 것은 곤란하다.

 

現在にボトムアップ構文解析法であるLALR(1)使用した構文解析器がパーサジェネレータによって生成されることがこの手法使用するパーサジェネレータにはyaccbisonなどがありどちらも代表的なパーサジェネレータであるこれらのパーサジェネレータがこの手法採用する理由としては適用可能文法範囲十分きく効率もそこそこくないことなどがげられるそのトップダウン構文解析法であるLL使用生成される場合もままある

현재는 주로 상향식 파싱 법이 많이 쓰인다. LALR(1)를 사용한 구문 분석기가 파서 생성기에 ​​의해 생성되는 경우가 많다. 이 기술을 사용하는 파서 생성기는 yacc bison 등이 모두 대표적인 파서 생성기이다. 이러한 파서 생성기가 이 방식을 채택하는 이유는 적용 가능한 문법 범위가 충분히 크고 효율도 적당히 나쁘지 않은 것 등을 이유로 들 수 있다. 그밖에는 하향식 구문 분석 방법인 LL 법 이 사용되는 경우도 있다.



출처 : https://ja.wikipedia.org/wiki/%E6%A7%8B%E6%96%87%E8%A7%A3%E6%9E%90

'영어 번역 & 일본어 번역' 카테고리의 다른 글

Event-driven architecture에 대해  (0) 2015.07.19
Flow Control에 대해  (0) 2015.07.19
Hardware Abstraction Layer(HAL)에 대해  (0) 2015.07.19
동적 링크(動的リンク)에 대해  (0) 2015.07.19
JDBC에 대해  (0) 2015.07.19