{-# LANGUAGE OverloadedStrings #-}
module Hydra.Sources.Tier4.Langs.Python.Python3 (python3Module) where
import Hydra.Kernel
import Hydra.Dsl.Grammars
import Hydra.Tools.GrammarToModule
import qualified Hydra.Dsl.Annotations as Ann
import qualified Hydra.Grammar as G
import qualified Data.List as L
python3Module :: Module
python3Module :: Module
python3Module = Namespace -> Grammar -> Maybe String -> Module
grammarToModule Namespace
ns Grammar
python3Grammar (Maybe String -> Module) -> Maybe String -> Module
forall a b. (a -> b) -> a -> b
$
String -> Maybe String
forall a. a -> Maybe a
Just String
"A Python 3 syntax model, based on the BNF/PEG grammar at https://docs.python.org/3/reference/grammar.html as of 2023-04-03."
where
ns :: Namespace
ns = String -> Namespace
Namespace String
"hydra/langs/python/python3"
python3Grammar :: G.Grammar
python3Grammar :: Grammar
python3Grammar = [Production] -> Grammar
G.Grammar ([Production] -> Grammar) -> [Production] -> Grammar
forall a b. (a -> b) -> a -> b
$ [Production]
tokens [Production] -> [Production] -> [Production]
forall a. [a] -> [a] -> [a]
++ [Production]
productions
amp_ :: Pattern
amp_ = String -> Pattern
terminal String
"&"
assign_ :: Pattern
assign_ = String -> Pattern
terminal String
":="
star_ :: Pattern
star_ = String -> Pattern
terminal String
"*"
at_ :: Pattern
at_ = String -> Pattern
terminal String
"@"
close_curly_ :: Pattern
close_curly_ = String -> Pattern
terminal String
"}"
close_paren_ :: Pattern
close_paren_ = String -> Pattern
terminal String
")"
close_square_ :: Pattern
close_square_ = String -> Pattern
terminal String
"]"
colon_ :: Pattern
colon_ = String -> Pattern
terminal String
":"
comma_ :: Pattern
comma_ = String -> Pattern
terminal String
","
dot_ :: Pattern
dot_ = String -> Pattern
terminal String
"."
double_equal_ :: Pattern
double_equal_ = String -> Pattern
terminal String
"=="
double_gt_ :: Pattern
double_gt_ = String -> Pattern
terminal String
">>"
double_lt_ :: Pattern
double_lt_ = String -> Pattern
terminal String
"<<"
double_slash_ :: Pattern
double_slash_ = String -> Pattern
terminal String
"//"
double_star_ :: Pattern
double_star_ = String -> Pattern
terminal String
"**"
ellipsis_ :: Pattern
ellipsis_ = String -> Pattern
terminal String
"..."
endmarker_ :: Pattern
endmarker_ = String -> Pattern
terminal String
""
equal_ :: Pattern
equal_ = String -> Pattern
terminal String
"="
gt_ :: Pattern
gt_ = String -> Pattern
terminal String
">"
gte_ :: Pattern
gte_ = String -> Pattern
terminal String
">="
hat_ :: Pattern
hat_ = String -> Pattern
terminal String
"^"
lt_ :: Pattern
lt_ = String -> Pattern
terminal String
"<"
lte_ :: Pattern
lte_ = String -> Pattern
terminal String
"<="
minus_ :: Pattern
minus_ = String -> Pattern
terminal String
"-"
newline_ :: Pattern
newline_ = String -> Pattern
terminal String
"\n"
noteq_ :: Pattern
noteq_ = String -> Pattern
terminal String
"!="
open_curly_ :: Pattern
open_curly_ = String -> Pattern
terminal String
"{"
open_paren_ :: Pattern
open_paren_ = String -> Pattern
terminal String
"("
open_square_ :: Pattern
open_square_ = String -> Pattern
terminal String
"["
percent_ :: Pattern
percent_ = String -> Pattern
terminal String
"%"
pipe_ :: Pattern
pipe_ = String -> Pattern
terminal String
"|"
plus_ :: Pattern
plus_ = String -> Pattern
terminal String
"+"
right_arrow_ :: Pattern
right_arrow_ = String -> Pattern
terminal String
"->"
semi_ :: Pattern
semi_ = String -> Pattern
terminal String
";"
slash_ :: Pattern
slash_ = String -> Pattern
terminal String
"/"
tilde_ :: Pattern
tilde_ = String -> Pattern
terminal String
"~"
underscore_ :: Pattern
underscore_ = String -> Pattern
terminal String
"_"
tokens :: [G.Production]
tokens :: [Production]
tokens = [
String -> [Pattern] -> Production
define String
"Async" [String -> Pattern
terminal String
"async"],
String -> [Pattern] -> Production
define String
"Await" [String -> Pattern
terminal String
"await"],
String -> [Pattern] -> Production
define String
"Dedent" [String -> Pattern
terminal String
"\n"],
String -> [Pattern] -> Production
define String
"Indent" [String -> Pattern
terminal String
"\t"],
String -> [Pattern] -> Production
define String
"Name" [String -> Pattern
regex String
"[A-Za-z0-9][A-Za-z0-9_]*"],
String -> [Pattern] -> Production
define String
"Number" [String -> Pattern
regex String
"[0-9]+"],
String -> [Pattern] -> Production
define String
"String" [String -> Pattern
regex String
"\"[^\"]*\""],
String -> [Pattern] -> Production
define String
"TypeComment" [String -> Pattern
terminal String
""]]
productions :: [G.Production]
productions :: [Production]
productions = [
String -> [Pattern] -> Production
define String
"File" [
Pattern -> Pattern
star Pattern
"Statement"],
String -> [Pattern] -> Production
define String
"Interactive" [
Pattern
"StatementNewline"],
String -> [Pattern] -> Production
define String
"Eval" [
[Pattern] -> Pattern
list[Pattern -> Pattern -> Pattern
sepp Pattern
comma_ Pattern
"Expression", Pattern -> Pattern
star Pattern
newline_]],
String -> [Pattern] -> Production
define String
"FuncType" [Pattern
open_paren_, Pattern -> Pattern
opt Pattern
"TypeExpressions", Pattern
close_paren_, Pattern
right_arrow_, Pattern -> Pattern
star Pattern
newline_, Pattern
endmarker_],
String -> [Pattern] -> Production
define String
"Fstring" [
Pattern -> Pattern -> Pattern
sepp Pattern
comma_ Pattern
"StarExpression"],
String -> [Pattern] -> Production
define String
"Statement" [
Pattern
"CompoundStmt",
Pattern
"SimpleStmts"],
String -> [Pattern] -> Production
define String
"StatementNewline" [
[Pattern] -> Pattern
list[Pattern
"CompoundStmt", Pattern
newline_],
Pattern
"SimpleStmts",
Pattern
newline_,
Pattern
endmarker_],
String -> [Pattern] -> Production
define String
"SimpleStmts" [
[Pattern] -> Pattern
list [Pattern
"SimpleStmt", Pattern -> Pattern
star([Pattern] -> Pattern
list[Pattern
semi_, Pattern
dot_, Pattern
"SimpleStmt"]), Pattern
newline_]],
String -> [Pattern] -> Production
define String
"SimpleStmt" [
Pattern
"Assignment",
Pattern -> Pattern -> Pattern
sepp Pattern
comma_ Pattern
"StarExpression",
Pattern
"ReturnStmt",
Pattern
"ImportStmt",
Pattern
"RaiseStmt",
String -> Pattern
terminal String
"pass",
Pattern
"DelStmt",
Pattern
"YieldStmt",
Pattern
"AssertStmt",
String -> Pattern
terminal String
"break",
String -> Pattern
terminal String
"continue",
Pattern
"GlobalStmt",
Pattern
"NonlocalStmt"],
String -> [Pattern] -> Production
define String
"CompoundStmt" [
Pattern
"FunctionDef",
Pattern
"IfStmt",
Pattern
"ClassDef",
Pattern
"WithStmt",
Pattern
"ForStmt",
Pattern
"TryStmt",
Pattern
"WhileStmt",
Pattern
"MatchStmt"],
String -> [Pattern] -> Production
define String
"Assignment" [
[Pattern] -> Pattern
list[Pattern
"Name", Pattern
colon_, Pattern
"Expression", Pattern -> Pattern
opt([Pattern] -> Pattern
list[Pattern
equal_, Pattern
"AnnotatedRhs"])],
[Pattern] -> Pattern
list[[Pattern] -> Pattern
alts[[Pattern] -> Pattern
list[Pattern
open_paren_, Pattern
"SingleTarget", Pattern
close_paren_], Pattern
"SingleSubscriptAttributeTarget"], Pattern
colon_, Pattern
"Expression", Pattern -> Pattern
opt([Pattern] -> Pattern
list[Pattern
equal_, Pattern
"AnnotatedRhs"])],
[Pattern] -> Pattern
list[Pattern -> Pattern
plus([Pattern] -> Pattern
list[Pattern -> Pattern -> Pattern
sepp Pattern
comma_ Pattern
"StarTarget", Pattern
equal_]), [Pattern] -> Pattern
alts[Pattern
"YieldExpr", Pattern -> Pattern -> Pattern
sepp Pattern
comma_ Pattern
"StarExpression"], Pattern -> Pattern
opt(Pattern
"TypeComment")],
[Pattern] -> Pattern
list[Pattern
"SingleTarget", Pattern
"Augassign", Pattern
tilde_, [Pattern] -> Pattern
alts[Pattern
"YieldExpr", Pattern -> Pattern -> Pattern
sepp Pattern
comma_ Pattern
"StarExpression"]]],
String -> [Pattern] -> Production
define String
"AnnotatedRhs" [
Pattern
"YieldExpr",
Pattern -> Pattern -> Pattern
sepp Pattern
comma_ Pattern
"StarExpression"],
String -> [Pattern] -> Production
define String
"Augassign" [
String -> Pattern
terminal String
"+=",
String -> Pattern
terminal String
"-=",
String -> Pattern
terminal String
"*=",
String -> Pattern
terminal String
"@=",
String -> Pattern
terminal String
"/=",
String -> Pattern
terminal String
"%=",
String -> Pattern
terminal String
"&=",
String -> Pattern
terminal String
"|=",
String -> Pattern
terminal String
"^=",
String -> Pattern
terminal String
"<<=",
String -> Pattern
terminal String
">>=",
String -> Pattern
terminal String
"**=",
String -> Pattern
terminal String
"//="],
String -> [Pattern] -> Production
define String
"ReturnStmt" [
[Pattern] -> Pattern
list [String -> Pattern
terminal String
"return", Pattern -> Pattern
opt(Pattern -> Pattern -> Pattern
sepp Pattern
comma_ Pattern
"StarExpression")]],
String -> [Pattern] -> Production
define String
"RaiseStmt" [
[Pattern] -> Pattern
list[String -> Pattern
terminal String
"raise", Pattern
"Expression", Pattern -> Pattern
opt([Pattern] -> Pattern
list[String -> Pattern
terminal String
"from", Pattern
"Expression"])],
String -> Pattern
terminal String
"raise"],
String -> [Pattern] -> Production
define String
"GlobalStmt" [
[Pattern] -> Pattern
list[String -> Pattern
terminal String
"global", Pattern
comma_, Pattern
dot_, Pattern -> Pattern
plus([Pattern] -> Pattern
list[Pattern
dot_, Pattern
"Name"])]],
String -> [Pattern] -> Production
define String
"NonlocalStmt" [
[Pattern] -> Pattern
list[String -> Pattern
terminal String
"nonlocal", Pattern
comma_, Pattern -> Pattern
plus([Pattern] -> Pattern
list[Pattern
dot_, Pattern
"Name"])]],
String -> [Pattern] -> Production
define String
"DelStmt" [
[Pattern] -> Pattern
list[String -> Pattern
terminal String
"del", Pattern
"DelTargets"]],
String -> [Pattern] -> Production
define String
"YieldStmt" [
Pattern
"YieldExpr"],
String -> [Pattern] -> Production
define String
"AssertStmt" [
[Pattern] -> Pattern
list[String -> Pattern
terminal String
"assert", Pattern
"Expression", Pattern -> Pattern
opt([Pattern] -> Pattern
list[Pattern
comma_, Pattern
"Expression"])]],
String -> [Pattern] -> Production
define String
"ImportStmt" [
Pattern
"ImportName",
Pattern
"ImportFrom"],
String -> [Pattern] -> Production
define String
"ImportName" [
[Pattern] -> Pattern
list[String -> Pattern
terminal String
"import", Pattern -> Pattern -> Pattern
sep Pattern
comma_ Pattern
"DottedAsName"]],
String -> [Pattern] -> Production
define String
"ImportFrom" [
[Pattern] -> Pattern
list[String -> Pattern
terminal String
"from", Pattern -> Pattern
star([Pattern] -> Pattern
alts[Pattern
dot_, Pattern
ellipsis_]), Pattern
"DottedName", String -> Pattern
terminal String
"import", Pattern
"ImportFromTargets"],
[Pattern] -> Pattern
list[String -> Pattern
terminal String
"from", Pattern -> Pattern
plus([Pattern] -> Pattern
alts[Pattern
dot_, Pattern
ellipsis_]), String -> Pattern
terminal String
"import", Pattern
"ImportFromTargets"]],
String -> [Pattern] -> Production
define String
"ImportFromTargets" [
[Pattern] -> Pattern
list[Pattern
open_paren_, Pattern
"ImportFromAsNames", Pattern -> Pattern
opt(Pattern
comma_), Pattern
close_paren_],
Pattern
"ImportFromAsNames"],
String -> [Pattern] -> Production
define String
"ImportFromAsNames" [
[Pattern] -> Pattern
list[Pattern
comma_, Pattern -> Pattern
plus([Pattern] -> Pattern
list[Pattern
dot_, Pattern
"ImportFromAsName"])]],
String -> [Pattern] -> Production
define String
"ImportFromAsName" [
[Pattern] -> Pattern
list[Pattern
"Name", Pattern -> Pattern
opt([Pattern] -> Pattern
list[String -> Pattern
terminal String
"as", Pattern
"Name"])]],
String -> [Pattern] -> Production
define String
"DottedAsName" [
[Pattern] -> Pattern
list[Pattern
"DottedName", Pattern -> Pattern
opt([Pattern] -> Pattern
list[String -> Pattern
terminal String
"as", Pattern
"Name"])]],
String -> [Pattern] -> Production
define String
"DottedName" [
Pattern -> Pattern -> Pattern
sep Pattern
dot_ Pattern
"Name"],
String -> [Pattern] -> Production
define String
"Block" [
[Pattern] -> Pattern
list[Pattern
newline_, Pattern
"Indent", Pattern -> Pattern
star Pattern
"Statement", Pattern
"Dedent"],
Pattern
"SimpleStmts"],
String -> [Pattern] -> Production
define String
"Decorators" [
Pattern -> Pattern
plus([Pattern] -> Pattern
list[Pattern
at_, Pattern
"NamedExpression", Pattern
newline_])],
String -> [Pattern] -> Production
define String
"ClassDef" [
[Pattern] -> Pattern
list[Pattern
"Decorators", Pattern
"ClassDefRaw"],
Pattern
"ClassDefRaw"],
String -> [Pattern] -> Production
define String
"ClassDefRaw" [
[Pattern] -> Pattern
list[String -> Pattern
terminal String
"class", Pattern
"Name", Pattern -> Pattern
opt([Pattern] -> Pattern
list[Pattern
open_paren_, Pattern -> Pattern
opt(Pattern
"Arguments"), Pattern
close_paren_]), Pattern
colon_, Pattern
"Block"]],
String -> [Pattern] -> Production
define String
"FunctionDef" [
[Pattern] -> Pattern
list[Pattern
"Decorators", Pattern
"FunctionDefRaw"],
Pattern
"FunctionDefRaw"],
String -> [Pattern] -> Production
define String
"FunctionDefRaw" [
[Pattern] -> Pattern
list[
Pattern -> Pattern
opt([Pattern] -> Pattern
list[Pattern
"Async", String -> Pattern
terminal String
"def"]), Pattern
"Name",
Pattern
open_paren_, Pattern -> Pattern
opt(Pattern
"Parameters"), Pattern
close_paren_,
Pattern -> Pattern
opt([Pattern] -> Pattern
list[Pattern
right_arrow_, Pattern
"Expression"]),
Pattern
colon_, Pattern -> Pattern
opt(Pattern
"FuncTypeComment"), Pattern
"Block"]],
String -> [Pattern] -> Production
define String
"Parameters" [
[Pattern] -> Pattern
list[Pattern
"SlashNoDefault", Pattern -> Pattern
star(Pattern
"ParamNoDefault"), Pattern -> Pattern
star(Pattern
"ParamWithDefault"), Pattern -> Pattern
opt(Pattern
"StarEtc")],
[Pattern] -> Pattern
list[Pattern
"SlashWithDefault", Pattern -> Pattern
star(Pattern
"ParamWithDefault"), Pattern -> Pattern
opt(Pattern
"StarEtc")],
[Pattern] -> Pattern
list[Pattern -> Pattern
plus(Pattern
"ParamNoDefault"), Pattern -> Pattern
star(Pattern
"ParamWithDefault"), Pattern -> Pattern
opt(Pattern
"StarEtc")],
[Pattern] -> Pattern
list[Pattern -> Pattern
plus(Pattern
"ParamWithDefault"), Pattern -> Pattern
opt(Pattern
"StarEtc")],
Pattern
"StarEtc"],
String -> [Pattern] -> Production
define String
"SlashNoDefault" [
[Pattern] -> Pattern
list[Pattern -> Pattern
plus(Pattern
"ParamNoDefault"), Pattern
slash_, Pattern -> Pattern
opt(Pattern
comma_)]],
String -> [Pattern] -> Production
define String
"SlashWithDefault" [
[Pattern] -> Pattern
list[Pattern -> Pattern
star(Pattern
"ParamNoDefault"), Pattern -> Pattern
plus(Pattern
"ParamWithDefault"), Pattern
slash_, Pattern -> Pattern
opt(Pattern
comma_)]],
String -> [Pattern] -> Production
define String
"StarEtc" [
[Pattern] -> Pattern
list[Pattern
star_, Pattern
"ParamNoDefault", Pattern -> Pattern
star(Pattern
"ParamMaybeDefault"), Pattern -> Pattern
opt(Pattern
"Kwds")],
[Pattern] -> Pattern
list[Pattern
star_, Pattern
"ParamNoDefaultStarAnnotation", Pattern -> Pattern
star(Pattern
"ParamMaybeDefault"), Pattern -> Pattern
opt(Pattern
"Kwds")],
[Pattern] -> Pattern
list[Pattern
star_, Pattern
comma_, Pattern -> Pattern
plus(Pattern
"ParamMaybeDefault"), Pattern -> Pattern
opt(Pattern
"Kwds")],
Pattern
"Kwds"],
String -> [Pattern] -> Production
define String
"Kwds" [
[Pattern] -> Pattern
list[Pattern
double_star_, Pattern
"ParamNoDefault"]],
String -> [Pattern] -> Production
define String
"ParamNoDefault" [
[Pattern] -> Pattern
list[Pattern
"Param", Pattern -> Pattern
opt(Pattern
comma_), Pattern -> Pattern
opt(Pattern
"TypeComment")]],
String -> [Pattern] -> Production
define String
"ParamNoDefaultStarAnnotation" [
[Pattern] -> Pattern
list[Pattern
"ParamStarAnnotation", Pattern -> Pattern
opt(Pattern
comma_), Pattern -> Pattern
opt(Pattern
"TypeComment")]],
String -> [Pattern] -> Production
define String
"ParamWithDefault" [
[Pattern] -> Pattern
list[Pattern
"Param", Pattern
"Default", Pattern -> Pattern
opt(Pattern
comma_), Pattern -> Pattern
opt(Pattern
"TypeComment")]],
String -> [Pattern] -> Production
define String
"ParamMaybeDefault" [
[Pattern] -> Pattern
list[Pattern
"Param", Pattern -> Pattern
opt(Pattern
"Default"), Pattern -> Pattern
opt(Pattern
comma_), Pattern -> Pattern
opt(Pattern
"TypeComment")]],
String -> [Pattern] -> Production
define String
"Param" [
[Pattern] -> Pattern
list[Pattern
"Name", Pattern -> Pattern
opt(Pattern
"Annotation")]],
String -> [Pattern] -> Production
define String
"ParamStarAnnotation" [
[Pattern] -> Pattern
list[Pattern
"Name", Pattern
"StarAnnotation"]],
String -> [Pattern] -> Production
define String
"Annotation" [
[Pattern] -> Pattern
list[Pattern
colon_, Pattern
"Expression"]],
String -> [Pattern] -> Production
define String
"StarAnnotation" [
[Pattern] -> Pattern
list[Pattern
colon_, Pattern
"StarExpression"]],
String -> [Pattern] -> Production
define String
"Default" [
[Pattern] -> Pattern
list[Pattern
equal_, Pattern
"Expression"]],
String -> [Pattern] -> Production
define String
"IfStmt" [
[Pattern] -> Pattern
list[String -> Pattern
terminal String
"if", Pattern
"NamedExpression", Pattern
colon_, Pattern
"Block", [Pattern] -> Pattern
alts[Pattern
"ElifStmt", Pattern
"ElseBlock"]]],
String -> [Pattern] -> Production
define String
"ElifStmt" [
[Pattern] -> Pattern
list[String -> Pattern
terminal String
"elif", Pattern
"NamedExpression", Pattern
colon_, Pattern
"Block", [Pattern] -> Pattern
alts[Pattern
"ElifStmt", Pattern
"ElseBlock"]]],
String -> [Pattern] -> Production
define String
"ElseBlock" [
[Pattern] -> Pattern
list[String -> Pattern
terminal String
"else", Pattern
colon_, Pattern
"Block"]],
String -> [Pattern] -> Production
define String
"WhileStmt" [
[Pattern] -> Pattern
list[String -> Pattern
terminal String
"while", Pattern
"NamedExpression", Pattern
colon_, Pattern
"Block", Pattern -> Pattern
opt(Pattern
"ElseBlock")]],
String -> [Pattern] -> Production
define String
"ForStmt" [
[Pattern] -> Pattern
list[Pattern -> Pattern
opt(Pattern
"Async"), String -> Pattern
terminal String
"for", Pattern -> Pattern -> Pattern
sepp Pattern
comma_ Pattern
"StarTarget", String -> Pattern
terminal String
"in", Pattern
tilde_, Pattern -> Pattern -> Pattern
sepp Pattern
comma_ Pattern
"StarExpression", Pattern
colon_, Pattern -> Pattern
opt(Pattern
"TypeComment"), Pattern
"Block", Pattern -> Pattern
opt(Pattern
"ElseBlock")]],
String -> [Pattern] -> Production
define String
"WithStmt" [
[Pattern] -> Pattern
list[Pattern -> Pattern
opt(Pattern
"Async"), String -> Pattern
terminal String
"with", [Pattern] -> Pattern
alts[
[Pattern] -> Pattern
list[Pattern
open_paren_, Pattern -> Pattern -> Pattern
sepp Pattern
comma_ Pattern
"WithItem", Pattern
close_paren_, Pattern
colon_],
[Pattern] -> Pattern
list[Pattern -> Pattern -> Pattern
sepp Pattern
comma_ Pattern
"WithItem", Pattern
colon_, Pattern -> Pattern
opt(Pattern
"TypeComment")]], Pattern
"Block"]],
String -> [Pattern] -> Production
define String
"WithItem" [
[Pattern] -> Pattern
list[Pattern
"Expression", Pattern -> Pattern
opt([Pattern] -> Pattern
list[String -> Pattern
terminal String
"as", Pattern
"StarTarget"])]],
String -> [Pattern] -> Production
define String
"TryStmt" [
[Pattern] -> Pattern
list[String -> Pattern
terminal String
"try", Pattern
colon_, Pattern
"Block", [Pattern] -> Pattern
alts[
Pattern
"FinallyBlock",
[Pattern] -> Pattern
list[Pattern -> Pattern
plus(Pattern
"ExceptBlock"), Pattern -> Pattern
opt(Pattern
"ElseBlock"), Pattern -> Pattern
opt(Pattern
"FinallyBlock")],
[Pattern] -> Pattern
list[Pattern -> Pattern
plus(Pattern
"ExceptStarBlock"), Pattern -> Pattern
opt(Pattern
"ElseBlock"), Pattern -> Pattern
opt(Pattern
"FinallyBlock")]]]],
String -> [Pattern] -> Production
define String
"ExceptBlock" [
[Pattern] -> Pattern
list[String -> Pattern
terminal String
"except", Pattern -> Pattern
opt([Pattern] -> Pattern
list[Pattern
"Expression", Pattern -> Pattern
opt([Pattern] -> Pattern
list[String -> Pattern
terminal String
"as", Pattern
"Name"])]), Pattern
colon_, Pattern
"Block"]],
String -> [Pattern] -> Production
define String
"ExceptStarBlock" [
[Pattern] -> Pattern
list[String -> Pattern
terminal String
"except", Pattern
star_, Pattern
"Expression", Pattern -> Pattern
opt([Pattern] -> Pattern
list[String -> Pattern
terminal String
"as", Pattern
"Name"]), Pattern
colon_, Pattern
"Block"]],
String -> [Pattern] -> Production
define String
"FinallyBlock" [
[Pattern] -> Pattern
list[String -> Pattern
terminal String
"finally", Pattern
colon_, Pattern
"Block"]],
String -> [Pattern] -> Production
define String
"MatchStmt" [
[Pattern] -> Pattern
list[String -> Pattern
terminal String
"match", Pattern
"SubjectExpr", Pattern
colon_, Pattern
newline_, Pattern
"Indent", Pattern -> Pattern
plus(Pattern
"CaseBlock"), Pattern
"Dedent"]],
String -> [Pattern] -> Production
define String
"SubjectExpr" [
[Pattern] -> Pattern
list[Pattern
"StarNamedExpression", Pattern
comma_, Pattern -> Pattern
opt(Pattern -> Pattern -> Pattern
sepp Pattern
comma_ Pattern
"StarNamedExpression")]],
String -> [Pattern] -> Production
define String
"CaseBlock" [
[Pattern] -> Pattern
list[String -> Pattern
terminal String
"case", Pattern
"Patterns", Pattern -> Pattern
opt(Pattern
"Guard"), Pattern
colon_, Pattern
"Block"]],
String -> [Pattern] -> Production
define String
"Guard" [
[Pattern] -> Pattern
list[String -> Pattern
terminal String
"if", Pattern
"NamedExpression"]],
String -> [Pattern] -> Production
define String
"Patterns" [
Pattern
"OpenSequencePattern",
Pattern
"Pattern"],
String -> [Pattern] -> Production
define String
"Pattern" [
Pattern
"AsPattern",
Pattern
"OrPattern"],
String -> [Pattern] -> Production
define String
"AsPattern" [
[Pattern] -> Pattern
list[Pattern
"OrPattern", String -> Pattern
terminal String
"as", Pattern
"PatternCaptureTarget"]],
String -> [Pattern] -> Production
define String
"OrPattern" [
[Pattern] -> Pattern
list[Pattern
pipe_, Pattern -> Pattern -> Pattern
sep Pattern
dot_ Pattern
"ClosedPattern"]],
String -> [Pattern] -> Production
define String
"ClosedPattern" [
Pattern
"LiteralPattern",
Pattern
"CapturePattern",
Pattern
"WildcardPattern",
Pattern
"ValuePattern",
Pattern
"GroupPattern",
Pattern
"SequencePattern",
Pattern
"MappingPattern",
Pattern
"ClassPattern"],
String -> [Pattern] -> Production
define String
"LiteralPattern" [
Pattern
"SignedNumber",
Pattern
"ComplexNumber",
Pattern -> Pattern
plus(Pattern
"String"),
String -> Pattern
terminal String
"None",
String -> Pattern
terminal String
"True",
String -> Pattern
terminal String
"False"],
String -> [Pattern] -> Production
define String
"ComplexNumber" [
[Pattern] -> Pattern
list[Pattern
"SignedRealNumber", [Pattern] -> Pattern
alts[Pattern
plus_, Pattern
minus_], Pattern
"ImaginaryNumber"]],
String -> [Pattern] -> Production
define String
"SignedNumber" [
[Pattern] -> Pattern
list[Pattern -> Pattern
opt(Pattern
minus_), Pattern
"Number"]],
String -> [Pattern] -> Production
define String
"SignedRealNumber" [
[Pattern] -> Pattern
list[Pattern -> Pattern
opt(Pattern
minus_), Pattern
"RealNumber"]],
String -> [Pattern] -> Production
define String
"RealNumber" [
Pattern
"Number"],
String -> [Pattern] -> Production
define String
"ImaginaryNumber" [
Pattern
"Number"],
String -> [Pattern] -> Production
define String
"CapturePattern" [
Pattern
"PatternCaptureTarget"],
String -> [Pattern] -> Production
define String
"PatternCaptureTarget" [
Pattern
"Name"],
String -> [Pattern] -> Production
define String
"WildcardPattern" [
Pattern
underscore_],
String -> [Pattern] -> Production
define String
"ValuePattern" [
Pattern
"Attr"],
String -> [Pattern] -> Production
define String
"Attr" [
[Pattern] -> Pattern
list[Pattern
"NameOrAttr", Pattern
dot_, Pattern
"Name"]],
String -> [Pattern] -> Production
define String
"NameOrAttr" [
Pattern
"Attr",
Pattern
"Name"],
String -> [Pattern] -> Production
define String
"GroupPattern" [
[Pattern] -> Pattern
list[Pattern
open_paren_, Pattern
"Pattern", Pattern
close_paren_]],
String -> [Pattern] -> Production
define String
"SequencePattern" [
[Pattern] -> Pattern
list[Pattern
open_square_, Pattern -> Pattern
opt(Pattern
"MaybeSequencePattern"), Pattern
close_square_],
[Pattern] -> Pattern
list[Pattern
open_paren_, Pattern -> Pattern
opt(Pattern
"MaybeSequencePattern"), Pattern
close_paren_]],
String -> [Pattern] -> Production
define String
"OpenSequencePattern" [
[Pattern] -> Pattern
list[Pattern
"MaybeStarPattern", Pattern
comma_, Pattern -> Pattern
opt(Pattern
"MaybeSequencePattern")]],
String -> [Pattern] -> Production
define String
"MaybeSequencePattern" [
Pattern -> Pattern -> Pattern
forall a b. a -> b -> b
seq Pattern
comma_ Pattern
"MaybeStarPattern"],
String -> [Pattern] -> Production
define String
"MaybeStarPattern" [
Pattern
"StarPattern",
Pattern
"Pattern"],
String -> [Pattern] -> Production
define String
"StarPattern" [
[Pattern] -> Pattern
list[Pattern
star_, [Pattern] -> Pattern
alts[Pattern
"PatternCaptureTarget", Pattern
"WildcardPattern"]]],
String -> [Pattern] -> Production
define String
"MappingPattern" [
String
"empty"String -> Pattern -> Pattern
>: [Pattern] -> Pattern
list[Pattern
open_curly_, Pattern
close_curly_],
[Pattern] -> Pattern
list[Pattern
open_curly_, Pattern
"DoubleStarPattern", Pattern -> Pattern
opt(Pattern
comma_), Pattern
close_curly_],
[Pattern] -> Pattern
list[Pattern
open_curly_, Pattern
"ItemsPattern", Pattern
comma_, Pattern
"DoubleStarPattern", Pattern -> Pattern
opt(Pattern
comma_), Pattern
close_curly_],
[Pattern] -> Pattern
list[Pattern
open_curly_, Pattern
"ItemsPattern", Pattern -> Pattern
opt(Pattern
comma_), Pattern
close_curly_]],
String -> [Pattern] -> Production
define String
"ItemsPattern" [
Pattern -> Pattern -> Pattern
sep Pattern
comma_ Pattern
"KeyValuePattern"],
String -> [Pattern] -> Production
define String
"KeyValuePattern" [
[Pattern] -> Pattern
list[[Pattern] -> Pattern
alts[Pattern
"LiteralPattern", Pattern
"Attr"], Pattern
colon_, Pattern
"Pattern"]],
String -> [Pattern] -> Production
define String
"DoubleStarPattern" [
[Pattern] -> Pattern
list[Pattern
double_star_, Pattern
"PatternCaptureTarget"]],
String -> [Pattern] -> Production
define String
"ClassPattern" [
[Pattern] -> Pattern
list[Pattern
"NameOrAttr", Pattern
open_paren_, [Pattern] -> Pattern
alts[
Pattern
nil,
[Pattern] -> Pattern
list[Pattern -> Pattern -> Pattern
forall a b. a -> b -> b
seq Pattern
comma_ Pattern
"Pattern", Pattern -> Pattern
opt(Pattern
comma_)],
[Pattern] -> Pattern
list[Pattern -> Pattern -> Pattern
forall a b. a -> b -> b
seq Pattern
comma_ Pattern
"KeywordPattern", Pattern -> Pattern
opt(Pattern
comma_)],
[Pattern] -> Pattern
list[Pattern -> Pattern -> Pattern
forall a b. a -> b -> b
seq Pattern
comma_ Pattern
"Pattern", Pattern
comma_, Pattern -> Pattern -> Pattern
forall a b. a -> b -> b
seq Pattern
comma_ Pattern
"KeywordPattern", Pattern -> Pattern
opt(Pattern
comma_)]
], Pattern
close_paren_]],
String -> [Pattern] -> Production
define String
"KeywordPattern" [
[Pattern] -> Pattern
list[Pattern
"Name", Pattern
equal_, Pattern
"Pattern"]],
String -> [Pattern] -> Production
define String
"Expression" [
[Pattern] -> Pattern
list[Pattern
"Disjunction", String -> Pattern
terminal String
"if", Pattern
"Disjunction", String -> Pattern
terminal String
"else", Pattern
"Expression"],
Pattern
"Disjunction",
Pattern
"Lambdef"],
String -> [Pattern] -> Production
define String
"YieldExpr" [
[Pattern] -> Pattern
list[String -> Pattern
terminal String
"yield", [Pattern] -> Pattern
alts[[Pattern] -> Pattern
list[String -> Pattern
terminal String
"from", Pattern
"Expression"], Pattern -> Pattern
opt(Pattern -> Pattern -> Pattern
sepp Pattern
comma_ Pattern
"StarExpression")]]],
String -> [Pattern] -> Production
define String
"StarExpression" [
[Pattern] -> Pattern
list[Pattern
star_, Pattern
"BitwiseOr"],
Pattern
"Expression"],
String -> [Pattern] -> Production
define String
"StarNamedExpression" [
[Pattern] -> Pattern
list[Pattern
star_, Pattern
"BitwiseOr"],
Pattern
"NamedExpression"],
String -> [Pattern] -> Production
define String
"AssignmentExpression" [
[Pattern] -> Pattern
list[Pattern
"Name", Pattern
assign_, Pattern
tilde_, Pattern
"Expression"]],
String -> [Pattern] -> Production
define String
"NamedExpression" [
Pattern
"AssignmentExpression",
Pattern
"Expression"],
String -> [Pattern] -> Production
define String
"Disjunction" [
Pattern -> Pattern -> Pattern
sep (String -> Pattern
terminal String
"or") Pattern
"Conjunction"],
String -> [Pattern] -> Production
define String
"Conjunction" [
Pattern -> Pattern -> Pattern
sep (String -> Pattern
terminal String
"and") Pattern
"Inversion"],
String -> [Pattern] -> Production
define String
"Inversion" [
[Pattern] -> Pattern
list[String -> Pattern
terminal String
"not", Pattern
"Inversion"],
Pattern
"Comparison"],
String -> [Pattern] -> Production
define String
"Comparison" [
[Pattern] -> Pattern
list[Pattern
"BitwiseOr", Pattern -> Pattern
star(Pattern
"CompareOpBitwiseOrPair")]],
String -> [Pattern] -> Production
define String
"CompareOpBitwiseOrPair" [
Pattern
"EqBitwiseOr",
Pattern
"NoteqBitwiseOr",
Pattern
"LteBitwiseOr",
Pattern
"LtBitwiseOr",
Pattern
"GteBitwiseOr",
Pattern
"GtBitwiseOr",
Pattern
"NotinBitwiseOr",
Pattern
"InBitwiseOr",
Pattern
"IsnotBitwiseOr",
Pattern
"IsBitwiseOr"],
String -> [Pattern] -> Production
define String
"EqBitwiseOr" [
[Pattern] -> Pattern
list[Pattern
double_equal_, Pattern
"BitwiseOr"]],
String -> [Pattern] -> Production
define String
"NoteqBitwiseOr" [
[Pattern] -> Pattern
list[Pattern
noteq_, Pattern
"BitwiseOr"]],
String -> [Pattern] -> Production
define String
"LteBitwiseOr" [
[Pattern] -> Pattern
list[Pattern
lte_, Pattern
"BitwiseOr"]],
String -> [Pattern] -> Production
define String
"LtBitwiseOr" [
[Pattern] -> Pattern
list[Pattern
lt_, Pattern
"BitwiseOr"]],
String -> [Pattern] -> Production
define String
"GteBitwiseOr" [
[Pattern] -> Pattern
list[Pattern
gte_, Pattern
"BitwiseOr"]],
String -> [Pattern] -> Production
define String
"GtBitwiseOr" [
[Pattern] -> Pattern
list[Pattern
gt_, Pattern
"BitwiseOr"]],
String -> [Pattern] -> Production
define String
"NotinBitwiseOr" [
[Pattern] -> Pattern
list[String -> Pattern
terminal String
"not", String -> Pattern
terminal String
"in", Pattern
"BitwiseOr"]],
String -> [Pattern] -> Production
define String
"InBitwiseOr" [
[Pattern] -> Pattern
list[String -> Pattern
terminal String
"in", Pattern
"BitwiseOr"]],
String -> [Pattern] -> Production
define String
"IsnotBitwiseOr" [
[Pattern] -> Pattern
list[String -> Pattern
terminal String
"is", String -> Pattern
terminal String
"not", Pattern
"BitwiseOr"]],
String -> [Pattern] -> Production
define String
"IsBitwiseOr" [
[Pattern] -> Pattern
list[String -> Pattern
terminal String
"is", Pattern
"BitwiseOr"]],
String -> [Pattern] -> Production
define String
"BitwiseOr" [
[Pattern] -> Pattern
list[Pattern -> Pattern
opt([Pattern] -> Pattern
list[Pattern
"BitwiseOr", Pattern
pipe_]), Pattern
"BitwiseXor"]],
String -> [Pattern] -> Production
define String
"BitwiseXor" [
[Pattern] -> Pattern
list[Pattern -> Pattern
opt([Pattern] -> Pattern
list[Pattern
"BitwiseXor", Pattern
hat_]), Pattern
"BitwiseAnd"]],
String -> [Pattern] -> Production
define String
"BitwiseAnd" [
[Pattern] -> Pattern
list[Pattern -> Pattern
opt([Pattern] -> Pattern
list[Pattern
"BitwiseAnd", Pattern
amp_]), Pattern
"ShiftExpr"]],
String -> [Pattern] -> Production
define String
"ShiftExpr" [
[Pattern] -> Pattern
list[
Pattern -> Pattern
opt([Pattern] -> Pattern
list[Pattern
"ShiftExpr", [Pattern] -> Pattern
alts[Pattern
double_lt_, Pattern
double_gt_]]),
Pattern
"Sum"]],
String -> [Pattern] -> Production
define String
"Sum" [
[Pattern] -> Pattern
list[Pattern -> Pattern
opt([Pattern] -> Pattern
list[Pattern
"Sum", [Pattern] -> Pattern
alts[Pattern
plus_, Pattern
minus_]]), Pattern
"Term"]],
String -> [Pattern] -> Production
define String
"Term" [
[Pattern] -> Pattern
list[Pattern -> Pattern
opt([Pattern] -> Pattern
list[Pattern
"Term", [Pattern] -> Pattern
alts[Pattern
star_, Pattern
slash_, Pattern
double_slash_, Pattern
percent_, Pattern
at_]]), Pattern
"Factor"]],
String -> [Pattern] -> Production
define String
"Factor" [
[Pattern] -> Pattern
list[[Pattern] -> Pattern
alts[Pattern
plus_, Pattern
minus_, Pattern
tilde_], Pattern
"Factor"],
Pattern
"Power"],
String -> [Pattern] -> Production
define String
"Power" [
[Pattern] -> Pattern
list[Pattern
"AwaitPrimary", Pattern -> Pattern
opt([Pattern] -> Pattern
list[Pattern
double_star_, Pattern
"Factor"])]],
String -> [Pattern] -> Production
define String
"AwaitPrimary" [
[Pattern] -> Pattern
list[Pattern -> Pattern
opt(Pattern
"Await"), Pattern
"Primary"]],
String -> [Pattern] -> Production
define String
"Primary" [
[Pattern] -> Pattern
list[Pattern
"Primary", [Pattern] -> Pattern
alts[
[Pattern] -> Pattern
list[Pattern
dot_, Pattern
"Name"],
Pattern
"Genexp",
[Pattern] -> Pattern
list[Pattern
open_paren_, Pattern -> Pattern
opt(Pattern
"Arguments"), Pattern
close_paren_],
[Pattern] -> Pattern
list[Pattern
open_square_, Pattern
"Slices", Pattern
close_square_]]],
Pattern
"Atom"],
String -> [Pattern] -> Production
define String
"Slices" [
Pattern
"Slice",
Pattern -> Pattern -> Pattern
sepp Pattern
comma_ ([Pattern] -> Pattern
alts[Pattern
"Slice", Pattern
"StarredExpression"])],
String -> [Pattern] -> Production
define String
"Slice" [
[Pattern] -> Pattern
list[Pattern -> Pattern
opt(Pattern
"Expression"), Pattern
colon_, Pattern -> Pattern
opt(Pattern
"Expression"), Pattern -> Pattern
opt([Pattern] -> Pattern
list[Pattern
colon_, Pattern -> Pattern
opt(Pattern
"Expression")])],
Pattern
"NamedExpression"],
String -> [Pattern] -> Production
define String
"Atom" [
Pattern
"Name",
String -> Pattern
terminal String
"True",
String -> Pattern
terminal String
"False",
String -> Pattern
terminal String
"None",
Pattern -> Pattern
plus(Pattern
"String"),
Pattern
"Number",
Pattern
"Tuple",
Pattern
"Group",
Pattern
"Genexp",
Pattern
"List",
Pattern
"Listcomp",
Pattern
"Dict",
Pattern
"Set",
Pattern
"Dictcomp",
Pattern
"Setcomp",
Pattern
ellipsis_],
String -> [Pattern] -> Production
define String
"Group" [
[Pattern] -> Pattern
list[Pattern
open_paren_, [Pattern] -> Pattern
alts[Pattern
"YieldExpr", Pattern
"NamedExpression"], Pattern
close_paren_]],
String -> [Pattern] -> Production
define String
"Lambdef" [
[Pattern] -> Pattern
list[String -> Pattern
terminal String
"lambda", Pattern -> Pattern
opt(Pattern
"LambdaParameters"), Pattern
colon_, Pattern
"Expression"]],
String -> [Pattern] -> Production
define String
"LambdaParameters" [
[Pattern] -> Pattern
list[Pattern
"LambdaSlashNoDefault", Pattern -> Pattern
star(Pattern
"LambdaParamNoDefault"), Pattern -> Pattern
star(Pattern
"LambdaParamWithDefault"), Pattern -> Pattern
opt(Pattern
"LambdaStarEtc")],
[Pattern] -> Pattern
list[Pattern
"LambdaSlashWithDefault", Pattern -> Pattern
star(Pattern
"LambdaParamWithDefault"), Pattern -> Pattern
opt(Pattern
"LambdaStarEtc")],
[Pattern] -> Pattern
list[Pattern -> Pattern
plus(Pattern
"LambdaParamNoDefault"), Pattern -> Pattern
star(Pattern
"LambdaParamWithDefault"), Pattern -> Pattern
opt(Pattern
"LambdaStarEtc")],
[Pattern] -> Pattern
list[Pattern -> Pattern
plus(Pattern
"LambdaParamWithDefault"), Pattern -> Pattern
opt(Pattern
"LambdaStarEtc")],
Pattern
"LambdaStarEtc"],
String -> [Pattern] -> Production
define String
"LambdaSlashNoDefault" [
[Pattern] -> Pattern
list[Pattern -> Pattern
plus(Pattern
"LambdaParamNoDefault"), Pattern
slash_, Pattern -> Pattern
opt(Pattern
comma_)]],
String -> [Pattern] -> Production
define String
"LambdaSlashWithDefault" [
[Pattern] -> Pattern
list[Pattern -> Pattern
star(Pattern
"LambdaParamNoDefault"), Pattern -> Pattern
plus(Pattern
"LambdaParamWithDefault"), Pattern
slash_, Pattern -> Pattern
opt(Pattern
comma_)]],
String -> [Pattern] -> Production
define String
"LambdaStarEtc" [
[Pattern] -> Pattern
list[Pattern
star_, Pattern
"LambdaParamNoDefault", Pattern -> Pattern
star(Pattern
"LambdaParamMaybeDefault"), Pattern -> Pattern
opt(Pattern
"LambdaKwds")],
[Pattern] -> Pattern
list[Pattern
star_, Pattern
comma_, Pattern -> Pattern
plus(Pattern
"LambdaParamMaybeDefault"), Pattern -> Pattern
opt(Pattern
"LambdaKwds")],
Pattern
"LambdaKwds"],
String -> [Pattern] -> Production
define String
"LambdaKwds" [
[Pattern] -> Pattern
list[Pattern
double_star_, Pattern
"LambdaParamNoDefault"]],
String -> [Pattern] -> Production
define String
"LambdaParamNoDefault" [
[Pattern] -> Pattern
list[Pattern
"LambdaParam", Pattern -> Pattern
opt(Pattern
comma_)]],
String -> [Pattern] -> Production
define String
"LambdaParamWithDefault" [
[Pattern] -> Pattern
list[Pattern
"LambdaParam", Pattern
"Default", Pattern -> Pattern
opt(Pattern
comma_)]],
String -> [Pattern] -> Production
define String
"LambdaParamMaybeDefault" [
[Pattern] -> Pattern
list[Pattern
"LambdaParam", Pattern -> Pattern
opt(Pattern
"Default"), Pattern -> Pattern
opt(Pattern
comma_)]],
String -> [Pattern] -> Production
define String
"LambdaParam" [
Pattern
"Name"],
String -> [Pattern] -> Production
define String
"List" [
[Pattern] -> Pattern
list[Pattern
open_square_, Pattern -> Pattern -> Pattern
sepp Pattern
comma_ Pattern
"StarNamedExpression", Pattern
close_square_]],
String -> [Pattern] -> Production
define String
"Tuple" [
[Pattern] -> Pattern
list[Pattern
open_paren_, Pattern -> Pattern
opt(Pattern -> Pattern -> Pattern
sepp Pattern
comma_ Pattern
"StarNamedExpression"), Pattern
close_paren_]],
String -> [Pattern] -> Production
define String
"Set" [
[Pattern] -> Pattern
list[Pattern
open_curly_, Pattern -> Pattern -> Pattern
sepp Pattern
comma_ Pattern
"StarNamedExpression", Pattern
close_curly_]],
String -> [Pattern] -> Production
define String
"Dict" [
[Pattern] -> Pattern
list[Pattern
open_curly_, Pattern -> Pattern
opt(Pattern -> Pattern -> Pattern
sepp Pattern
comma_ Pattern
"DoubleStarredKvpair"), Pattern
close_curly_]],
String -> [Pattern] -> Production
define String
"DoubleStarredKvpair" [
[Pattern] -> Pattern
list[Pattern
double_star_, Pattern
"BitwiseOr"],
Pattern
"Kvpair"],
String -> [Pattern] -> Production
define String
"Kvpair" [
[Pattern] -> Pattern
list[Pattern
"Expression", Pattern
colon_, Pattern
"Expression"]],
String -> [Pattern] -> Production
define String
"ForIfClause" [
[Pattern] -> Pattern
list[Pattern -> Pattern
opt(Pattern
"Async"), String -> Pattern
terminal String
"for", Pattern -> Pattern -> Pattern
sepp Pattern
comma_ Pattern
"StarTarget", String -> Pattern
terminal String
"in", Pattern
tilde_, Pattern
"Disjunction", Pattern -> Pattern
star([Pattern] -> Pattern
list[String -> Pattern
terminal String
"if", Pattern
"Disjunction"])]],
String -> [Pattern] -> Production
define String
"Listcomp" [
[Pattern] -> Pattern
list[Pattern
open_square_, Pattern
"NamedExpression", Pattern -> Pattern
plus(Pattern
"ForIfClause"), Pattern
close_square_]],
String -> [Pattern] -> Production
define String
"Setcomp" [
[Pattern] -> Pattern
list[Pattern
open_curly_, Pattern
"NamedExpression", Pattern -> Pattern
plus(Pattern
"ForIfClause"), Pattern
close_curly_]],
String -> [Pattern] -> Production
define String
"Genexp" [
[Pattern] -> Pattern
list[Pattern
open_paren_, [Pattern] -> Pattern
alts[Pattern
"AssignmentExpression", Pattern
"Expression"], Pattern -> Pattern
plus(Pattern
"ForIfClause"), Pattern
close_paren_]],
String -> [Pattern] -> Production
define String
"Dictcomp" [
[Pattern] -> Pattern
list[Pattern
open_curly_, Pattern
"Kvpair", Pattern -> Pattern
plus(Pattern
"ForIfClause"), Pattern
close_curly_]],
String -> [Pattern] -> Production
define String
"Arguments" [
[Pattern] -> Pattern
list[Pattern
"Args", Pattern -> Pattern
opt(Pattern
comma_)]],
String -> [Pattern] -> Production
define String
"Args" [
[Pattern] -> Pattern
list[Pattern -> Pattern -> Pattern
sep Pattern
comma_ ([Pattern] -> Pattern
alts[Pattern
"StarredExpression", Pattern
"AssignmentExpression", Pattern
"Expression"]), Pattern -> Pattern
opt([Pattern] -> Pattern
list[Pattern
comma_, Pattern
"Kwargs"])],
Pattern
"Kwargs"],
String -> [Pattern] -> Production
define String
"Kwargs" [
[Pattern] -> Pattern
list[Pattern
comma_, [Pattern] -> Pattern
alts[
[Pattern] -> Pattern
list[Pattern -> Pattern
plus([Pattern] -> Pattern
list[Pattern
dot_, Pattern
"KwargOrStarred"]), Pattern -> Pattern
opt([Pattern] -> Pattern
list[Pattern
comma_, Pattern
comma_, Pattern -> Pattern
plus([Pattern] -> Pattern
list[Pattern
dot_, Pattern
"KwargOrDoubleStarred"])])],
Pattern -> Pattern
plus([Pattern] -> Pattern
list[Pattern
dot_, Pattern
"KwargOrDoubleStarred"])]]],
String -> [Pattern] -> Production
define String
"StarredExpression" [
[Pattern] -> Pattern
list[Pattern
star_, Pattern
"Expression"]],
String -> [Pattern] -> Production
define String
"KwargOrStarred" [
[Pattern] -> Pattern
list[Pattern
"Name", Pattern
equal_, Pattern
"Expression"],
Pattern
"StarredExpression"],
String -> [Pattern] -> Production
define String
"KwargOrDoubleStarred" [
[Pattern] -> Pattern
list[Pattern
"Name", Pattern
equal_, Pattern
"Expression"],
[Pattern] -> Pattern
list[Pattern
double_star_, Pattern
"Expression"]],
String -> [Pattern] -> Production
define String
"StarTargetsListSeq" [
Pattern -> Pattern -> Pattern
sepp Pattern
comma_ (Pattern -> Pattern
plus([Pattern] -> Pattern
list[Pattern
dot_, Pattern
"StarTarget"]))],
String -> [Pattern] -> Production
define String
"StarTargetsTupleSeq" [
Pattern -> Pattern -> Pattern
sepp Pattern
comma_ (Pattern -> Pattern
plus(Pattern
"StarTarget"))],
String -> [Pattern] -> Production
define String
"StarTarget" [
[Pattern] -> Pattern
list[Pattern
star_, Pattern
"StarTarget"],
Pattern
"TargetWithStarAtom"],
String -> [Pattern] -> Production
define String
"TargetWithStarAtom" [
[Pattern] -> Pattern
list[Pattern
"TPrimary", Pattern
dot_, Pattern
"Name"],
[Pattern] -> Pattern
list[Pattern
"TPrimary", Pattern
open_square_, Pattern
"Slices", Pattern
close_square_],
Pattern
"StarAtom"],
String -> [Pattern] -> Production
define String
"StarAtom" [
Pattern
"Name",
[Pattern] -> Pattern
list[Pattern
open_paren_, Pattern
"TargetWithStarAtom", Pattern
close_paren_],
[Pattern] -> Pattern
list[Pattern
open_paren_, Pattern
"StarTargetsTupleSeq", Pattern
close_paren_],
[Pattern] -> Pattern
list[Pattern
open_square_, Pattern
"StarTargetsListSeq", Pattern
close_square_]],
String -> [Pattern] -> Production
define String
"SingleTarget" [
Pattern
"SingleSubscriptAttributeTarget",
Pattern
"Name",
[Pattern] -> Pattern
list[Pattern
open_paren_, Pattern
"SingleTarget", Pattern
close_paren_]],
String -> [Pattern] -> Production
define String
"SingleSubscriptAttributeTarget" [
[Pattern] -> Pattern
list[Pattern
"TPrimary", Pattern
dot_, Pattern
"Name"],
[Pattern] -> Pattern
list[Pattern
"TPrimary", Pattern
open_square_, Pattern
"Slices", Pattern
close_square_]],
String -> [Pattern] -> Production
define String
"TPrimary" [
[Pattern] -> Pattern
list[Pattern
"TPrimary", Pattern
dot_, Pattern
"Name"],
[Pattern] -> Pattern
list[Pattern
"TPrimary", Pattern
open_square_, Pattern
"Slices", Pattern
close_square_],
[Pattern] -> Pattern
list[Pattern
"TPrimary", Pattern
"Genexp"],
[Pattern] -> Pattern
list[Pattern
"TPrimary", Pattern
open_paren_, Pattern -> Pattern
opt(Pattern
"Arguments"), Pattern
close_paren_],
Pattern
"Atom"],
String -> [Pattern] -> Production
define String
"TLookahead" [
Pattern
open_paren_, Pattern
open_square_, Pattern
dot_],
String -> [Pattern] -> Production
define String
"DelTargets" [
[Pattern] -> Pattern
list[Pattern
"TPrimary", Pattern
dot_, Pattern
"Name"],
[Pattern] -> Pattern
list[Pattern
"TPrimary", Pattern
open_square_, Pattern
"Slices", Pattern
close_square_],
Pattern
"DelTAtom"],
String -> [Pattern] -> Production
define String
"DelTarget" [
[Pattern] -> Pattern
list[Pattern
"TPrimary", Pattern
dot_, Pattern
"Name"],
[Pattern] -> Pattern
list[Pattern
"TPrimary", Pattern
open_square_, Pattern
"Slices", Pattern
close_square_],
Pattern
"DelTAtom"],
String -> [Pattern] -> Production
define String
"DelTAtom" [
Pattern
"Name",
[Pattern] -> Pattern
list[Pattern
open_paren_, Pattern
"DelTarget", Pattern
close_paren_],
[Pattern] -> Pattern
list[Pattern
open_paren_, Pattern -> Pattern
opt(Pattern
"DelTargets"), Pattern
close_paren_],
[Pattern] -> Pattern
list[Pattern
open_square_, Pattern -> Pattern
opt(Pattern
"DelTargets"), Pattern
close_square_]],
String -> [Pattern] -> Production
define String
"TypeExpressions" [
[Pattern] -> Pattern
list[Pattern -> Pattern -> Pattern
sepp Pattern
comma_ Pattern
"Expression", Pattern
star_, Pattern
"Expression", Pattern -> Pattern
opt([Pattern] -> Pattern
list[Pattern
comma_, Pattern
double_star_, Pattern
"Expression"])],
[Pattern] -> Pattern
list[Pattern -> Pattern -> Pattern
sepp Pattern
comma_ Pattern
"Expression", Pattern
star_, Pattern
double_star_, Pattern
"Expression"],
[Pattern] -> Pattern
list[Pattern
star_, Pattern
"Expression", Pattern -> Pattern
opt([Pattern] -> Pattern
list[Pattern
comma_, Pattern
double_star_, Pattern
"Expression"])],
[Pattern] -> Pattern
list[Pattern
double_star_, Pattern
"Expression"],
[Pattern] -> Pattern
list[Pattern -> Pattern -> Pattern
sepp Pattern
comma_ Pattern
"Expression"]],
String -> [Pattern] -> Production
define String
"FuncTypeComment" [
[Pattern] -> Pattern
list[Pattern -> Pattern
opt(Pattern
newline_), Pattern
"TypeComment"]]]