MAIN

Varijable

  • Error Izuzetak koji mogu da raise-uju neke od procedura iz ovog modula, kako je naznačeno u specifikaciji svae od procedura.
  • nil NIL/NULL/null konstanta. Standardni invalid pointer, neinicijalizirane varijable u XL imaju ovu vrijednost.
  • stdin
  • stdout
  • stderr Standardni fajl deskriptori, ulaz, izlaz i error respektivno. stdin je Rd.T, a ostala dva su Wr.T i mogu se predefinisati tako da se njihove funkcije usmjere na proizvoljan stream deskriptor kreiran nekom od odgovarajućih File procedura.

Procedure/funkcije

  • nullproc() NOP procedura, korisna kao filler argument procedura koje traže proceduralne argumente kad korisnik ignoriše taj argument;
  • min(n1, n2, ...: number): number
  • max(n1, n2, ...: number): number Minimalni, odnosno maksimalni element grupe elemenata tipa number;
  • isnil(arg): boolean Predikat kojim se vrši provjera da li je vrijednost argumenta NIL;
  • call(p)
  • printf(format: text, arg1, ...)
  • sprintf(format: text, arg1, ...): text
  • delay(secs: number) Pauzira izvršavanje tekuće niti za secs sekundi;
  • assert(expr, msg: text, args...) Izračunava boolean izraz expr i u slučaju da je vrijednost false, generiše runtime grešku (RuntimeError?("Assert failed (" & msg & ")")). Ako vrijednost izraza ne može da se konvertuje u boolean, takođe generiše runtime grešku;
  • die(msg: text, args...) Prekida izvršenje programa sa porukom msg i informacijom o mjestu na kome se ista dogodila;
  • log(format: text, arg1, ...)
  • logf(wr: Wr.T, format: text, arg1, ...) Formatira log poruku i ispisuje je na predefinisani log izlaz (standardni izlaz, stdout), odnosno zadati wr
  • setlog(enable: boolean) Uključuje, odnosno isključuje log izlaz. Nakon setlog(false), log() i logf() neće ispisivati poruke.
  • random(lo, hi) Daje slučajan cijeli broj u opsegu lo..hi;
  • now() Vraća trenutni datum i vrijeme, vrijednost tipa date.;
  • clock() Vraća trenutno vrijeme, vrijednost tipa time.;
  • new(name: text): foreign Alocira varijably foreign tipa na osnovu imena;
  • typename(v): text
  • foreigntypename(v): text Procedure za dobijanje imena tipa date varijable;
  • typecode(v): number Vraća Modula-3 runtime typecode tipa zadatog argumenta;
  • md5sum(v: text): text Izračunava kriptografski md5 hash datog teksta;
  • listtotext(l: list): text
  • texttolist(t: text): list text je jedna ili više linija teksta, list je lista od jednog ili više elemenata;
  • compile(fname: text): XL.Run
  • compile(rd: Rd.T): XL.Run Kompajlira XL kod iz date datoteke, ili rd strima. rd može biti već otvorena datoteka, ali i na neki drugi način generisani sors kod.
  • exec(run: XL.Run, qproc: text, args...) U okviru run XL runtime okruženja, izvršava proceduru qproc (IPUtils.IP2Text, na primjer) sa argumentima args. Svaki XL.Run ima zaseban globalni kontekst i komunikacija sa kontekstom iz kog se poziva exec() se obavlja preko argumenata i povratne vrijednosti, eventualno preko eksternih resursa tipa fajl sistema ili neke baze podataka;
  • run(fname, qproc: text; args...) Kraći način za adhoc pozivanje samo jedne procedure iz određenog eksternog XL programa;
  • save(fname: text, v: any)
  • load(fname: text): any
  • pickle(v: any): text
  • depickle(p: text): any
  • clone(v: any): any Skup procedura za manipulisanje perzistentnim oblikom proizvoljne strukture podataka. save() zapisuje strukturu u disk datoteku, load() učitava strukturu iz datoteke, pickle pretvara strukturu u tekst, depickle vraća tekst u originalnu strukturu. clone() pravi identičnu kopiju strukture.
  • caps(v: text): text
  • lows(v: text): text Vraća string konvertovan u sva velika, odnosno sva mala slova;
  • split(v, s: text): list Razbija v na "riječi" odvojene nekim od separatora (argument s). Za razliku od splitlist(), više sukcesivnih separator karaktera tretira se kao jedan separator;
  • splitlist(v, s: text): list Za razliku od split(), rezultat može da ima i prazne stringove u listi "riječi";
      XLModule.AddProc(m, "trim", Trim);
      XLModule.AddProc(m, "escape", Escape);
      XLModule.AddProc(m, "unescape", UnEscape);
      XLModule.AddProc(m, "pos", Pos);
      XLModule.AddProc(m, "replaces", Replaces);
      XLModule.AddProc(m, "lat2cir", Lat2Cir);
      XLModule.AddProc(m, "cir2lat", Cir2Lat);
    
  • size(v: array|list|text|bytes): number Vraća broj elemenata u varijabli nekog od podržanih tipova. Ukoliko tip argumenta nije podržan, generiše runtime grešku;
  • head(v: list): any
  • tail(v: list): any
  • delhead(v: list): list
  • deltail(v: list): list Procedure vraćaju prvi element liste, zadnji element liste, listu bez prvog elementa, listu bez zadnjeg elementa, respektivno. Prve dvije procedure generisaće runtime grešku ako je argument prazna lista.
  • regex(re: text): ERegEx.T Kompajlira regularni izraz, za kasniju upotrebu u regmatch();
  • regmatch(re: text, e: text): list
  • regmatch(re: ERegEx.T, e: text): list "Izvršava" regularni izraz sa argumentom e. Prva forma je adhoc, druga koristi ranije kompajlirani regularni izraz. U slučaju da regularni izraz ne odgovara drugom argumentu e, vraća praznu listu. Ukoliko Izraz odgovara argumentu e (matchuje ga), regmatch vraća listu sa najmanje jednim elementom. Prvi element je puni match, a eventualni ostali elementi su "pogođeni" podizrazi, u strukturi kao kod argumenta <varN> za prijem rezultata u match iskazu.
  • regfree(re: ERegEx.T) Dealocira re. Procedura je suvišna zbog WeakRef čistača.

  XLModule.AddProc(m, "swap", Swap);
  XLModule.AddProc(m, "compare", Compare);
  XLModule.AddProc(m, "sort", Sort);