| # Copyright 2006 Google, Inc. All Rights Reserved. |
| # Licensed to PSF under a Contributor Agreement. |
| |
| # A grammar to describe tree matching patterns. |
| # Not shown here: |
| # - 'TOKEN' stands for any token (leaf node) |
| # - 'any' stands for any node (leaf or interior) |
| # With 'any' we can still specify the sub-structure. |
| |
| # The start symbol is 'Matcher'. |
| |
| Matcher: Alternatives ENDMARKER |
| |
| Alternatives: Alternative ('|' Alternative)* |
| |
| Alternative: (Unit | NegatedUnit)+ |
| |
| Unit: [NAME '='] ( STRING [Repeater] |
| | NAME [Details] [Repeater] |
| | '(' Alternatives ')' [Repeater] |
| | '[' Alternatives ']' |
| ) |
| |
| NegatedUnit: 'not' (STRING | NAME [Details] | '(' Alternatives ')') |
| |
| Repeater: '*' | '+' | '{' NUMBER [',' NUMBER] '}' |
| |
| Details: '<' Alternatives '>' |