| Martin v. Löwis | ef04c44 | 2008-03-19 05:04:44 +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 '>' |