src/Pure/General/yxml.scala
changeset 27993 6dd90ef9f927
parent 27971 57dc3bd6f841
child 29140 e7ac5bb20aed
equal deleted inserted replaced
27992:131f7ea9e6e6 27993:6dd90ef9f927
    47   }
    47   }
    48 
    48 
    49 
    49 
    50   /* parsing */
    50   /* parsing */
    51 
    51 
    52   class BadYXML(msg: String) extends Exception
    52   private def err(msg: String) = error("Malformed YXML: " + msg)
    53 
       
    54   private def err(msg: String) = throw new BadYXML(msg)
       
    55   private def err_attribute() = err("bad attribute")
    53   private def err_attribute() = err("bad attribute")
    56   private def err_element() = err("bad element")
    54   private def err_element() = err("bad element")
    57   private def err_unbalanced(name: String) =
    55   private def err_unbalanced(name: String) =
    58     if (name == "") err("unbalanced element")
    56     if (name == "") err("unbalanced element")
    59     else err("unbalanced element \"" + name + "\"")
    57     else err("unbalanced element \"" + name + "\"")
   113     }
   111     }
   114 
   112 
   115   def parse_failsafe(source: CharSequence) = {
   113   def parse_failsafe(source: CharSequence) = {
   116     try { parse(source) }
   114     try { parse(source) }
   117     catch {
   115     catch {
   118       case e: BadYXML => XML.Elem (Markup.BAD, Nil,
   116       case _: RuntimeException => XML.Elem (Markup.BAD, Nil,
   119         List(XML.Text(source.toString.replace(X_string, "\\<^X>").replace(Y_string, "\\<^Y>"))))
   117         List(XML.Text(source.toString.replace(X_string, "\\<^X>").replace(Y_string, "\\<^Y>"))))
   120     }
   118     }
   121   }
   119   }
   122 
   120 
   123 }
   121 }