src/Pure/General/scan.scala
changeset 40536 47f572aff50a
parent 38649 f7d2574dc3a6
child 40769 1050315f6ee2
     1.1 --- a/src/Pure/General/scan.scala	Fri Oct 29 23:15:01 2010 +0200
     1.2 +++ b/src/Pure/General/scan.scala	Sat Oct 30 15:26:40 2010 +0200
     1.3 @@ -262,6 +262,7 @@
     1.4      {
     1.5        val id = one(symbols.is_letter) ~ many(symbols.is_letdig) ^^ { case x ~ y => x + y }
     1.6        val nat = many1(symbols.is_digit)
     1.7 +      val natdot = nat ~ "." ~ nat ^^ { case x ~ y ~ z => x + y + z }
     1.8        val id_nat = id ~ opt("." ~ nat) ^^ { case x ~ Some(y ~ z) => x + y + z case x ~ None => x }
     1.9  
    1.10        val ident = id ~ rep("." ~> id) ^^
    1.11 @@ -272,6 +273,8 @@
    1.12        val type_ident = "'" ~ id ^^ { case x ~ y => Token(Token.Kind.TYPE_IDENT, x + y) }
    1.13        val type_var = "?'" ~ id_nat ^^ { case x ~ y => Token(Token.Kind.TYPE_VAR, x + y) }
    1.14        val nat_ = nat ^^ (x => Token(Token.Kind.NAT, x))
    1.15 +      val float =
    1.16 +        ("-" ~ natdot ^^ { case x ~ y => x + y } | natdot) ^^ (x => Token(Token.Kind.FLOAT, x))
    1.17  
    1.18        val sym_ident =
    1.19          (many1(symbols.is_symbolic_char) |
    1.20 @@ -294,7 +297,7 @@
    1.21        (space | (string | (alt_string | (verbatim ^^ (x => Token(Token.Kind.VERBATIM, x)) |
    1.22          comment ^^ (x => Token(Token.Kind.COMMENT, x)))))) |
    1.23        bad_delimiter |
    1.24 -      ((ident | (var_ | (type_ident | (type_var | (nat_ | sym_ident))))) |||
    1.25 +      ((ident | (var_ | (type_ident | (type_var | (float | (nat_ | sym_ident)))))) |||
    1.26          keyword ^^ (x => Token(if (is_command(x)) Token.Kind.COMMAND else Token.Kind.KEYWORD, x))) |
    1.27        bad
    1.28      }