nagisc007 / pegparser

A PEG parser in python
MIT License
0 stars 0 forks source link

Basic implementation for PEG #3

Open nagisc007 opened 6 years ago

nagisc007 commented 6 years ago

PEG (Parsing Expression Grammar) の基本についてまとめておきます。

nagisc007 commented 6 years ago

基本定義

要素

規則

規則Pとは「A ← e」であり、Aは非終端記号、eは記号、またはメタ記号の列である

atomic parsing expression

another parsing expression

解釈

非終端記号は、再帰下降構文解析における構文解析関数を表現しており、parsing expression は関数とみなせる。各関数は引数として「入力文字列」をとり、次のいずれかの結果を返す

nagisc007 commented 6 years ago

並び

e1、e2の並びでは、まずe1が評価され、成功なら、文字列を消費して、次にe2で評価する。e1かe2のいずれかが失敗した場合は「全体が失敗」とみなす。

nagisc007 commented 6 years ago

選択

e1/e2では、まずe1で評価し、成功ならただちにその結果が返される(e2は評価しない)。e1が失敗の場合は、e1で文字列を消費しない状態にバックトラックし、e2で評価する。