GCL v2.o
FormEye (& S++) GeCon XO [3] Language specification
GCLv2.o Copyright by Ivan Čukić
<file> |
::= <head>[13]<body> |
| Predstavlja ceo tekstualni fajl. [13] predstavlja CR/LF (ili samo CR). |
<head> |
::= $document [type "GeConXO3.0", caption "<bs>"] |
| Predstavlja zaglavlje fajla po kome se prepoznaje MIME tip text/gcl2. |
<body> |
::= {<segment>} |
| Predstavlja glavni deo programa - deo za navodjenje naredbi GCL2 jezika. |
<segment> |
::= <vardef>|<varass> |
| Predstavlja jednu naredbu GCL2. |
<vardef> |
::= <type> <varname> = new <type>(<params>); |
| Predstavlja definisanje promenljive koje uzrokuje odvajanje memorijske lokacije ja dati objekat i kreiranje klase. |
<varass> |
::= <varname> = <param>|<varname>{.<varname>}; |
| Predstavlja dodeljivanje vrednosti odredjenoj promenljivoj. |
<type> |
::= .<vcmp> |
| Tip promenljive mora da počinje sa tačkom. |
<varname> |
::= <vcmp> |
<vcmp> |
::= <slovo>{<slovo>|<cifra>|_} |
| VCMP - Variable CoMPatible. |
<params> |
::= |<param>{, <param>} |
| Predstavlja parametre koji se prosledjuju konstruktorima klasa. |
<param> |
::= <vcmp>|"<bs>"|<broj> |
| Promenljiva, String ili neki broj (realni ili celi). |
<bs> |
::= <chr>{<chr>} |
| Bilo šta osim navodnika. |
<broj> |
::= [+|-]<cifra>{<cifra>}<.[cifra>{<cifra>}] |
<chr> |
::= <slovo>|<cifra>|_|.|... |
<mslovo> |
::= a|..|z |
<vslovo> |
::= A|..|Z |
<slovo> |
::= <vslovo>|<mslovo> |
<cifra> |
::= 0|..|9 |
GeCon XO program je nastao kao naslednik programa Geometrical Constructor 1.0, koji je bio
seminarski rad moje sestre, namenjenog
crtanju geometrijskih konstrukcija. Od ove verzije programa sintaksa je potpuno promenjena
tako da asocira na programske jezike C i Java. Azbuka ovog jezika je ASCII (nije testirano,
ali bi trebalo da radi i sa svim UNICODE znakovima jer je program
100% PureJava).
Jezik je CaseSensitive
Evo jednog primera GCL 2.o fajla:
$document [type "GeConXO3.0", caption "Krugovi"]
.point A = new .point(10, 5);
.point B = new .point(5, 5);
.point C = new .point(7, 14);
.circle k = new .circle(0, 0, 5);
.circle k1 = new .Circle(A, 5);
.circle k2 = new .Circle(B, 5);
.circle k2 = new .CircleRadius(A, B);
.segment a = new .Segment(B, C);
.segment b = new .Segment(A, C);
.segment c = new .Segment(B, A);
[EOF]