blob: 36bf8148273bd7a27b4a76817a776fe2ab234562 [file] [log] [blame]
Martin v. Löwisef04c442008-03-19 05:04:44 +00001# 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
12Matcher: Alternatives ENDMARKER
13
14Alternatives: Alternative ('|' Alternative)*
15
16Alternative: (Unit | NegatedUnit)+
17
18Unit: [NAME '='] ( STRING [Repeater]
19 | NAME [Details] [Repeater]
20 | '(' Alternatives ')' [Repeater]
21 | '[' Alternatives ']'
22 )
23
24NegatedUnit: 'not' (STRING | NAME [Details] | '(' Alternatives ')')
25
26Repeater: '*' | '+' | '{' NUMBER [',' NUMBER] '}'
27
28Details: '<' Alternatives '>'