# 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 ENDMARKERAlternatives: 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 '>'