Dies ist der Befehlscomputer, der beim kostenlosen Hosting-Anbieter OnWorks mit einer unserer zahlreichen kostenlosen Online-Workstations wie Ubuntu Online, Fedora Online, dem Windows-Online-Emulator oder dem MAC OS-Online-Emulator ausgeführt werden kann
PROGRAMM:
NAME/FUNKTION
comterp – Demonstrator für verteilte Befehlsinterpreter
ZUSAMMENFASSUNG
comterp
comterp entfernt
comterp Server „portnum“
comterp Logger „portnum“
comterp Client „Host“ „Portnum“ [„Datei“]
comterp telcat „host“ „portnum“ [„file“]
comterp Führen Sie „Datei“ aus
comterp „expr“
BESCHREIBUNG
comterp demonstriert den in ivtools integrierten Befehlsinterpreter. Ein Benutzer (oder Client
Programm) kann mit Comterp über stdin und stdout oder Telnet (wenn ACE integriert ist) interagieren.
Die Befehlssyntax ist eine durch Semikolons getrennte Liste von Befehlen mit beliebiger Anzahl
Parameter in Klammern eingeschlossen, mit Unterstützung für optionale Parameter und Schlüsselwörter
Argumente, also:
command2 (arg1 arg2 arg3 :key1 val1 :key2 val2);
command1(arg1 arg2 arg3 :key1 val1 :key2 val2)
C-ähnliche binäre Ausdrücke können mithilfe von überall in der Befehlssprache eingebettet werden
Operatoren in der Tabelle unten. Variablen können mit einer Zuweisung im laufenden Betrieb erstellt werden
Operator (z. B. „ball=1“ erstellt eine ganzzahlige „ball“-Variable, die auf 1 gesetzt ist). Unterminiert
Ausdrücke bewirken eine automatische Befehlszeilenerweiterung (bis der Parser die ermittelt).
Ausdruck ist abgeschlossen). „()“, „{}“ und „[]“ können alle austauschbar verwendet werden.
COMMAND OPTIONAL
comterp
Rufen Sie einen einzelnen Befehlsinterpreter auf, mit dem Sie über stdin und stdout interagieren können.
Comterp-Fernbedienung
Rufen Sie einen einzelnen Befehlsinterpreter auf, wie die Standardeinstellung, und fügen Sie einen Remote-Befehl für ein
Zugriff auf andere Computer im Servermodus.
Computerserver „Portnum“
Hört auf Portnum und akzeptiert Verbindungen und richtet dann einen Befehlsinterpreter zum Warten ein
für Befehle von dieser Verbindung suchen und diese verarbeiten.
Computer-Logger „Portnum“
Hört auf Portnum und akzeptiert Verbindungen und leitet die eingehenden Nachrichten dann einfach weiter
auf stdout, während mit Zeilenumbrüchen zurückgeantwortet wird. Zu Debugzwecken nicht wirklich sinnvoll
der Dolmetscher.
Comterp-Client „Host“ „Portnum“ [„Datei“]
Stellen Sie eine Verbindung zu einem Portnum auf einem Host her und senden/empfangen Sie mit einer neuen Zeile abgeschlossene Textpuffer. Für
Debugging-Zwecke, nicht wirklich eine Verwendung des Interpreters.
comterp telcat „host“ „portnum“ [„file“]
Stellen Sie eine Verbindung zu einem Portnummer auf einem Host her, fangen Sie die Datei an und schließen Sie dann die Verbindung. Eigentlich kein Nutzen
des Dolmetschers.
comterp „Datei“ ausführen
Führen Sie den Inhalt der Datei aus und beenden Sie den Vorgang.
comterp „expr“
Einzelnen Ausdruck auswerten und dann beenden.
OPERATOR TABELLE
Operatoren Befehlsname Prioritätsreihenfolgetyp
--------- ------------ -------- ----- ----
. Punkt 130 R-zu-L binär
` bquote 125 R-zu-L-Unärpräfix
! negiere 110 R-zu-L-Unärpräfix
~ bit_not 110 R-zu-L-Unärpräfix
++ incr 110 R-zu-L-Unärpräfix
++ incr_after 110 R-zu-L-Unärpostfix
- minus 110 R-zu-L-Unärpräfix
-- decr 110 R-zu-L-Unärpräfix
-- decr_after 110 R-zu-L-Unärpostfix
** Wiederholen Sie 90 L-zu-R-Binärdateien
.. 80 L-zu-R-Binärdateien iterieren
% mod 70 L-zu-R binär
* mpy 70 L-zu-R-Binärdatei
/ div 70 L-zu-R binär
+ 60 L-zu-R-Binärdaten hinzufügen
- Sub 60 L-zu-R-Binärdatei
<< lshift 55 Binär von L nach R
>> rshift 55 Binär von L nach R
< lt 50 L-zu-R binär
<= lt_or_eq 50 L-zu-R-Binärdatei
> GT 50 L-zu-R-Binär
>= gt_or_eq 50 L-zu-R-Binärdatei
!= not_eq 45 L-zu-R-Binärdatei
== Gleichung 45 L-zu-R binär
& bit_and 44 L-zu-R-Binärdatei
^ bit_xor 43 L-zu-R-Binärdatei
| bit_or 42 L-zu-R-Binärdatei
&& und 41 L-zu-R-Binärdatei
|| oder 40 L-zu-R binär
, Tupel 35 L-zu-R binär
,, Stream Concat 33 L-zu-R-Binärdatei
$ Stream 32 R-zu-L-Unärpräfix
$$ list 32 R-zu-L-Unärpräfix
%= mod_assign 30 R-zu-L-Binärdatei
*= mpy_assign 30 R-zu-L-Binärdatei
+= add_assign 30 R-zu-L-Binärdatei
-= sub_assign 30 R-zu-L-Binärdatei
/= div_assign 30 R-zu-L-Binärdatei
= 30 R-zu-L-Binärwerte zuweisen
; SEQ 10 L-zu-R-Binärdatei
MATHEMATIK BEFEHLE:
n=min(ab) – Minimum von a und b zurückgeben
n=max(ab) – Maximum von a und b zurückgeben
n=abs(a) – Gibt den absoluten Wert von a zurück
dbl=exp(x) – gibt den Wert e hoch x zurück
dbl=log(x) – gibt den natürlichen Logarithmus von x zurück
dbl=log10(x) – gibt den Logarithmus zur Basis 10 von x zurück
dbl=log2(x) – gibt den Logarithmus zur Basis 2 von x zurück
dbl=pow(xy) – gibt den Wert von x hoch y zurück
dbl=acos(x) – gibt den Arkuskosinus von x im Bogenmaß zurück
dbl=asin(x) – gibt den Arkussinus von x im Bogenmaß zurück
dbl=atan(x) – gibt den Arcustangens von x im Bogenmaß zurück
dbl=atan2(yx) – gibt den Arcustangens von y über x zurück
dbl=cos(x) – gibt den Kosinus von x Bogenmaß zurück
dbl=sin(x) – gibt den Sinus von x Bogenmaß zurück
dbl=tan(x) – gibt den Tangens von x Bogenmaß zurück
dbl=sqrt(x) – gibt die Quadratwurzel von x zurück
dbl=pi() – gibt den Wert von pi zurück
dbl=radtodeg(dbl) – Bogenmaß in Grad umrechnen
dbl=degtorad(dbl) – Grad in Bogenmaß umwandeln
num=floor(num) – gibt den nächsten ganzzahligen Wert zurück, der kleiner oder gleich dem Argument ist
num=ceil(num) – gibt den nächsten ganzzahligen Wert zurück, der größer oder gleich dem Argument ist
num=round(num) – gibt den nächsten ganzzahligen Wert zurück
AFFIN TRANS UND MATRIX BEFEHLE:
point=xform(x,y a00,a01,a10,a11,a20,a21) – affine Transformation von x,y-Koordinaten
affine=invert(a00,a01,a10,a11,a20,a21) – affine Transformation umkehren
Matrix=xpose(Matrix) – transponiert eine beliebige Matrix
Matrix=Matrix*Matrix – Matrixmultiplikation
STATISTISCH/ZUFÄLLIG BEFEHLE:
sum(val1[,val2[,...,valn]]) – Summe der Werte zurückgeben
mean(val1[,val2[,...,valn]]) – Gibt den Mittelwert der Werte zurück
var(val1[,val2[,...,valn]]) – gibt die Varianz der Werte zurück
stddev(val1[,val2[,...,valn]]) – Standardabweichung der Werte zurückgeben
rand([minval,maxval]) – Zufallszahl zwischen 0 und 1 oder minval,maxval zurückgeben
srand(seedval) – Seed-Zufallszahlengenerator
LISTE BEFEHLE:
lst=list([olst|strm|val] :strmlst :attr :size n) – Liste erstellen, Liste kopieren oder konvertieren
Strom
val=at(list|attrlist|str n :set val :ins val) – n-tes Element zurückgeben (oder danach festlegen oder einfügen).
in einer Liste oder Zeichenfolge
num=size(list|attrlist|str) – Größe einer Liste (oder eines Strings) zurückgeben
val=index(list|str val|char|str :last :all :substr) – Index des Werts zurückgeben (oder char oder
string) in der Liste (oder string), null, wenn nicht gefunden.
STREAM BEFEHLE:
val=next(stream) – Gibt den nächsten Wert vom Stream zurück
strm=stream(ostrm|list|attrlist|val) – Stream kopieren oder Liste konvertieren
cnt=each(strm) – Stream durchqueren und seine Länge zurückgeben
comp=filter(comps classid) – Comps-Stream nach passender classid filtern
STEUERN BEFEHLE (unter Verwendung von Post Auswertung):
val=cond(testexpr trueexpr falseexpr) – testexpr auswerten, und wenn true, auswerten und
Geben Sie trueexpr zurück, andernfalls werten Sie aus und geben Sie falseexpr zurück
val=if(testexpr :then expr :else expr) – testexpr auswerten und :then ausführen
Ausdruck, wenn wahr, der :else-Ausdruck, wenn falsch.
val=for(initexpr whileexpr [nexexpr [bodyexpr]] :body expr) – for-Schleife
val=while([testexpr [bodyexpr]] :nilchk :until :body expr ) – while-Schleife
val=switch(val key-body-pairs) – switch-Anweisung (:casen für pos., :case_n für neg.,
sonst :symbol)
continue – Springe zur nächsten Iteration der for- oder while-Schleife
break([retval]) – aus der for- oder while-Schleife ausbrechen
anderes BEFEHLE
help(cmdname [cmdname ...] :all :posteval) – Hilfe für Befehle
val=trace([flag] :get) – Trace-Modus umschalten oder festlegen
pause([msgstr]) – Skriptausführung bis C/R anhalten
step() – schaltet die schrittweise Skriptausführung um
fileobj|pipeobj=open([filename [modestr]] :pipe :in :out :err) – Befehl zum Öffnen einer Datei
close(fileobj|pipeobj) – Befehl zum Schließen der Datei
[str]=print([fmtstr] [val [val1 [... valn]]] :string|:str :out :err :file fileobj|pipeobj
:prefix str) – Wert mit optionaler Formatzeichenfolge ausgeben
str=gets(fileobj|pipeobj) – ruft eine mit einer neuen Zeile abgeschlossene Zeichenfolge aus einer Datei ab
val=global(symbol)|global(symbol)=val|global(symbol :clear)|global(:cnt) – Symbol erstellen
globale
int|lst=symid(symbol [symbol ...] | :max) – gibt die mit verknüpften Ganzzahl-ID(s) zurück
Symbol(e)
sym|lst=symbol(symid [symid ...]) – gibt Symbol(e) zurück, die mit Ganzzahl-ID(s) verknüpft sind.
val|lst=symval(symbol [symbol ...]) – Rückgabewert(e), die dem Symbol zugeordnet sind
Variablen(n)
sym|lst=symadd(sym|str [sym|str ...]) – Symbol(e) erstellen und ohne Suche zurückgeben.
sym=symvar(sym) – Symbol unverändert zurückgeben
str=symstr(sym) – gibt die String-Version des Symbols zurück
n=strref(str|symid) – Gibt die Anzahl der String-Referenzen zurück
lst=split(symbol|string :tokstr [delim] :tokval [delim] :keep :reverse) – geteiltes Symbol
oder Zeichenfolge in eine Liste von Zeichen (oder Token) einfügen.
str=join(clist :sym) – Liste von Zeichen zu einem String zusammenfügen
str=substr(str n|str :after :nonil) – Extrahieren Sie Zeichen aus einer Zeichenfolge (:nonil gibt zurück
Zeichenfolge, wenn keine Übereinstimmung vorhanden ist)
bool=eq(str1 str2 :n len) – teilweiser String-Vergleich
bool=eq(sym1 sym2 :sym) – Symbolvergleich
postfix(arg1 [arg2 [arg3 ... [argn]]]) – Echo nicht ausgewerteter Postfix-Argumente (mit
[narg|nkey] nach definierten Befehlen, {narg|nkey} nach undefinierten Befehlen, (narg) nach
Tasten und ein * nach Post-Evaluierungsbefehlen)
parse(fileobj) – analysiert einen einzelnen Ausdruck aus einer Datei
arr=posteval(arg1 [arg2 [arg3 ... [argn]]]) – jedes feste Argument nachbewerten (bis
Null) und Array zurückgeben
sym=attrname(attribute) – gibt das Namensfeld des gepunkteten Paares zurück
val=attrval(attribute) – Rückgabewertfeld des gepunkteten Paares
dotlst=dot(name) – leere Liste mit gepunkteten Paaren erstellen
quit() – Beende den Interpreter
exit() -- Beende die gesamte Anwendung
empty() – leere Anweisung
val=run(filename :str :popen) – Befehle aus Datei (oder String) ausführen
val=remote(hoststr portnum cmdstr :nowait) – Befehlszeichenfolge dann aus der Ferne auswerten
Ergebniszeichenfolge lokal auswerten
val=eval(cmdstr|funcobj [cmdstr|funcobj ...] :symret ) – Zeichenfolge (oder funcobj) auswerten als
Befehle geben optional ein Symbol anstelle von Null zurück
funcobj=func(body :echo) – kapselt einen Befehlskörper in ein ausführbares Objekt
val=shell(cmdstr) – Befehl in der Shell auswerten
du schläfst(ms) – Schlaf-Mikrosekunden
mute([flag]) – Mute-Flag setzen oder umschalten
nil([...]) – akzeptiert alle Argumente und gibt Null zurück
c=char(num :u) – Konvertieren Sie eine beliebige Zahl in ein Zeichen
s=short(num :u) – Konvertieren Sie eine beliebige Zahl in eine kurze Zahl
i=int(num :u) – Konvertieren Sie eine beliebige Zahl in eine Ganzzahl
l=long(num :u) – Konvertieren Sie eine beliebige Zahl in eine lange Zahl
f=float(num) – Konvertieren Sie eine beliebige Zahl in eine Gleitkommazahl
d=double(num) – Konvertieren Sie eine beliebige Zahl in ein Double
sym|lst=type(val [val ...]) – Typsymbol(e) für Wert(e) zurückgeben
sym|lst=class(val [val ...]) – gibt Klassensymbol(e) für Werte des Objekttyps zurück
int=ctoi(char) – Zeichen in Ganzzahl umwandeln
flag=isspace(char) – gibt true zurück, wenn das Zeichen ein Leerzeichen ist
flag=isdigit(char) – gibt true zurück, wenn das Zeichen eine numerische Ziffer ist
flag=isspace(char) – gibt true zurück, wenn das Zeichen alphabetisch ist
str=arg(n) – Befehlszeilenargument zurückgeben
n=narg(n) – Anzahl der Befehlszeilenargumente zurückgeben
num=nand(ab) – bitweises NAND (negiertes UND)
num=nor(ab) – bitweises NOR (negiertes ODER)
num=xnor(ab) – bitweises XNOR (negiertes XOR)
NUR IN SERVER MODE
str=timeexpr(comstr :sec n) – Befehlszeichenfolge zur regelmäßigen Ausführung
Nutzen Sie Comterp online über die Dienste von onworks.net