grammar.json

  1{
  2  "name": "context_predicate",
  3  "rules": {
  4    "source": {
  5      "type": "SYMBOL",
  6      "name": "_expression"
  7    },
  8    "_expression": {
  9      "type": "CHOICE",
 10      "members": [
 11        {
 12          "type": "SYMBOL",
 13          "name": "identifier"
 14        },
 15        {
 16          "type": "SYMBOL",
 17          "name": "not"
 18        },
 19        {
 20          "type": "SYMBOL",
 21          "name": "and"
 22        },
 23        {
 24          "type": "SYMBOL",
 25          "name": "or"
 26        },
 27        {
 28          "type": "SYMBOL",
 29          "name": "equal"
 30        },
 31        {
 32          "type": "SYMBOL",
 33          "name": "not_equal"
 34        },
 35        {
 36          "type": "SYMBOL",
 37          "name": "parenthesized"
 38        }
 39      ]
 40    },
 41    "identifier": {
 42      "type": "PATTERN",
 43      "value": "[A-Za-z0-9_-]+"
 44    },
 45    "not": {
 46      "type": "PREC",
 47      "value": 3,
 48      "content": {
 49        "type": "SEQ",
 50        "members": [
 51          {
 52            "type": "STRING",
 53            "value": "!"
 54          },
 55          {
 56            "type": "FIELD",
 57            "name": "expression",
 58            "content": {
 59              "type": "SYMBOL",
 60              "name": "_expression"
 61            }
 62          }
 63        ]
 64      }
 65    },
 66    "and": {
 67      "type": "PREC_LEFT",
 68      "value": 2,
 69      "content": {
 70        "type": "SEQ",
 71        "members": [
 72          {
 73            "type": "FIELD",
 74            "name": "left",
 75            "content": {
 76              "type": "SYMBOL",
 77              "name": "_expression"
 78            }
 79          },
 80          {
 81            "type": "STRING",
 82            "value": "&&"
 83          },
 84          {
 85            "type": "FIELD",
 86            "name": "right",
 87            "content": {
 88              "type": "SYMBOL",
 89              "name": "_expression"
 90            }
 91          }
 92        ]
 93      }
 94    },
 95    "or": {
 96      "type": "PREC_LEFT",
 97      "value": 1,
 98      "content": {
 99        "type": "SEQ",
100        "members": [
101          {
102            "type": "FIELD",
103            "name": "left",
104            "content": {
105              "type": "SYMBOL",
106              "name": "_expression"
107            }
108          },
109          {
110            "type": "STRING",
111            "value": "||"
112          },
113          {
114            "type": "FIELD",
115            "name": "right",
116            "content": {
117              "type": "SYMBOL",
118              "name": "_expression"
119            }
120          }
121        ]
122      }
123    },
124    "equal": {
125      "type": "SEQ",
126      "members": [
127        {
128          "type": "FIELD",
129          "name": "left",
130          "content": {
131            "type": "SYMBOL",
132            "name": "identifier"
133          }
134        },
135        {
136          "type": "STRING",
137          "value": "=="
138        },
139        {
140          "type": "FIELD",
141          "name": "right",
142          "content": {
143            "type": "SYMBOL",
144            "name": "identifier"
145          }
146        }
147      ]
148    },
149    "not_equal": {
150      "type": "SEQ",
151      "members": [
152        {
153          "type": "FIELD",
154          "name": "left",
155          "content": {
156            "type": "SYMBOL",
157            "name": "identifier"
158          }
159        },
160        {
161          "type": "STRING",
162          "value": "!="
163        },
164        {
165          "type": "FIELD",
166          "name": "right",
167          "content": {
168            "type": "SYMBOL",
169            "name": "identifier"
170          }
171        }
172      ]
173    },
174    "parenthesized": {
175      "type": "SEQ",
176      "members": [
177        {
178          "type": "STRING",
179          "value": "("
180        },
181        {
182          "type": "FIELD",
183          "name": "expression",
184          "content": {
185            "type": "SYMBOL",
186            "name": "_expression"
187          }
188        },
189        {
190          "type": "STRING",
191          "value": ")"
192        }
193      ]
194    }
195  },
196  "extras": [
197    {
198      "type": "PATTERN",
199      "value": "\\s"
200    }
201  ],
202  "conflicts": [],
203  "precedences": [],
204  "externals": [],
205  "inline": [],
206  "supertypes": []
207}
208