A SICAD programozási nyelv

Típusok, típuskonstrukciók

Egész számok

Számjegyek sorozata (opcionálisan előjellel). Értéktartomány:

LONG_MIN <= érték <= LONG_MAX

A LONG_MIN és LONG_MAX érték implementáció-függő.

Valós számok

Egy valós szám a következőkből épül fel: opcionálisan előjel, az egész rész számjegyei, tizedespont, a tizedes pont utáni számjegyek, e/E/d/D, opcionális előjel, az exponens számjegyei.
Vagy az egész, vagy a tizedes rész elhagyható (de nem egyszerre).
Vagy a tizedespont és az azt követő tizedesjegyek, vagy az exponens elhagyható (de nem egyszerre).
Értéktartomány:

DBL_MIN <= érték <= DBL_MAX

A DBL_MIN és DBL_MAX érték implementáció-függő.

Pozíciók

Két különálló valós szám szóközzel elválasztva. Értéktartomány:

A valós számoknak megfelelő határok érvényesek.

Az értékeket megadhatjuk egész számként is, akkor is valósként tárolódnak.

Konstansok

A SICAD parancsnyelvben 4 típusa van a konstansoknak:

Logikai konstansok

A két logikai konstans az azonosan igaz és hamis jelölésére:

.T. - "igaz"
.F. - "hamis"

Szöveg konstansok

A szövegkonstans tetszőleges karakterek sorozata aposztrófok között. Ha kérdőjelet is tartalmaz, akkor dupla idézőjelet kell írni ezen a pozíción. Egy másik speciális karakter az "&" jel. Ennek a karakternek speciális jelentése van, ez a kitöltő karakter az eljárások paraméterezésénél. Egy felkiáltójellel tudjuk elnyomni a speciális jelentést:

Hexa konstansok

A hexadecimális konstansok hexa számjegyekből állnak [0-9a-zA-Z], és "x'" vagy "X'" sztringgel kezdődnek, illetve aposztróffal végződnek. (pl: x'5F')

A hexadecimális jegyek számának párosnak kell lenni. A hexadecimális számok olyan karakterek reprezentációjára használhatóak, melyekre csak a kódjukkal tudunk hivatkozni. Hogy az adott szám melyik karaktert jelenti, az a megadott fontkészlettől függ.

Változók

A változók olyan tárolók szimbolikus reprezentációi, melyek változó értékeket tartalmazhatnak. Minden változóhoz egyértelműen adott a típusa és a mérete. Az érték hozzárendelése a változóhoz ezek figyelembevételével zajlik. A változók olyan tárolók szimbolikus reprezentációi, melyek változó értékeket tartalmazhatnak. Minden változóhoz egyértelműen adott a típusa és a mérete. Az érték hozzárendelése a változóhoz ezek figyelembevételével zajlik.

SICAD változók és globális változók

A SICAD és globális változók a parancsszintű számításokhoz használatosak. Ezekkel a változókkal paraméterezhetjük a SICAD parancsokat. A változók típusai:

logikai %L1 .. %L9 egész %I1 .. %I99 valós %R1 .. %R99 pozíció %P1 .. %P99 szöveg %T1 .. %T99

A globális változókra hasonlóan hivatkozhatunk, csak a típust meghatározó betű elé egy "g" betűt kell írni. (pl. %gi10)

Változók indexelése

A fenti SICAD és globális változók indexelhetőek, a típust jelölő karakter után kell egy számot, vagy egy szám értékű kifejezést írni. Például:

%T19, %R(%I2-3), GI(2*%I2+%i1), stb.
Változó-intervallumok

Változó-intervallumokon változók egy összefüggő sorozatát értjük. Formája:

%typ(m:n)

A typ a szokásos típust meghatározó karakter, m és n pedig egészek, melyen az intervallum elejét illetve végét határozzák meg.

Vannak parancsok, melyek ilyen intervallumokat várnak paraméterként. Például:

