diff options
Diffstat (limited to 'scalaParser/src/main/scala/scalaParser/ScalaSyntax.scala')
-rw-r--r-- | scalaParser/src/main/scala/scalaParser/ScalaSyntax.scala | 20 |
1 files changed, 12 insertions, 8 deletions
diff --git a/scalaParser/src/main/scala/scalaParser/ScalaSyntax.scala b/scalaParser/src/main/scala/scalaParser/ScalaSyntax.scala index 644c545..29bff1e 100644 --- a/scalaParser/src/main/scala/scalaParser/ScalaSyntax.scala +++ b/scalaParser/src/main/scala/scalaParser/ScalaSyntax.scala @@ -101,12 +101,18 @@ class ScalaSyntax(val input: ParserInput) extends Parser with Basic with Identif "forSome" ~ '{' ~ oneOrMore(ExistentialDcl).separatedBy(Semi) ~ '}' } def Type: R0 = { - def WildcardType: R0 = rule{ `_` } - + def FunctionArgTypes = rule { + '(' ~ optional(oneOrMore(ParamType) separatedBy ',') ~ ')' + } rule { - (WildcardType | - FunctionArgTypes ~ `=>` ~ Type | - InfixType ~ optional(ExistentialClause)) ~ TypeBounds + ( + `_` | + FunctionArgTypes ~ `=>` ~ Type | + InfixType ~ ( + `=>` ~ Type | + optional(ExistentialClause) + ) + ) ~ TypeBounds } } @@ -138,9 +144,7 @@ class ScalaSyntax(val input: ParserInput) extends Parser with Basic with Identif def TypePat = rule { CompoundType } - def FunctionArgTypes = rule { - InfixType | '(' ~ optional(oneOrMore(ParamType) separatedBy ',') ~ ')' - } + def Ascription = rule { ":" ~ ("_" ~ "*" | Type | oneOrMore(Annotation)) } |