Here is the LL(1) grammar used to decode a subtreeSpecification as described by RFC 3672
<SubtreeSpecification> ::= '{' <spse> <base-e> <chopSpecification> <spse> <refinement-e> '}' <base-e> ::= ����base���� <sps> <localName> <spse> ',' <spse> | e <chopSpecification> ::= ����chopSpecification���� '{' <spse> <chopSpecification-in> '}' <chopSpecification-in> ::= ����specificExclusions���� <spse> <chop-set-of-choice> <spse> <specificExclusions-follower> | ����minimum���� <sps> <number> <spse> <minimum-follower> | ����maximum���� <sps> <number> <spse> <specificExclusions-follower> ::= ',' <spse> ����minimum���� <sps> <number> <spse> <minimum-follower> | ',' <spse> ����maximum���� <sps> <number> <spse> <minimum-follower> ::= ',' <spse> ����maximum���� <sps> <number> <spse> <refinement-e> ::= ����specificationFilter���� <sps> <refinement> | e <refinement> ::= ����item���� <spse> ':' <spse> OID <spse> | ����and���� <spse> ':' <spse> <set-of-refinement> | ����or���� <spse> ':' <spse> <set-of-refinement> | ����not���� <spse> ':' <spse> <refinement> | <set-of-refinement> ::= '{' <spse> <refinement> <refinements> '}' <spse> <refinements> ::= ',' <spse> <refinement> | e <localName> ::= '"' DN '"'