From: Doni Pracner Date: Thu, 20 Feb 2014 21:43:19 +0000 (+0100) Subject: Drugi dodatak - o XDS-u i komandnoj liniji X-Git-Tag: v14b~1 X-Git-Url: http://svarog.pmf.uns.ac.rs/gitweb/?p=spa1skripta-public.git;a=commitdiff_plain;h=2da51a73cc16b049a2f21f22cde76815b0e46497 Drugi dodatak - o XDS-u i komandnoj liniji --- diff --git a/skripta-spa1-sadrzaj.tex b/skripta-spa1-sadrzaj.tex index 95c7569..5edfeb8 100644 --- a/skripta-spa1-sadrzaj.tex +++ b/skripta-spa1-sadrzaj.tex @@ -2507,6 +2507,9 @@ END Rek2. \pagenumbering{Roman} \input{xds-uputstvo} +\sectionbreak +\input{xds-komandna-linija} + \mainend diff --git a/xds-komandna-linija.tex b/xds-komandna-linija.tex new file mode 100644 index 0000000..a1f1a26 --- /dev/null +++ b/xds-komandna-linija.tex @@ -0,0 +1,178 @@ +\section{XDS modula 2 - rad iz komandne linije} + +Ovo uputstvu ukratko pokriva kako se XDS kompajler može podesiti da se +koristi iz komandne linije, na Windows, ali i *nix sistemima. + +Predpostavlja se da je XDS Modula 2 već instalirana (konsultovati +odvojeno uputstvo ako nije). Takođe će se predpostavljati da je +instalirana na podrazumevanu lokaciju ``c:/xds/''. Ako to nije slučaj, +potrebno je zameniti putanje iz upustva sa stvarnom putanjom. + +\subsection{Prednosti (ili ``Zašto ovo raditi?'')} + +Skoro svaki jezik se može kompajlirati iz komandne linije, i onda se +rad sa različitim jezicima svodi na rad u svom omiljenom editoru +teksta (npr Notepad++, jEdit, joe, emacs...), koji je prilagođen +sopstvenim zahtevima i pozivanjem odgovarajućeg kompajlera iz komandne +linije. + +U konkretnom slučaju XDS kompajlera, ovim se takođe oslobađa potrebe +kreiranja projekata koji su neophodni kad se koristi XDS windows +okruženje - bilo koji pojedinačni modul se može direktno kompajlirati, +fajlovi se mogu premeštati po folderima, menjati imena foldera i tako +dalje. + +Još jedna prednost za studente PMF-a koji polažu ispite u okruženju +Svetovid je što u njemu dobijaju potpuno iste poruke od kompajlera kao +što se dobijaju izvršavanjem kompajliranja iz komandne linije. + +\subsection{Podešavanje sistemske putanje (ili "OK, odakle početi?")} + +Da bi kompajler mogao da se poziva iz bilo kog foldera na računaru, a +ne samo iz ``C:/xds/bin'', potrebno je dodati folder kompajlera u +sistemsku putanju (tj spisak foldera koji se pretražuju kada korisnik +pokuša da pokrene neku komandu). Na Windows sistemima se ova +promenljiva naziva ``PATH'', a trenutnom sadržaju se može pristupiti +preko \%PATH\%. + +Putanja se može dodati privremeno komandom: + +\begin{codeblock} + path = %PATH%;c:/xds/bin +\end{codeblock} + + +ovim se proširuje spisak putanja u trenutom komandom prozoru, odnosno +važiće samo u trenutno otvorenom cmd promptu i to dok se isti ne +zatvori. + +Putanja se može i trajno dodati na nekoliko načina. Na win xp, Vista i +7 sistemima se to može uraditi na sledeći način: otvori se ``computer +properties'' (desni klik na "My Computer"), odabere se jezičak +"advanced", klikne na dugme "Environment variables", u prozoru koji se +otvori odabere se ``PATH'' i klikne na dugme "edit", nakon čega se na +postojeću vrednost doda ``c:$\backslash$xds$\backslash$bin''. Bitno je +da se ne obriše postojeća vrednost, kao i da se novi dodatak odvoji sa +``;'' od postojećih. + +\subsection{Kompajliranje programa} + +Nakon što je podešena sistemska putanja, kompajleru se pristupa komandom "xc". Poziv bez parametara će dati ispis mogućnosti. Tipična upotreba za kreiranje izvršne verzije programa sadržanu u fajlu "ime.MOD": + +\begin{codeblock} + xc =make =all ime +\end{codeblock} + + +Ovim pozivom će se rekompajlirati i svi ostali potrebni moduli koji se koriste u okviru programa. + +Ako postoje greške u programu izvršna verzija neće biti kreirana. Ako već postoji exe napravljen nekim prethodnim kompajliranjem, on NEĆE biti obrisan. + +Kompajler greške prijavljuje u sledećem formatu: + +\begin{codeblock} + * [zad.mod 125.12 E020] * undeclared identifier "RStr" IO.$RStr(ime); +\end{codeblock} +% $ nepotrebni komentar zbog sintaksnog bojenja u nekim editorima + + +Odnosno ime fajla, red greške i kolona razdvojeni tačkom i kod greške +koji počinje sa ``E''. Sam kod greške nije previše bitan, pošto u +sledećem redu sledi objašnjenje. Ono što jeste bitno je da se u istom +formatu prikazuju i upozorenja kompajlera čiji kodovi počinu sa ``W'' i +po ovome se najlakše razlikuju. + +Takođe treba obratiti pažnju na to da nakon objašnjenja greške sledi i +ispis samog reda u kome je greška u koji je dodatno ubačen karakter +``\textbf{\$}'' koji označava tačno nesto greške. Ako se on nalazi na +početku reda često je u pitanju greška iz prethodnog reda (npr +nedostaje ``;''). Konkretna prikazana greška je pogrešno napisano +``RdStr''. + +\subsection{Linux i drugi slobodni sistemi (ili "Who needs windows anyway?")} + +Korisnici Linux (i srodnih) sistema takođe mogu koristiti XDS Modulu +2, i to i okruženje i kompajler iz komandne linije. + +Prvo rešenje je korišćenje Linux verzije XDS kompajlera. Međutim ona +se ponaša malo drugačije, nema vizuelno okruženje i, što je +najznačajnije za studente PMFa, nema Top Speed Compatibility Pack koji se +koristi na vežbama. + +Ono što je najbolje rešenje u ovoj situaciji je koriščenje sloja za +emuliranje Windowsa - "Wine". + +Potrebno je pokrenuti instalaciju XDS paketa, isto kao i pod windowsom +(ili alternativno preuziti strukturu foldera iz windowsa i prekopirati +u Wine-ov ``C'' disk). + +Ovako instaliran XDS se može koristiti i kao normalno programsko +okruženje koje se koristi pod Windowsom. + +Ono što je inače bila poenta ovog uputsva u celini je bilo korišćenje +iz komandne linije. + +Da bi kompajler radio u bilo kom folderu, potrebno je namestiti PATH +pod Wine-om. Treba obratiti pažnju da to NIJE ista PATH variabla kao +ona od Linux sistema. Ovo se može uraditi na sledeći +način\footnote{Link: uputstvo za sistemske promenljive na + zvaničnom sajtu softvera Wine:\\ + \href{http://www.winehq.org/docs/wineusr-guide/environment-variables}{http://www.winehq.org/docs/wineusr-guide/environment-variables}}: +\begin{itemize} + \item Otvori se regedit pod wine-om (wine regedit) + \item nađe se ključ HKEY\_CURRENT\_USER/Environment + \item promeni se polje ``path'' tako da uključuje i xds bin folder. obratiti pažnju da je potrebno ubaciti dodatni "$\backslash$", pa će krajnja vrednost izgledati ovako nekako: \\ +\textbf{c:$\backslash$$\backslash$windows;c:$\backslash$$\backslash$windows$\backslash$$\backslash$system;c:$\backslash$$\backslash$xds$\backslash$$\backslash$bin} +\end{itemize} + + +Nakon ovoga se u bilo kom folderu može vršiti poziv + +\begin{codeblock} + wine xc =make =all zad +\end{codeblock} + + +predpostavljajući naravno da u folderu postoji ``zad.mod'' i da je u +pitanju ispravan programski modul, biće kreiran ``zad.exe'' koji se +onda može pokrenuti sa + +\begin{codeblock} + wine zad +\end{codeblock} + + +Jednostavni programi koji rade sa tekstualnim ulazom i izlazom će +najčešće raditi bez problema. U zavisnosti od verzija programa nekad +se dešava da kada ovako pokrenut program čeka na unos sa tastature +pravi veliko zauzeće procesora. + +Postoji i opcija da se otvori novi terminal prozor koji vrši kompletnu +emulaciju komandnog promta operativnog sistema DOS 6. Npr: + +\begin{codeblock} + wineconsole zad +\end{codeblock} + + +Ovako pokrenut program će se ponašati identično kao na Windowsu i neće +nepotrebno povećavati zauzeće procesora. Međutim odmah nakon završetka +rada pokrenute komande (tj programa zad u primeru) novi prozor će se +zatvoriti, što je problem ako je trebalo pročitati izlaz +programa. Rešenje za ovo je otvaranje terminala u kome se izvrašava +cmd, tj klasični dos promt: + +\begin{codeblock} + wineconsole cmd +\end{codeblock} + + +U ovako otvorenom promtu se mogu naravno izvršavati sve komande, iako +će interakcija biti nešto drugačija od naviknute u modernim konzolama +(tipa ispisivanja čudnih kodova umesto kretanja okolo kad se +pritiskaju strelice). + +%%% Local Variables: +%%% mode: latex +%%% TeX-master: "skripta-spa1-jk" +%%% End: