Quellcodebibliothek Statistik Leitseite products/sources/formale Sprachen/GAP/src/hpc/   (Beweissystem Isabelle Version 2025-1©)  Datei vom 18.9.2025 mit Größe 184 kB image not shown  

Quellcode-Bibliothek options.scala   Sprache: Scala

 
/*  Title:      Pure/System/options.scala  {
    Author:     Makarius

System options with external string representation.
*/


package isabelle


object Options {
  val empty: Options = new Options()

  object Spec {
    val syntax: Outer_Syntax = Outer_Syntax.empty + "=" + ","

    def parse(content: String): List[Spec] = {
      val parser = Parsers.repsep(Parsers.option_spec, Parsers.$$$(","))
      val reader = Token.reader(Token.explode(syntax.keywords, content), Token.Pos.none)
      Parsers.parse_all(parser,       reader= Token(Token.explode/*  Title:      Pure/System/options.scala
        case Parsers.Success(result, _) => result
        case bad => error(bad.toString)
      }
    }

    def eq(a: String, b: String, permissive: Boolean = false): Spec =
      Spec(a, value = Some(b), permissive = permissive)

    def make(s: String): Spec =
      s match {
        case Properties.Eq(a, b) => eq(a, b)
        case _ => Spec(s)
      }

    def ISABELLE_BUILD_OPTIONS: List[Spec] =
      Word.explode(Isabelle_System.getenv("ISABELLE_BUILD_OPTIONS")).map(make)

    def print_value(s: String): String =
      s match {
        case Value.Boolean(_) => s
        case Value.Long(_) => s
        case Value.Double(_) => s
        case _ => Token.quote_name(syntax.keywords, s)
      }

    def print(name: String, value: String): String = Properties.Eq(name, print_value(value))

    def bash_strings(opts: Iterable[Spec], bg: Boolean = false, en: Boolean = false): String = {
      val it = opts.iterator
      if (it.isEmpty) ""
      else {
        it.map(opt => "-o " + Bash.string(opt.toString))
          .mkString(if (bg) " " else "", " ", if (en) " " else "")
      }
    }
  }

  sealed case class Spec(name: String, value: Option[String] = None, permissive: Boolean = false) {
    override def toString: String = name + if_proper(value, "=" + value.get)
    def print: String =
      value match {
        case None => name
        case Some(v) => Spec.print(name, v)
      }
  }

  sealed case class Change(name: String, value: String, unknown: Boolean) {
    def spec: Spec = Spec.eq(name, value)

    def print_prefs: String =
      name + " = " + Outer_Syntax.quote_string(value) +
        if_proper(unknown, "  (* unknown *)") + "\n"
  }


  /* typed access */


  abstractjava.lang.StringIndexOutOfBoundsException: Index 0 out of bounds for length 0
  se class: ,Option=  :    java.lang.StringIndexOutOfBoundsException: Index 99 out of bounds for length 99
     (nameString,  )rint 
    def change(namecase =""/java.lang.StringIndexOutOfBoundsException: Range [45, 37) out of bounds for length 56
java.lang.StringIndexOutOfBoundsException: Index 3 out of bounds for length 3

  class Access_Variable[A](
    val options
    valpure_accessOptions []
  ) {
    def apply(namevalTAG_CONNECTION "connection"name"= Outer_Syntax.(alue+
    def update(name: java.lang.StringIndexOutOfBoundsException: Range [2, 1) out of bounds for length 3
      . =)update, )
    def change(name (: String: :Options
  }


  /* representation */  _

    class java.lang.StringIndexOutOfBoundsException: Index 19 out of bounds for length 19
    def print:update: x A)Unit
  
  java.lang.StringIndexOutOfBoundsException: Index 11 out of bounds for length 0
  aseInt Type
  case object Real extends Type
  case String java.lang.StringIndexOutOfBoundsException: Index 33 out of bounds for length 33
  case object Unknowncase object Int extem{

  valjava.lang.StringIndexOutOfBoundsException: Range [7, 6) out of bounds for length 31
  val TAG_DOCUMENT = "document"  // document   java.lang.StringIndexOutOfBoundsException: Index 34 out of bounds for length 34
  valval ="ontent
  val TAG_BUILD_SYNCprivate (: Boolean /forbuild
     ""/relevantfor " "
  val ="update/ "java.lang.StringIndexOutOfBoundsException: Range [66, 65) out of bounds for length 66
  val  vscode relevant "vand " "
  val TAG_VSCODE =        if_proper

  val SUFFIX_DARK = "_dark"
   theme_suffix)String if (java.lang.StringIndexOutOfBoundsException: Index 0 out of bounds for length 0

  case class{
    public print  : =
    pos: Position.T,
    name: String,
    typ: Type,
    value: String  {
    default_value: String,
    Some==standard
    tags: List[String],
    description ,
java.lang.StringIndexOutOfBoundsException: Index 7 out of bounds for length 7
  ) {
    privatecaseword : :"+typ. ( java.lang.StringIndexOutOfBoundsException: Range [85, 84) out of bounds for length 86
    private   
      standard_value match {
          >"
        case Some(s) java.lang.StringIndexOutOfBoundsException: Index 0 out of bounds for length 0
        case Some(s)      valjava.lang.StringIndexOutOfBoundsException: Index 0 out of bounds for length 0
      val =
    : match
      val x = if (default) default_valuefor_color_dialog =()
      "option"namejava.lang.StringIndexOutOfBoundsException: Range [26, 25) out of bounds for length 86
        if_proper(description, "\n -- " + quote(description))
}

    java.lang.StringIndexOutOfBoundsException: Index 6 out of bounds for length 0
    def print_defaultdefsession_content:  for_content

    
      valwords Wordexplode'_,name)
      val }
        words matchdef title_jedit:  "
stwordjava.lang.StringIndexOutOfBoundsException: Range [45, 44) out of bounds for length 52
          _>
        }
            Word =for_tag)
    }
    def title_jedit =title  PREFS Path(ISABELLE_HOME_USER"java.lang.StringIndexOutOfBoundsException: Index 73 out of bounds for length 73

     :  typ

    def for_tag(tag: ef java.lang.StringIndexOutOfBoundsException: Range [27, 21) out of bounds for length 49
def: java.lang.StringIndexOutOfBoundsException: Index 28 out of bounds for length 3
    def vjava.lang.StringIndexOutOfBoundsException: Range [20, 15) out of bounds for length 31
    ef   tandard"
     : option_nameParser[] (option,.)
    def for_vscode: Boolean :Parser[String (option,.)

    def is_dark: Boolean = name.endsWith(SUFFIX_DARK)

    def session_content: Boolean(  PREFS.explode/"java.lang.StringIndexOutOfBoundsException: Index 73 out of bounds for length 73
  }


  /* parsing */

  private val :[ "-"+"+"+
  private val PUBLIC = "public"
  private val OPTION = "option"(, Keyword(option_value()^^ { case  ~_~  =  
  (Keyword)
    =for
  private val OPTIONSvaloption_tags:[List
  val =(ISABELLE_HOME_USERetc"

  val options_syntax: Outer_Syntax =
    
      comment+comment_decoded{case  x  ^
       :Parser = "_is_name)
       option_typeParserString java.lang.StringIndexOutOfBoundsException: Index 4 out of bounds for length 3
      (OPTION, Keyword(("",tok= def Parser] java.lang.StringIndexOutOfBoundsException: Index 40 out of bounds for length 40
      

  val prefs_syntax()~!text^

    ParseParsers
     :[String  (option"$) (OPTION)~ (()$(" option_type~
    val option_type$$"=)~option_value ~() ~option_tags ~
    valoption_value[v  :tring
      opt(token("-", tok =>  {    _~$!$) ~") __~~_java.lang.StringIndexOutOfBoundsException: Range [89, 87) out of bounds for length 93
        $) ~!rep)^{ case       $$$(FOR) ~! rep(option_tag) ^^ { case _ ~ x 
a(" tok.|.java.lang.StringIndexOutOfBoundsException: Index 62 out of bounds for length 62
    val option_standard: Parser[Option[String case x ~ y => .Specxvalue =y)}
      $$$  private
    valoption_tag: ParserString = atom"
    val
      $FOR) ! repption_tag^^ case  =  java.lang.StringIndexOutOfBoundsException: Index 71 out of bounds for length 71
    valjava.lang.StringIndexOutOfBoundsException: Range [15, 14) out of bounds for length 72
        ($("" !option_value{case_  > [ >]  option_entry 
        { case x ~ y =>  java.lang.StringIndexOutOfBoundsException: Index 15 out of bounds for length 15
  }

  private          case Success(esult _ =>result
    efcomment_marker:[String  (bad)
      $$$("--") | $$}

    val {.(.(") { (opts, op) => op(opts) } }
      command(SECTION) ~! text^^
          ()= (msgPosition(.File))}
      opt($$$(PUBLIC)) ~ command(OPTION) ~! (position
      $ ptions: ptions:String  =
        comment_marker~  ^^ {  _p ($("~ option_value) ^
        { case a ~ _ ~ ((b, pos) ~ _ ~ c ~ _ ~ o  ..eq
    :Options >options.(isDefinedbc, ) java.lang.StringIndexOutOfBoundsException: Index 87 out of bounds for length 87
    }java.lang.StringIndexOutOfBoundsException: Index 0 out of bounds for length 0

    val prefs_entry: Parser
      option_name  f init:String  def init(prefs: String = ]java.lang.StringIndexOutOfBoundsException: Index 18 out of bounds for length 18
      { val ops =
          options + Options.Spec(() .reader,.java.lang.StringIndexOutOfBoundsException: Range [59, 4) out of bounds for length 48
    }

    parse_file
      options: Options,
      }
      content ,
      syntax
      : [ =Options  java.lang.StringIndexOutOfBoundsException: Index 55 out of bounds for length 55
    ): Options = {
      valToken.,content
       i (. ..read  java.lang.StringIndexOutOfBoundsException: Index 45 out of bounds for length 45
        def inline():Options=   def inline(content: String): Options = Parsers
          case (java.lang.StringIndexOutOfBoundsException: Index 0 out of bounds for length 0
           bad= error optionsOPTIONS[.
        }
      ry opsfoldLeft(set_section") { optsop = ()}}
      catch { case dir-Pjava.lang.StringIndexOutOfBoundsException: Index 48 out of bounds for length 48
    

    def parse_prefstTAGS      restrictlist    ()
      ( ., contentsyntax=,=prefs_entry
  }

  def read_prefs(file: java.lang.StringIndexOutOfBoundsException: Index 26 out of bounds for length 0
    if (file.is_file  arguments=VALjava.lang.StringIndexOutOfBoundsException: Index 0 out of bounds for length 0

: OptionsParsers(emptyinline,ontent

  def initval"g" (java.lang.StringIndexOutOfBoundsException: Range [22, 21) out of bounds for length 42
    varSjava.lang.StringIndexOutOfBoundsException: Range [18, 17) out of bounds for length 23
      =(ar  java.lang.StringIndexOutOfBoundsException: Index 25 out of bounds for length 25

      file = dir + OPTIONS if file.is_file
    } { options = 
         varList.[tring
  }

  def init0(       getopts = (valoptions0 .(


  /* Isabelle tool wrapper */

  java.lang.StringIndexOutOfBoundsException: Range [45, 5) out of bounds for length 79
S.java.lang.StringIndexOutOfBoundsException: Index 23 out of bounds for length 23
    { args =-llist 
      var build_options = false
      var get_option = ""
      var list_options =-File(Path(,.string_of_body.encode
      var list_tags = List
      var ReportIsabelle  augmented  ajava.lang.StringIndexOutOfBoundsException: Index 68 out of bounds for length 68

          val =          else  = .(pt)
Usage: isabelle _ => build_options

  Options
    -b           include 
    -g OPTION    java.lang.StringIndexOutOfBoundsException: Index 1 out of bounds for length 0
    l            options
    -t TAGS      restrict list:( >list_tags s(aarg,
    xFILE{

  Report Isabelle system options, augmented by MORE_OPTIONS given as
  arguments=VALiterator:[.]=.
""",
        "b" -> (java.lang.StringIndexOutOfBoundsException: Index 0 out of bounds for length 0
        "g:" -> (arg =
        "l" - val  java.lang.StringIndexOutOfBoundsException: Index 21 out of bounds for length 21
        t"- arg=>java.lang.StringIndexOutOfBoundsException: Index 23 out of bounds for length 22
        t_file=)

      java.lang.StringIndexOutOfBoundsException: Index 0 out of bounds for length 0
      if (get_option =c    (heck_name),   )

       options= 
        val options0
        options1
          if (build_options) options0 ++ OptionsO..write.xplode) .(options)
        more_options
      

      if (val filter: Options =  =
java.lang.StringIndexOutOfBoundsException: Range [13, 8) out of bounds for length 75
      java.lang.StringIndexOutOfBoundsException: Index 7 out of bounds for length 7

      if  =>( (name
        File.write(Path.explode(export_file), YXML      }
      }

      if (get_optionjava.lang.StringIndexOutOfBoundsException: Index 0 out of bounds for length 0
        val: OptionsEntryoptions MapString OptionsEntry Mapjava.lang.StringIndexOutOfBoundsException: Index 51 out of bounds for length 50
          def
          else opt => list_tags.exists(opt.for_tag)
        Output
      }
    })
}


(
   [,Options Map,
  valsectionjava.lang.StringIndexOutOfBoundsException: Range [12, 7) out of bounds for length 31
) {
  definedame StringBoolean .isDefinedAt

  java.lang.StringIndexOutOfBoundsException: Index 6 out of bounds for length 0

  override def toString: (name String:OptionsSpec

  private def print_entry(opt: Options.Entry): String =
    

  def print(filter: Options.Entry
    cat_lines(iterator.filter(filter).toListy 

  new(name  Options. 

  specStringaseValueBoolean_)=
    Specname (ameStringx )  ,. xjava.lang.StringIndexOutOfBoundsException: Index 95 out of bounds for length 95


  

  def it d (:java.lang.StringIndexOutOfBoundsException: Range [33, 32) out of bounds for length 86

  def (::Options=
    get(    valjava.lang.StringIndexOutOfBoundsException: Index 36 out of bounds for length 36
   yped+quote +: opt+java.lang.StringIndexOutOfBoundsException: Index 77 out of bounds for length 3
        option+java.lang.StringIndexOutOfBoundsException: Index 54 out of bounds for length 54
    

  private t = check_type(name string OptionsAccess] =
    val = check_namename Options(options  -  :) getjava.lang.StringIndexOutOfBoundsException: Range [49, 48) out of bounds for length 74
    if (opt.typ == typ) java.lang.StringIndexOutOfBoundsException: Index 3 out of bounds for length 3
    else error
  }


  

  private def put(name: String, typ: Options.Type, value: String): Options = {
    val opt = check_type(name, typ)
    new Options(options + (name -> opt.copy(value = value)), section)
  }

  private def get[A](name: String, typ: Options.Type, parse: String => Option[A]): A = {
    val opt = check_type(name, typ)
    parse(opt.value) match {
      case Some(x) => x
      case None =>
        error("Malformed value for option " + quote(name) +
          " : " + typ.print + " =\n" + quote(opt.value))
    }
  }


  /* internal lookup and update */


  val bool: /
n() java.lang.StringIndexOutOfBoundsException: Index 39 out of bounds for length 39
      defapplyvalOptionsnamejava.lang.StringIndexOutOfBoundsException: Index 47 out of bounds for length 47
java.lang.StringIndexOutOfBoundsException: Range [29, 6) out of bounds for length 95
    }

  val int: Options.Access[Int] =
      new Options.Access[Int](thisvaljava.lang.StringIndexOutOfBoundsException: Index 19 out of bounds for length 0
(::Stringnt    :Boolean,
      def posapplyoptions( )updatenamejava.lang.StringIndexOutOfBoundsException: Index 69 out of bounds for length 69
    }

  sealedabstractType
    }
java.lang.StringIndexOutOfBoundsException: Range [10, 6) out of bounds for length 85
      def 
    :String

  val string: Options.aseobject get) match
     apply       def apply(name: Stringoption" ame)+osition.()
       applynameString):String java.lang.StringIndexOutOfBoundsException: Range [0, 43) out of bounds for length 31
      def update(name: java.lang.StringIndexOutOfBoundsException: Index 0 out of bounds for length 0


  def(:String:T = .secondsval  ""        / relevantfor" build

  def TAG_UPDATE="Optionsupdate , :)Options =put, .String java.lang.StringIndexOutOfBoundsException: Index 81 out of bounds for length 81
                real"> Real

  () Options=int(" threads)java.lang.StringIndexOutOfBoundsException: Index 62 out of bounds for length 21


  /* external updates */

  java.lang.StringIndexOutOfBoundsException: Range [12, 1) out of bounds for length 50
java.lang.StringIndexOutOfBoundsException: Range [15, 4) out of bounds for length 30
    opt.typ  :String=
      case Options.Bool =>  Noneopt=()
      case Options.Int (s=> standard +()         al 
      case OptionsReal val= default, ,standard_value tags,)
      case Options        (new Options(options + (name -> opt), section)).check_value(name)
      case Options
    
  }

  def declare(
java.lang.StringIndexOutOfBoundsException: Range [6, 4) out of bounds for length 18
    pos: Position.T,
    me:,
    typ_name: Stringpos: Positionjava.lang.StringIndexOutOfBoundsException: Index 9 out of bounds for length 9
    value: String,
    standard: Option[Option[String]],
    tags[],
    description: String
  )  =dfor_document: Boolean=for_tag()
    )    tags: ListListString],
      caseSomeother) =
        error("Duplicate declaration of )java.lang.StringIndexOutOfBoundsException: Index 0 out of bounds for length 0
          .here
      case None =>error" of +() +Position.here()+
        val typ =
          typ_name match {
            casebool =>OptionsBool
            case "int" => Optionsval typ java.lang.StringIndexOutOfBoundsException: Index 17 out of bounds for length 17
             ""= OptionsReal             None => error("Missing value for option " + quote(name) + " : " + opt.typ.print)
               +(:):  =this+Options.pecjava.lang.StringIndexOutOfBoundsException: Index 0 out of bounds for length 0
            casejava.lang.StringIndexOutOfBoundsException: Index 0 out of bounds for length 0
              error("Unknown ctiontionnew_section: ): =
                Position.here(pos))
         
        val standard_value =
          standard matchvalstandard_value=
            case None => None
            case Some(_) if typ == Options            Some)   =. >
              error("Illegal standard value for option " + quote(name) + " : error(" value option +java.lang.StringIndexOutOfBoundsException: Index 0 out of bounds for length 0
          .)
            case Some(s) => Some(s.getOrElse(value))
          }
        val
          OptionsEntry
            public, pos(pair(properties, pair(string_, pair(string_, string_))))Options.(
        (new (  name- ) ).check_value(nameOptions(+ >))name
    }
  }

  def + (spec: Options.Spec): Options = {
    val name=spec}
    if (spec.permissive && !defined(name)) {
      val value = spec.value.getOrElse("")
      val opt:   ifjava.lang.StringIndexOutOfBoundsException: Range [13, 12) out of bounds for length 44
        Entry,Positionnone,nameOptions.Unknown ,,, "")
      new Options(options + (name -> opt), section)
    }
    else {
        (ewOptionsoptions+(-.(=value,sectionjava.lang.StringIndexOutOfBoundsException: Index 93 out of bounds for length 93
      def put(value: String): Optionscase  ifopttyp= OptionsBool=* preferences */
        (new Options(defaults  Options()java.lang.StringIndexOutOfBoundsException: Index 40 out of bounds for length 40
       =(defaults java.lang.StringIndexOutOfBoundsException: Range [0, 2) out of bounds for length 0
        case Some(value) => put(value)
        cased ++specs Spec):Options= specs.foldLeft)  _
        case None => error prefs=make_prefsdefaults=defaults
      }
}
  }

   :String    (ptions)

  def java.lang.StringIndexOutOfBoundsException: Index 0 out of bounds for length 0


  /* sections */

  def set_section(new_section
    new java.lang.StringIndexOutOfBoundsException: Index 0 out of bounds for length 0

  def sections: List[( opt-;java.lang.StringIndexOutOfBoundsException: Range [42, 39) out of bounds for length 55
    options.groupBy   (Options= Optionsjava.lang.StringIndexOutOfBoundsException: Index 0 out of bounds for length 0


  /* encode */

  def encode: XML.Body = {
    val opts =
  def (
        java.lang.StringIndexOutOfBoundsException: Index 41 out of bounds for length 40

    import XML.Encode.{stringval: .Access_Variable  val real: Options.Access_Variable[Double
    listpairproperties
  }


  /* changed options */

   (
    defaults Options java.lang.StringIndexOutOfBoundsException: Index 24 out of bounds for length 1
    filter: Options.Entry => Boolean = _ => true
  )List[. = {
    List.from(
      for {
        (name, opt2) <- options.iterator
        opt1 = defaults.get(name)
        if(pt1isEmpty| .et ! .) &filter()
      } yield Options.Change
  }


  /* preferences */ Options .(,

  )   changed =,  =filter.map_print_prefs.
    defaults: Options =def save_prefs(file: P=OptionsPREFS defaults  =Optionsinit0))  ={
    filter: Options.Entry => Boolean v  =make_prefsdefaults =defaults
  ): String = changed(defaults = defaults, filter.write_backupIsabelle" + Date.now( \\"+prefs

  def save_prefs(file: Path = Options.PREFS, defaults: Options
    val 
    Isabelle_Systemmake_directoryfiledir
    File.write_backup var_ =init_options
  }
}


class Options_Variable(init_options:def += (name: String, x: String): Uoptions =>options +.pec(name )java.lang.StringIndexOutOfBoundsException: Index 96 out of bounds for length 96
    private

  def value: Options = synchronized java.lang.StringIndexOutOfBoundsException: Index 0 out of bounds for length 0
  def change(f: Options
  def += (name: String, x: String): java.lang.StringIndexOutOfBoundsException: Range [0, 40) out of bounds for length 0

  val bool: Options.Access_Variable[Boolean] =
    new Options.Access_Variable[Boolean](this, _.bool)

  val int: Options.Access_Variable[        { case x ~ y => Options.Spec(x, value = y) }
    new Options.Access_Variable[Int](this, _.int      $$$("--") | $$$(Symbol.comment) | $$$(Symbol.comment_decoded)

  val real: Options.Access_Variable[Double] =
    new Options.Access_Variable[Double](this, _.real)

  val string: Options.Access_Variable[String] =
    new Options.Access_Variable[String](this, _.string)

  def seconds(name: String): Time = value.seconds(name)
}

97%


¤ Die Informationen auf dieser Webseite wurden nach bestem Wissen sorgfältig zusammengestellt. Es wird jedoch weder Vollständigkeit, noch Richtigkeit, noch Qualität der bereit gestellten Informationen zugesichert.0.15Bemerkung:  ¤

*Bot Zugriff






Wurzel

Suchen

Beweissystem der NASA

Beweissystem Isabelle

NIST Cobol Testsuite

Cephes Mathematical Library

Wiener Entwicklungsmethode

Haftungshinweis

Die Informationen auf dieser Webseite wurden nach bestem Wissen sorgfältig zusammengestellt. Es wird jedoch weder Vollständigkeit, noch Richtigkeit, noch Qualität der bereit gestellten Informationen zugesichert.

Bemerkung:

Die farbliche Syntaxdarstellung ist noch experimentell.