blob: 0683c0abb256eae11838e74280b073ad235a785e (
plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
|
# Syntax definitions for some Python-specific patterns
#
# NOTE: this is *NOT* intended to be a complete definition of the language's
# syntax! Providing a full language grammar is overkill, because the intended
# use case is finding/replacing string patterns. This task does not require a
# full parse tree, and having one makes the task considerably more complicated.
# See the accompanying README.md for more info.
comment: `# ..$
string: quoted-string / `b quoted-string / `f quoted-string
quoted-string: "'''".."'''" % \n / '"""'..'"""' % \n / `"..`" % (`\.) / `'..`' % (`\.)
dict: `{__`} / `{ __ +(expr__`:__expr) % (__`,__) __ `}
set: `{ __ +expr % (__`,__) __ `}
list: `[ __ +expr % (__`,__) __ `]
keyword: |("and" / "as" / "assert" / "break" / "class" / "continue" / "def" /
"del" / "elif" / "else" / "except" / "finally" / "for" / "from" /
"global" / "if" / "import" / "in" / "is" / "lambda" / "None" / "nonlocal" /
"not" / "or" / "pass" / "raise" / "return" / "try" / "while" /
"with" / "yield")|
expr: (function-call / lambda / string / dict / set / list / id / number / `(__expr__`)) *(method/attr/index)
method: `. function-call
attr: `. id
index: `[__expr[__`:__expr [__`:__expr]]__`]
tuple: `(__`) / +(__expr__`,) [__expr]
empty-tuple: `(__`)
class: |"class"|_id`: +(\N ..$)
function: function-def +(\N ..$)
function-def: |"def"|_id parens `:
function-call: !<"def " id parens
lambda: |"lambda"| .. `:__expr
|