diff options
author | Li Haoyi <haoyi@dropbox.com> | 2014-11-28 06:19:55 -0800 |
---|---|---|
committer | Li Haoyi <haoyi@dropbox.com> | 2014-11-28 06:19:55 -0800 |
commit | 9270f9ada72fa36ebe2b6907b2e8f330cc7e7996 (patch) | |
tree | dc2c7cab07c0ffe48fd65ce5eb110d92b1ee568c /scalaParser/src/main/scala/scalaParser/ScalaSyntax.scala | |
parent | 097b5f24938bfb59471da7415be6523a7dfa03f9 (diff) | |
download | hands-on-scala-js-9270f9ada72fa36ebe2b6907b2e8f330cc7e7996.tar.gz hands-on-scala-js-9270f9ada72fa36ebe2b6907b2e8f330cc7e7996.tar.bz2 hands-on-scala-js-9270f9ada72fa36ebe2b6907b2e8f330cc7e7996.zip |
Raw structural type syntax works
Diffstat (limited to 'scalaParser/src/main/scala/scalaParser/ScalaSyntax.scala')
-rw-r--r-- | scalaParser/src/main/scala/scalaParser/ScalaSyntax.scala | 7 |
1 files changed, 4 insertions, 3 deletions
diff --git a/scalaParser/src/main/scala/scalaParser/ScalaSyntax.scala b/scalaParser/src/main/scala/scalaParser/ScalaSyntax.scala index 7770bca..f99e016 100644 --- a/scalaParser/src/main/scala/scalaParser/ScalaSyntax.scala +++ b/scalaParser/src/main/scala/scalaParser/ScalaSyntax.scala @@ -108,7 +108,8 @@ class ScalaSyntax(val input: ParserInput) extends Parser with Basic with Identif OneNewlineMax ~ '{' ~ oneOrMore(RefineStat).separatedBy(Semi) ~ "}" } rule { - oneOrMore(AnnotType).separatedBy(K.W("with")) ~ optional(Refinement) + oneOrMore(AnnotType).separatedBy(K.W("with")) ~ optional(Refinement) | + Refinement } } def AnnotType = rule { @@ -304,7 +305,7 @@ class ScalaSyntax(val input: ParserInput) extends Parser with Basic with Identif def TypeParamClause: R0 = { - def VariantTypeParam: R0 = rule { zeroOrMore(Annotation) ~ optional(anyOf("+-")) ~ TypeParam } + def VariantTypeParam: R0 = rule { zeroOrMore(Annotation) ~ optional(WL ~ anyOf("+-")) ~ TypeParam } rule { '[' ~ oneOrMore(VariantTypeParam).separatedBy(',') ~ ']' } } def FunTypeParamClause: R0 = rule { @@ -356,7 +357,7 @@ class ScalaSyntax(val input: ParserInput) extends Parser with Basic with Identif def TemplateStat: R0 = rule { Import | zeroOrMore(Annotation ~ OneNewlineMax) ~ zeroOrMore(Modifier) ~ (Def | Dcl) | - Expr + Expr0(true) } def SelfType: R0 = rule { K.W("this") ~ K.O(":") ~ Type ~ K.O("=>") | Id ~ optional(K.O(":") ~ Type) ~ K.O("=>") } |