summaryrefslogtreecommitdiff
path: root/scalaParser/src/main/scala/scalaParser/ScalaSyntax.scala
diff options
context:
space:
mode:
Diffstat (limited to 'scalaParser/src/main/scala/scalaParser/ScalaSyntax.scala')
-rw-r--r--scalaParser/src/main/scala/scalaParser/ScalaSyntax.scala18
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
}
}