1
1
package plus .meow .MeowRust .parser
2
2
import com .codecommit .gll .RegexParsers
3
3
import plus .meow .MeowRust .grammar ._
4
+ import plus .meow .MeowRust .grammar
4
5
5
6
trait Statement extends RegexParsers with Literal with Pattern with Identifier with Label {
6
7
lazy val STATEMENT : Parser [Any ] = (
@@ -147,7 +148,7 @@ trait Statement extends RegexParsers with Literal with Pattern with Identifier w
147
148
148
149
// TODO: add type ascription ( -> TYPE BlockExpression
149
150
lazy val CLOSURE_EXPRESSION = ((" ||" ^^^ { List () }) | " |" ~> CLOSURE_PARAMETERS <~ " |" ) ~ EXPRESSION ^^ ClosureExpr
150
- lazy val CLOSURE_PARAMETERS : Parser [List [Any ]] = CLOSURE_PARAM ~ ((" ," ~> CLOSURE_PARAM )* ) <~ (" ," ? ) ^^ { _ :: _ }
151
+ lazy val CLOSURE_PARAMETERS : Parser [List [grammar. Pattern ]] = CLOSURE_PARAM ~ ((" ," ~> CLOSURE_PARAM )* ) <~ (" ," ? ) ^^ { _ :: _ }
151
152
// TODO: add type ascription
152
153
lazy val CLOSURE_PARAM = PATTERN
153
154
@@ -175,7 +176,7 @@ trait Statement extends RegexParsers with Literal with Pattern with Identifier w
175
176
lazy val IF_LET_EXPRESSION : Parser [IfLetExpr ] = ((" if" ~ " let" ) ~> MATCH_ARM_PATTERNS <~ " =" ) ~ EXPRESSION ~ BLOCK_EXPRESSION ~ (ELSE_ARM ? ) ^^ { IfLetExpr (_, _, _, _) }
176
177
177
178
lazy val MATCH_EXPRESSION : Parser [MatchExpr ] = (" match" ~> EXPRESSION <~ " {" ) ~ (MATCH_ARMS ? ) <~ " }" ^^ { (e, arms) => MatchExpr (e, arms getOrElse List ()) }
178
- val armParser = (spec : (List [Any ], Option [Expr ]), body : Expr ) => MatchArm (spec._1, spec._2, body)
179
+ val armParser = (spec : (List [grammar. Pattern ], Option [Expr ]), body : Expr ) => MatchArm (spec._1, spec._2, body)
179
180
lazy val MATCH_ARMS : Parser [List [MatchArm ]] = (
180
181
(
181
182
(MATCH_ARM <~ " =>" ) ~ ((BLOCK_EXPRESSION <~ (" ," ? )) | (EXPRESSION <~ " ," )) ^^ armParser)*
@@ -184,8 +185,8 @@ trait Statement extends RegexParsers with Literal with Pattern with Identifier w
184
185
) ^^ {
185
186
_ :+ _
186
187
}
187
- lazy val MATCH_ARM : Parser [(List [Any ], Option [Expr ])] = MATCH_ARM_PATTERNS ~ ((" if" ~> EXPRESSION )? ) ^^ { (_, _) }
188
- lazy val MATCH_ARM_PATTERNS : Parser [List [Any ]] = (" |" ? ) ~> PATTERN ~ ((" |" ~> PATTERN )* ) ^^ { (e, l) => e :: l }
188
+ lazy val MATCH_ARM : Parser [(List [grammar. Pattern ], Option [Expr ])] = MATCH_ARM_PATTERNS ~ ((" if" ~> EXPRESSION )? ) ^^ { (_, _) }
189
+ lazy val MATCH_ARM_PATTERNS : Parser [List [grammar. Pattern ]] = (" |" ? ) ~> PATTERN ~ ((" |" ~> PATTERN )* ) ^^ { (e, l) => e :: l }
189
190
190
191
lazy val RETURN_EXPRESSION = " return" ~> (EXPRESSION ? ) ^^ { FlowCtrlExpr (Return (), None , _) }
191
192
}
0 commit comments