# 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