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 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 '>' 29