diff options
Diffstat (limited to 'scalaParser/src/main/scala')
-rw-r--r-- | scalaParser/src/main/scala/scalaParser/ScalaSyntax.scala | 18 |
1 files changed, 10 insertions, 8 deletions
diff --git a/scalaParser/src/main/scala/scalaParser/ScalaSyntax.scala b/scalaParser/src/main/scala/scalaParser/ScalaSyntax.scala index 534782b..593f341 100644 --- a/scalaParser/src/main/scala/scalaParser/ScalaSyntax.scala +++ b/scalaParser/src/main/scala/scalaParser/ScalaSyntax.scala @@ -320,18 +320,20 @@ class ScalaSyntax(val input: ParserInput) extends Parser with Basic with Identif def SimplePattern: R0 = { def Patterns: R0 = rule { `_` ~ '*' | oneOrMore(Pattern).separatedBy(',') } + def ExtractorArgs = rule{ + optional(Patterns ~ ',') ~ optional(VarId ~ '@') ~ `_` ~ '*' + } + def Extractor: R0 = rule{ + StableId ~ + optional( + '(' ~ (ExtractorArgs | optional(Patterns)) ~ ')' + ) + } rule { `_` ~ optional(`:` ~ TypePat) | Literal | '(' ~ optional(Patterns) ~ ')' | - ( - StableId ~ - optional( - '(' ~ - (optional(Patterns ~ ',') ~ optional(VarId ~ '@') ~ `_` ~ '*' | optional(Patterns)) ~ - ')' - ) - ) | + Extractor | VarId } } |