src/Pure/Thy/thy_header.scala
changeset 72777 164cb0806d0a
parent 72776 27a464537fb0
child 72778 83e581c9a5f1
equal deleted inserted replaced
72776:27a464537fb0 72777:164cb0806d0a
   212         case bad => error(bad.toString)
   212         case bad => error(bad.toString)
   213       }
   213       }
   214   }
   214   }
   215 
   215 
   216   def read(node_name: Document.Node.Name, reader: Reader[Char],
   216   def read(node_name: Document.Node.Name, reader: Reader[Char],
   217     start: Token.Pos = Token.Pos.none,
   217     command: Boolean = true,
   218     strict: Boolean = true): Thy_Header =
   218     strict: Boolean = true): Thy_Header =
   219   {
   219   {
   220     val (_, tokens0) = read_tokens(reader, true)
   220     val (_, tokens0) = read_tokens(reader, true)
   221     val text = Scan.reader_decode_utf8(reader, Token.implode(tokens0))
   221     val text = Scan.reader_decode_utf8(reader, Token.implode(tokens0))
   222 
   222 
   223     val (drop_tokens, tokens) = read_tokens(Scan.char_reader(text), strict)
   223     val (skip_tokens, tokens) = read_tokens(Scan.char_reader(text), strict)
   224     val pos = (start /: drop_tokens)(_.advance(_))
   224     val pos =
       
   225       if (command) Token.Pos.command
       
   226       else (Token.Pos.file(node_name.node) /: skip_tokens)(_ advance _)
   225 
   227 
   226     Parser.parse_header(tokens, pos).check(node_name)
   228     Parser.parse_header(tokens, pos).check(node_name)
   227   }
   229   }
   228 }
   230 }
   229 
   231