%GR(3:17)
Szabadon elnevezhető SICAD változók

Definiálhatunk saját elnevezésű változókat is, hiszen az eddig tárgyaltak esetén a nevük és számuk is előre definiált volt. Ezek a következő szintaxist követik:

Ezeket a változókat használat előtt definiálni kell. Erre a DEFINE parancs használható.

Rendszerváltozók

A %ERROR változó jelzi az előző parancs sikeres vagy sikertelen voltát. Logikai változó. Az %NSEL egész típusú változó az aktuálisan szelektált elemek számát tartalmazza.

Kifejezések

Egy egyszerű kifejezés lehet egy konstans, változó vagy kérésszimbólum. Általános esetben a kifejezés egy struktúra, melyben konstansok változók és kérésszimbólumok:

Aritmetikai kifejezések

Egy aritmetikai kifejezés lehet:

Aritmetikai függvények

Az előjel operátorok a "+" ill. "-" zárójel nélkül is alkalmazhatóak.
Az aritmetikai függvények aritmetikai értéket adnak vissza. A szokásos szögfüggvények (sin, cos,...), az exp, sqrt, log függvények mellett érdekes még az "x", "y", "dist" függvény, amelyek pozíció típusú paramétereket várnak. Az első kettő az x ill. y koordinátákat adja vissza, a harmadik két pozíció távolságát adja meg.

Aritmetikai műveletek

Ezek két aritmetikai kifejezést kapcsolnak össze, és a szokásos műveleteket jelentik: "**" (hatványozás művelete), "*", "/", "+", "-".

Pozíció kifejezések

Egy pozíció kifejezés lehet:

Pozíció függvények

A pozíció függvények aritmetikai értékből (valós értékű) állítanak elő pozíciót. Az "X" és "Y" mint postfix operátorok használatosak, ilyenkor a vektor másik komponense 0. A "V" két operandusa a vektor első és második komponense.

Pozíció műveletek

A műveletek között megtaláljuk a pozíciók közötti összeadást, kivonást, ezenkívül lehet skalárral szorozni és osztani is.

Összehasonlító kifejezések

Az összehasonlító műveletek vagy két aritmetikai kifejezést, vagy két pozíció kifejezést hasonlítanak össze és logikai értéket adnak vissza.

Aritmetikai összehasonlítás

Az aritmetikai összehasonlítás a szokásos matematikai értelemben vett kisebb, nagyobb, egyenlő stb. vizsgálatát jelenti.
Az operátorok:

.GT. Nagyobb, mint .GE. nagyobb vagy egyenlő .EQ. egyenlő .NE. nem egyenlő .LT. Kisebb, mint .LE. kisebb vagy egyenlő
Pozíció összehasonlítás

Pozíciókat is összehasonlíthatunk, de itt csak az egyenlőség (ill. nem egyenlőség) vizsgálata megengedett.

.EQ. .NE.
Logikai kifejezések

Egy logikai kifejezés lehet:

Logikai műveletek

Az egyargumentumú negálás logikai művelet. Perfix operátor és egybe kell írni az argumentumával:

.NOT.

A kétargumentumú logikai műveletek:

.AND. konjunkció .OR. diszjunkció .EQV. ekvivalencia .NEQV. nem ekvivalens
Szöveges kifejezések

Egy szöveges kifejezés lehet:

A részszógenerálás csak SICAD változók esetén megengedett. Ennek formája a következő:

%Tn(int1,int2)

Itt int1 és int2 egész kifejezések.

Layer kifejezések

Ezek a kifejezések layer-ek egy halmazát írják le. Egy kifejezés layer specifikációk vesszővel vagy szóközzel elválasztott listája. Az egész kifejezés zárójelbe is tehető. Ekkor figyelni kell arra, hogy a nyitó zárójel után és a záró zárójel előtt legyen egy szóköz, mert különben a rendszer aritmetikai vagy pozíció kifejezésként akarja értelmezni.