Martin v. Löwis | 5e37bae | 2008-03-19 04:43:46 +0000 | [diff] [blame] | 1 | # Copyright 2006 Google, Inc. All Rights Reserved. |
| 2 | # Licensed to PSF under a Contributor Agreement. |
| 3 | |
| 4 | # A grammar to describe tree matching patterns. |
| 5 | # Not shown here: |
| 6 | # - 'TOKEN' stands for any token (leaf node) |
| 7 | # - 'any' stands for any node (leaf or interior) |
| 8 | # With 'any' we can still specify the sub-structure. |
| 9 | |
| 10 | # The start symbol is 'Matcher'. |
| 11 | |
| 12 | Matcher: Alternatives ENDMARKER |
| 13 | |
| 14 | Alternatives: Alternative ('|' Alternative)* |
| 15 | |
| 16 | Alternative: (Unit | NegatedUnit)+ |
| 17 | |
| 18 | Unit: [NAME '='] ( STRING [Repeater] |
| 19 | | NAME [Details] [Repeater] |
| 20 | | '(' Alternatives ')' [Repeater] |
| 21 | | '[' Alternatives ']' |
| 22 | ) |
| 23 | |
| 24 | NegatedUnit: 'not' (STRING | NAME [Details] | '(' Alternatives ')') |
| 25 | |
| 26 | Repeater: '*' | '+' | '{' NUMBER [',' NUMBER] '}' |
| 27 | |
| 28 | Details: '<' Alternatives '>' |