progs/compile-lexer.scala
changeset 219 599e6a6ab6c6
parent 212 1459e6e29621
child 227 93bd75031ced
equal deleted inserted replaced
218:8f3f8d82da8b 219:599e6a6ab6c6
   307 lazy val AExp: Parser[List[Token], AExp] = 
   307 lazy val AExp: Parser[List[Token], AExp] = 
   308   (T ~ T_OP("+") ~ AExp) ==> { case ((x, y), z) => Aop("+", x, z): AExp } ||
   308   (T ~ T_OP("+") ~ AExp) ==> { case ((x, y), z) => Aop("+", x, z): AExp } ||
   309   (T ~ T_OP("-") ~ AExp) ==> { case ((x, y), z) => Aop("-", x, z): AExp } || T  
   309   (T ~ T_OP("-") ~ AExp) ==> { case ((x, y), z) => Aop("-", x, z): AExp } || T  
   310 lazy val T: Parser[List[Token], AExp] = 
   310 lazy val T: Parser[List[Token], AExp] = 
   311   (F ~ T_OP("*") ~ T) ==> { case ((x, y), z) => Aop("*", x, z): AExp } || 
   311   (F ~ T_OP("*") ~ T) ==> { case ((x, y), z) => Aop("*", x, z): AExp } || 
   312   (F ~ T_OP("/") ~ T) ==> { case ((x, y), z) => Aop("*", x, z): AExp } || 
   312   (F ~ T_OP("/") ~ T) ==> { case ((x, y), z) => Aop("/", x, z): AExp } || 
   313   (F ~ T_OP("%") ~ T) ==> { case ((x, y), z) => Aop("*", x, z): AExp } || F
   313   (F ~ T_OP("%") ~ T) ==> { case ((x, y), z) => Aop("%", x, z): AExp } || F
   314 lazy val F: Parser[List[Token], AExp] = 
   314 lazy val F: Parser[List[Token], AExp] = 
   315   (T_LPAREN ~ AExp ~ T_RPAREN) ==> { case ((x, y), z) => y: AExp }|| 
   315   (T_LPAREN ~ AExp ~ T_RPAREN) ==> { case ((x, y), z) => y: AExp }|| 
   316   IdParser ==> { case x => Var(x): AExp } || 
   316   IdParser ==> { case x => Var(x): AExp } || 
   317   NumParser ==> { case x => Num(x): AExp }
   317   NumParser ==> { case x => Num(x): AExp }
   318 
   318