src/HOL/SPARK/Tools/fdl_lexer.ML
changeset 47297 de84dd9a9dd4
parent 47083 d04b38d4035b
child 48911 5debc3e4fa81
equal deleted inserted replaced
47269:29aa0c071875 47297:de84dd9a9dd4
   172 
   172 
   173 val long_identifier =
   173 val long_identifier =
   174   identifier @@@ (Scan.repeat1 ($$$ "." @@@ identifier) >> flat);
   174   identifier @@@ (Scan.repeat1 ($$$ "." @@@ identifier) >> flat);
   175 
   175 
   176 val whitespace = Scan.many (is_whitespace o symbol);
   176 val whitespace = Scan.many (is_whitespace o symbol);
       
   177 val whitespace1 = Scan.many1 (is_whitespace o symbol);
   177 val whitespace' = Scan.many (is_whitespace' o symbol);
   178 val whitespace' = Scan.many (is_whitespace' o symbol);
   178 val newline = Scan.one (is_newline o symbol);
   179 val newline = Scan.one (is_newline o symbol);
   179 
   180 
   180 fun beginning n cs =
   181 fun beginning n cs =
   181   let
   182   let
   259 fun scan header comment =
   260 fun scan header comment =
   260   !!! "bad header" header --| whitespace --
   261   !!! "bad header" header --| whitespace --
   261   Scan.repeat (Scan.unless (Scan.one is_char_eof)
   262   Scan.repeat (Scan.unless (Scan.one is_char_eof)
   262     (!!! "bad input"
   263     (!!! "bad input"
   263        (   comment
   264        (   comment
   264         || (keyword "For" -- whitespace) |--
   265         || (keyword "For" -- whitespace1) |--
   265               Scan.repeat1 (Scan.unless (keyword ":") any) --|
   266               Scan.repeat1 (Scan.unless (keyword ":") any) --|
   266               keyword ":" >> make_token Traceability
   267               keyword ":" >> make_token Traceability
   267         || Scan.max leq_token
   268         || Scan.max leq_token
   268              (Scan.literal lexicon >> make_token Keyword)
   269              (Scan.literal lexicon >> make_token Keyword)
   269              (   long_identifier >> make_token Long_Ident
   270              (   long_identifier >> make_token Long_Ident