Operátorok

A VIK Wikiből
A lap korábbi változatát látod, amilyen (vitalap) 2012. október 21., 20:09-kor történt szerkesztése után volt. (Új oldal, tartalma: „{{GlobalTemplate|Infoalap|PrologElm6}} * fejezetek: 3.1.5 * fóliák: I.50-58 ==3.1.5 Operátorok== Az operátorok „szintaktikus édesítőszerek”, mert…”)
(eltér) ← Régebbi változat | Aktuális változat (eltér) | Újabb változat→ (eltér)
Ugrás a navigációhoz Ugrás a kereséshez

Ez az oldal a korábbi SCH wiki-ről lett áthozva. Az eredeti változata itt érhető el.

Ha úgy érzed, hogy bármilyen formázási vagy tartalmi probléma van vele, akkor kérlek javíts rajta egy rövid szerkesztéssel.

Ha nem tudod, hogyan indulj el, olvasd el a migrálási útmutatót


  • fejezetek: 3.1.5
  • fóliák: I.50-58

3.1.5 Operátorok

Az operátorok „szintaktikus édesítőszerek”, mert a kifejezés beolvasását követően eltűnnek, a rendszeren belül a kifejezés szabványos alakú lesz. Pl.:

S1+S2>1000.= hívás alapstruktúra alakja: =>(+(S1, S2), 1000).

Új operátor létrehozása:

:- op(<prioritás>, <fajta>, <operátornév>).
:- op(500, xfx, --).

Operátoros kifejezés:

<összetett kifejezés> ::= <struktúranév> (<argumentum>, ...)  
								| <argumentum> <operátornév> <argumentum>			 % infix kifejezés 
								| <operátornév> <argumentum>							  % prefix kifejezés 
								| <argumentum> <operátornév>							  % posztfix kifejezés 
 
<operátornév> ::= <struktúranév> 

Az operátornév tetszőleges névkonstans lehet, egyszerre több (azonos prioritású és fajtájú) operátort is létrehozhatunk: a harmadik paramétert szögletes zárójelbe tesszük és vesszővel választjuk el az operátorokat (pl.

:- op(500, yfx, [+, -]).

).

A prioritás egy egész szám 1 és 1200 között. A kisebb prioritású operátorok előbb zárójeleződnek mint az ugyanolyan fajtájúak. A 0 prioritás megszünteti az operátort.

A fajta jellemző azt határozza meg, hogy az azonos prioritású operátorok hogyan zárójeleződjenek. Az f szemlélteti az operátort,

  • x: az adott oldalon nem állhat azonos prioritású operátor zárójelezetlenül
  • y: az adott oldalon állhat azonos prioritású operátor zárójelezetlenül

Pl: infix operátorok esetén

  • yfx balról jobbra zárójelez, ilyen a + és a - is.
  • xfy jobbról balra zárójelez.
  • xfx nem engedi egyik oldalt se az azonos precedenciájú zárójelezetlen operátort, ilyen a > és a < is.

A fajta lehetséges értékei: xfx, xfy, yfx (infix), fx, fy (prefix), xf, yf (postfix).

A Prolog operátorok előnyei:

  • lehetővé teszi az ismert matematikai leírásokat
  • metaprogramozásra is lehetőséget ad
  • könnyen olvashatóvá teszi a kódot

Hátránya viszont hogy az operátor definiciónak nem lokális a hatása (bármikor felüldefiniálható a használt operátor prioritása)