PCPROG.1

20 Sep 1991 - 03 Dec 1992

Topics

  1. ms.dos (235)
  2. cccc (0)
  3. asembler (321)
  4. pascal (896)
  5. clipper (1059)
  6. zastita (239)
  7. basic (178)
  8. baze.podataka (116)
  9. novi.fajlovi (66)
  10. algoritmi (52)
  11. razno (707)
  12. van.teme (126)
  13. unknown (986)

Messages - unknown

unknown.106 alexa, -> #104, fric
> Treba na uradim program koji je u suštini interpreter - čita red > po red iz text fajla, analizira, radi razne radnje. Kako bi > se pisanje takvog programa moglo olakšati/ubrzati pomoću flexa > ? Ako je stvarno u pitanju interpreter, najviše bi ti odgovarala kombinacija bison-flex odnosno yacc-lex. Posao oko analize ulaznog teksta se značajno smanjuje, čini se sistematičnijim pa se smanjuje i mogućnost greške itd. Istina, u početku je potrebno potrošiti dosta vremena na upoznavanje sa 'mašinerijom'. Obično se kao primer daje realizacija nekog kalkulatora pomoću yacc-a i lex-a. Nažalost, nemam ovaj primer u obliku datoteke. Inače, mogu da ti garantujem da Microsoft C za sintaksnu analizu - parsing koristi analizator generisan pomoću yacc-a, a uveren sam da je i leksički analizator generisan pomoću lex-a.
unknown.107 beki,
Sad kada imamo LEX, logicni nastavak: Ima li neko YACC ? Beki
unknown.108 nkbog, -> #107, beki
> Sad kad imamo LEX, logicni nastavak: Ima li neko YACC 1001. put: imas bison (sto je u stvari YACC) u UNIX dir-u, a imas i Brekli YACC u PC.SOFT:unix (su .EXE verzijom za ms.dos) pa biraj. NB.
unknown.109 dejanr,
Za ljubitelje Borland C-ova: izašao je novi C++ (3.0) i par drugih alatki. Više o tome u NOVOSTI/bix 5.43 i 5.44
unknown.110 dlozic,
Evo jednog programcica sa sourceom u c-u. Najbolja ideja! dont.zip
unknown.111 andra, -> #110, dlozic
Nisi valjda ??? :)))))))))))))))))))))
unknown.112 ppekovic, -> #110, dlozic
>> Evo jednog programcica sa sourceom u c-u. Najbolja ideja! Ovo je verovatno trebalo ići u viceve jer je ovo program koji ne radi ništa, uostalom, pogledajte DOC fajl: Pre nekoliko meseci (godinu dana) dobio sam program Don't i odusevio sam se idejom. S obzirom da sam ga SLUCAJNO izbrisao, napisao sam ga ponovo (sa izvinjenjem autoru). U ovoj arhivi imate source, izvrsnu verziju i ovaj doc. file. Evo ga uputstvo kakvog ga se secam: Da li ste umorni od dugih programa i uputstava? Ako jeste Don't je prava stvar! Samo napisite sta netreba da se radi i on to nece uraditi. Primer: A:\>dont format my hard disk nece formatirati vas hard disk! Ovo je prva i konacna verzija (100% bug free). Program je shareware i ako ga koristite posaljite $1000000 autoru. Evo ga source u c-u: #include <stdio.h> main(argc,argv) char *argv[]; int argc; { int i; printf("Ok. I won't"); if (!--argc) printf(" do anything!\n"); else { for (i=1;i<argc+1;i+=1) printf(" %s",*++argv); printf(".\n"); } } Paya
unknown.113 bojanp, -> #110, dlozic
> Evo jednog programcica sa sourceom u c-u. Najbolja ideja! Imam ja jos bolju: Don't buy computer!
unknown.114 zocha,
Zna li neko u cemu je razlika izmedju: 1. char a; 2. char *a; 3. char * a; 4. char* a; - Zocha@Rista -
unknown.115 zocha,
Imam problem koji ne mogu nikako da resim. Naime, otvorim datoteku za citanje, procitam prvi slog u datoteci, kad ono sadrzaj prvog polja ne odgovara stvarnom sadrzaju tog polja. Razlika je u tome, sto mi program (compajler?) na neobjasnjiv nacin u sredinu polja doda ascii znake 239 i 001 (dekadno). Pokusavao sam da pre otvaranja datoteke polja resetujem (popunim) znacima blanko, ali ne vredi, ovi "fantomski znaci" se uvek javljaju i to na istim mestima u polju (slogu). Ima li neko ideju o cemu se radi?? - Zocha@Rista -
unknown.118 dlozic, -> #111, andra
aaaaaaaaaaaaaahaaaaaaaaaaa!
unknown.119 dlozic, -> #112, ppekovic
Pa, moglo je i u viceve, ali mozda nekome bude korista... Tek da ga kasnije ne premestam :) a mogu i u viceve da ga stavim (ako ljudi pokazu interesovanje...)
unknown.120 mjova, -> #114, zocha
> 1. char a; definicija promenljive a kao char. > 2. char *a; > 3. char * a; > 4. char* a; definicaj pointera na niz char, sve ima isti smisao.
unknown.121 ppekovic, -> #115, zocha
>> Imam problem koji ne mogu nikako da resim. Naime, otvorim datoteku za >> citanje, procitam prvi slog u datoteci, kad ono sadrzaj prvog polja ne >> odgovara stvarnom sadrzaju tog polja. Razlika je u tome, sto mi program >> (compajler?) na neobjasnjiv nacin u sredinu polja doda ascii znake 239 i 001 >> (dekadno). Bilo bi korisno kada bi napisao kako ti izgleda deo programa koji pravi probleme. Paya
unknown.122 zocha, -> #121, ppekovic
#include <conio.h> #include <stdio.h> #include <stdlib.h> #include <string.h> #define Imenik "TELEFONI.DAT" #define DuzinaIzlaznogSloga 55 #define MaxBrojPolja 2 typedef struct { char Ime[40]; char Telefon[15]; } Slog; void main() { FILE *UlDat; Slog *IzlazniSlog; strcpy (IzlazniSlog->Ime, " "); strcpy (IzlazniSlog->Telefon, " "); UlDat = fopen (Imenik, "r+"); fread (IzlazniSlog, DuzinaIzlaznogSloga, 1, UlDat); /* ----------------------------------------------------------------------- kada na ovom mestu pogledate sadrzaj sloga, u IzlazniSlog.Ime se nalaze pomenuti fantomski znaci ----------------------------------------------------------------------- */ fclose (UlDat); }
unknown.123 zzivotic, -> #122, zocha
> void main() > { > FILE *UlDat; > Slog *IzlazniSlog; > > strcpy (IzlazniSlog->Ime, " "); > strcpy (IzlazniSlog->Telefon, " "); > > UlDat = fopen (Imenik, "r+"); > fread (IzlazniSlog, DuzinaIzlaznogSloga, 1, UlDat); Imao si sreće - posledica ovakvog programa je češće zaglavljivanje računara ;) Promenjiva IzlazniSlog je *pointer* - na šta on pokazuje to nigde nije definisano. Dakle, treba ili prethodno: IzlazniSlog = malloc( DuzinaIzlaznogSloga ); ili jednostavno, umesto pointera koristiti promenjivu, dakle Slog IzlazniSlog; pa zatim: fread (&IzlazniSlog, DuzinaIzlaznogSloga, 1, UlDat); Pozdrav, zz
unknown.125 ddjj, -> #110, dlozic
==> (100% bug free). Program je shareware i ako ga koristite ==> posaljite $1000000 autoru. ^^^^^^^^ Pošto mi se program strašno dopao i intenzivni ga koristim šaljem autoru (koji je program napisao po sećanju) ono što je tražio. Nastavak je u datoteci money.arj. Dejan money.arj
unknown.126 mjova,
ovako, otvorim file kao text, učitam sa fread i normalno da se sekvenca CR-LF pretvara u LF. ovim je stvarna dužina niza (char) manja za broj redova (tj. sekvenci CR-LF). kako odrediti tu, novu dužinu. da li možda postoji neka bolja fora za učitavanje u memoriju char datoteke? SY
unknown.127 zocha, -> #123, zzivotic
> Promenjiva IzlazniSlog je *pointer* - na sta on pokazuje > to nigde nije definisano. Dakle, treba ili prethodno: > > IzlazniSlog = malloc( DuzinaIzlaznogSloga ); > > ili jednostavno, umesto pointera koristiti promenjivu, > dakle > > Slog IzlazniSlog; > > pa zatim: > > fread (&IzlazniSlog, DuzinaIzlaznogSloga, 1, UlDat); Aleluja! Mojoj sreci nigde kraja. Nemam reci zahvalnosti, stvarno. Samo cu da kazem da sam srecan isto onoliko, koliko me je ova zavrzlama dovodila do ludila (znaci puno). Primenio sam prvi predlog, jer u originalu programa, procitan slog prosledjujem funkciji za dalju obradu, a posto ne znam bolji nacin, to radim tako sto joj prosledim pointer na slog. Ili moze i bolje? - zocha@rista -
unknown.128 zzivotic, -> #127, zocha
> Primenio sam prvi predlog, jer u originalu programa, procitan slog > prosledjujem funkciji za dalju obradu, a posto ne znam bolji nacin, to > radim tako sto joj prosledim pointer na slog. Ili moze i bolje? Pa sve jedno, i ako je struktura statički deklarisana možeš da proslediš adresu & operatorom tako da tvoja funkcija za obradu ostaje ista, recimo: obradi( &IzlaziSlog ); Odluka da li dinamička ili statička alokacija je najčešće pitanje ukupnog dizajna programa. Pozdrav, zz
unknown.129 bearboy, -> #102, bojt
> Nemam ja to, samo u principu znam kako rade kompajleri pod > Pharom. Thanx
unknown.130 vpetrovic,
Našao sam na TRICKLE-u program za simulaciju buba švabe sa source-om u C. To je neka vrsta simulacije neuro-mreže. Ako nekog zanima UL-ovaću. Sem toga, baš me zanima da li još nekog zanimaju slične teme (mislim na neuro-mreže, a ne na bubašvabe)
unknown.131 mjova, -> #126, mjova
> otvorim file kao text, učitam sa fread i normalno da se > sekvenca CR-LF pretvara u LF. ovim je stvarna dužina niza nema veze, rešio sam problem. SY
unknown.132 dlozic, -> #130, vpetrovic
uploaduj! zanima me sve u vezi neuronskih mreza i sl. mogu ti uploadovati i demo mog programa za dizajniranje&simulaciju. imam i jednu lepu knjigu samo o n.mr. (knj. je 550 str)
unknown.133 djelovic,
Upravo sam sa Trickla dobio par casopisa CNEWS, i samo hocu da vas obavestim da se ne trudite da ih DL-jete, jer su totalno sranje. Usput, ako nekog zanima mala klasa (C++) za rad sa DXF (Autocad) fajlovima, javite se.
unknown.134 dlozic, -> #125, ddjj
Nisam stigao da se zahvalim do sada (morao sam da prebrojim)... Sada imas i pismenu potvrdu autora da mozes da ga koristis! Potpis: JA
unknown.135 vpetrovic, -> #132, dlozic
Evo stiže. Nego imam (opet sa trickle-a) i program za dizajniranj & simulaciju. Mogu ja i to da ul. Nego ajd'mi pozajmi tu lepu knjigu za jedan kratak vremenski period, ako nije neki problem. Vlada nerves.zip
unknown.136 dragan.juric, -> #126, mjova
Procitao sam da si resio, ali mozda ce ti ovo pomoci za svetlu buducnost. Prvo, pitanje je sta ucitavas : tekst ili podatke ? ako je tekst, predlog ti je niz pointera ( char **) pa ucitavaj svaki red zasebno u jedan od njih. ako su neki podaci, probaj C++ - imas kontejnerske klase (tj podatke koji sadrze podatke) i koji imaju procedure za snimanje onoga sto sadrze, a mozes i sam dopisati ( za ozbiljniji rad i moras). Rezultat je verovatno najelegantniji program koji na tu temu moze da se sastavi
unknown.137 mjova, -> #136, dragan.juric
> Prvo, pitanje je sta ucitavas : tekst ili podatke ? text, neodređenog formata. > ako je tekst, predlog ti je niz pointera ( char **) pa > ucitavaj svaki red zasebno u jedan od njih. to sam i mislio, ali nisam probao jer sam imao neke gotove stvari koje nisam hteo da menjam. kad sam o tome razmišljao, primetio sam da je to najbolje rešenje, ali ja program uvek pišem od kraja :) pa sam tako sad došao na težu opciju, koju sam nekako rešio (CR preskačem, a LF tretiram kao kraj reda). teško zaboravljam način razmišljanja spektrumovog asemblera, i to me užasno nervira. koliko sam uz njega naučio toliko me sad davi. > ako su neki podaci, probaj C++ - što se tiče onog ++, trenutno mi je dosta daleko jer nemam vremena da sednem i pročitam još neke stvari. hvala na savetu, možda se i predomislim. mjova
unknown.138 miljko,
Pitanje u vezi kompajlera TC2.0. Kako da ga nateram da mi u program koji se kompajlira u SMALL modelu, naprimer, ulinkuje recimo strcpy ili neku drugu funkciju iz recimo COMPACT modela? Ovaj problem mi se javlja, relativno često kad alociram memorju sa farmalloc ili sl. Stvar se naravno da rešiti tako što se elegantno sve kompajlira u COMPACT modelu, ali avaj. Za neki program koji radim pokupio sam PD biblioteku (sa TRICKLE-a) a ona ima podrsku samo za SMALL. U većini situacija se može snaći nekako (koristiti se mem f-jama, itd.), ali ja bih ipak voleo da znam elegantno rešenje. Miljko P.S. Biblioteka je PGRAF110 i sa njom se moze po stampacu crtati f-jama koje podsecaju na BGI interfejs. Ako ima interesenata...
unknown.139 mjova, -> #138, miljko
> farmalloc ili sl. Stvar se naravno da rešiti tako što se > elegantno sve kompajlira u COMPACT modelu, ali avaj. > Za neki program koji radim pokupio sam PD biblioteku (sa > TRICKLE-a) a ona ima podrsku samo za SMALL. pa, ako hoćeš u nekom drugom modelu, onda treba platiti? nisam siguran da ima neko jednostavno rešenje...
unknown.140 ndragan, -> #139, mjova
/ nisam siguran da ima neko jednostavno rešenje... motorola?
unknown.141 lazo,
VOZDRA C narode!!! Htio bih se počet bavit C-om, pa pitam da li neko zna nešto o MC20 - C kompajleru koji se nalazi na Sezamu. Da li je dovoljan za početak, da li ima nekih velikih razlika s ostalim vrstama C-jezika (mada su u biti svi isti, ili bi bar trebalo da je tako) i sl. Nadam se da će te mi pomoći i da ću onda znati da li treba da DL-jem tih 190K ili ne. Pozdrav Mickey.
unknown.142 ppekovic, -> #141, lazo
>> Htio bih se počet bavit C-om, pa pitam da li neko zna nešto o MC20 - C >> kompajleru koji se nalazi na Sezamu. Da li je dovoljan za početak, da li ima >> nekih velikih razlika s ostalim vrstama C-jezika (mada su u biti svi isti, >> ili bi bar trebalo da je tako) i sl. >> Nadam se da će te mi pomoći i da ću onda znati da li treba da DL-jem tih >> 190K ili ne. *** MICRO-C Features *** - Very easy to port, not tied to any processor architecture. - Lots of documentation (>200 pages) and example programs. Includes detailed information on porting the compiler. - Includes built-in and external pre-processors. - Includes post-processor optimizer for even better performance. - Over 130 library functions supplied (IBM PC version). - All source code for compiler, libraries and utilities is included. - Includes code generators for: 8080/8085/Z80, 80x86, 6809, 68HC11 - 80x86 implementation is MASM compatible and supports both the TINY and SMALL memory models. - More complete implementation, more efficent code produced, and faster compilation than most other "SMALL-C" compilers. *** MICRO-C Language Summary *** It does support: - All 'C' statements: if/else while do/while for break continue return goto switch/case/default šć ; - All 'C' operators: (Except structure reference: . and ->) + - * / % & đ ž << >> > < == č += -= *= /= %= &= đ= ž= <<= >>= >= <= != ! ++ -- ?: , () ŠĆ (++ and -- may be pre or post) ( * and & also perform INDIRECTION and ADDRESS OF) - The following data types (with no restrictions): int char unsigned (incl: unsigned char) extern static register - pointers to any type (including pointers) - Arrays of any type (including pointers) - Function can return any type (incl. pointers) - Typecast of value to above types - Multi-dimensional arrays. - Decimal, Octal and Hex constants eg: 127, 0177, 0x7f - Inline assembly code - Full support for strings and character constants: ('' "") Including: Đn Newline Đr Carriage return Đt Horizontal tab Đb Backspace Đf Formfeed Đ177 Octal constants Đx7f Hexidecimal constants (16 bit character constants are supported. eg: 'ab') - Fairly complete preprocessor - Integral pre-processor is very FAST and supports #define (non-parameterized) #include #ifdef/#ifndef/#else/#endif (single level) #asm/#endasm - External pre-processor supports: #define (fully parameterized) #undef #forget (multi undef -similar to forth forget) #include (with <> library support) #ifdef/#ifndef/#else/#endif (fully nested) #asm/#endasm (passed through & handled by integral) It does not support: - Structures and Unions, Typedef, Long / Double / Float and Enumerated data types, Bit fields. Paya
unknown.143 lazo, -> #142, ppekovic
Hvala, DL-vaću :))))))).
unknown.144 dgrbic, -> #141, lazo
:: Htio bih se pocet bavit C-om, pa pitam da li neko zna :: nesto o MC20 - C Ono sto ti je odgovorio PPekovic, stoji - pod uslovom da narucis MC20 od proizvodjaca. U fajlu koji je na Sezamu nedostaje source kompajlera (sto mislim da ti i nije mnogo bitno), i dat je generator koda SAMO za 8088, i biblioteke za IBM PC. Znaci, iz Payinog odgovora "izbaci" tih par pasusa, i to ti je. Inace, najveca mana mu je sto ne podrzava strukture. U conf. ORKA, tema PD.SOFT imas i Small C prikacen uz neku poruku (Bulaja nikako da ga prebaci u Dir). Prilozen je i kompletan source kompajlera i biblioteka, ali za njegovu upotrebu moras imati i assembler (ne prevodi direktno u .OBJ, nego pravi .ASM source). Jedan assembler imas u \IBMPC\PROG (cini mi se da se tako zove dir?) Takav postupak (.c -> .ASM -> .OBJ) je, cini mi se, dobar nacin da se ponesto nauci. Srecno ucenje!
unknown.145 bulaja, -> #144, dgrbic
│U conf. ORKA, tema PD.SOFT imas i Small C prikacen uz neku poruku │(Bulaja nikako da ga prebaci u Dir). └─── Prebaceno ;). \IBMPC\PROGRAM\sc88.zip Zahvaljujem dvidovic-u koji je svojevremeno poslao sc88.zip na prilogu.
unknown.146 mjova,
he, ne radim dugo u C-u, ali me zanimeju neke stvari :) krenuo sam nešto da uradi i primetio sam blagu nelogičnost. u pitanju je struktura ftime: FTIME (struct) ▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀ A file's time and date. struct ftime { unsigned ft_tsec : 5; unsigned ft_min : 6; unsigned ft_hour : 5; unsigned ft_day : 5; unsigned ft_month : 4; unsigned ft_year : 7; }; Defined in io.h ovim je definisano 5 bit-a za sekunde, a svima je dobro poznato da sekundi ima 60 (a ne 32 koliko je 2^5). da li je ovourađeno namerno ili ne nije mi jasno. ima li načina da se izbegne ova struktura ili ne? (da li dos diktira uslove?) ovo je struktura koja je definisana u BC++, kako izgleda u MSC? SY
unknown.147 nandi, -> #146, mjova
> ovim je definisano 5 bit-a za sekunde, a svima je dobro poznato da > sekundi ima 60 (a ne 32 koliko je 2^5). da li je ovourađeno namerno > ili ne nije mi jasno. > > ima li načina da se izbegne ova struktura ili ne? (da li dos diktira > uslove?) vrednost u tih pet bitova treba pomnoziti sa dva da bi se dobile sekunde. tu je dos ućario bit, da bi sve moglo da stane u ceo broj bajtova. pogledaj vremena kad lupis time, sve sekunde su parne. pozdrav nandi
unknown.148 andra,
Jel neko probao da compilira onaj UNARJ.C koji se nalazi na sezamu (ibmpc\archiver\unarj221.exe)? Ja sam probao ali mi nesto ne radi. Ako neko ima neko iskustvo sa ovim, bio bih mu zahvalan na odgovoru! Pozdrav, !Andra!
unknown.149 ppekovic, -> #146, mjova
>> ovo je struktura koja je definisana u BC++, kako izgleda u MSC? Ovako: Include: <sysĐtimeb.h> Structure: struct timeb š time_t time; unsigned short millitm; short timezone; short dstflag; ć; Type: time_t Include: <time.h> Summary: Type for representing calendar time in seconds. typedef long time_t; Paya
unknown.151 dgrbic, -> #149, ppekovic
::>> ovo je struktura koja je definisana u BC++, kako :: izgleda u MSC? :: :: Ovako: :: :: Include: <sysDtimeb.h> Ne bih rekao, struktura FTIME u BC++ se koristi za citanje vremena kreiranja/pisanja datoteke funkcijom... ne secam se vise imena funkcije, sad sam presao na MSC, u njemu za tu svrhu sluzi funkcija _dos_getftime (int handle, unsigned *date, unsigned *time); :: struct ftime { :: unsigned ft_tsec : 5; \ :: unsigned ft_min : 6; > unsigned *time :: unsigned ft_hour : 5; / :: unsigned ft_day : 5; \ :: unsigned ft_month : 4; > unsigned *date :: unsigned ft_year : 7; / :: } ; Velicine se potpuno slazu. A da bi sve stalo u unsigned long, vreme je skraceno na parne sekunde, sto i nije neka greska, jer je vreme zapisivanja fajla "proces koji traje" Funkcija ftime u MSC (a verovatno i u BC), vraca tekuce vreme u strukturi timeb: void ftime (struct timeb *time); description: ftime returns the current time. time is a pointer to a structure of type timeb defined in the include file timeb.h as follows: ... iz knjige MICROSOFT C RUN TIME LIBRARY, Kris James, Microsoft Press ftime je System V kompatibilna funkcija, i trebalo bi da je ima i BC.
unknown.152 lanik, -> #148, andra
Kako bre ne radi? Pa radi i na Atariju ST a da ne radi na PC-ju??? ;)) --> A nanosecond here, a nanosecond there, --> next thing you know you've got real time.
unknown.153 gww., -> #104, fric
>Treba na uradim program koji je u suštini interpreter - čita red po >red iz text fajla, analizira, radi razne radnje. Kako bi se pisanje >takvog programa moglo olakšati/ubrzati pomoću flexa ? Pošto je tema ineteresantna i za mene evo sledećih zaklučaka do kojih sam došao tragajući za rešenjem. Baterija lex-yacc ima veliku filozofsku manu a to je da kao rezultat dobiješ prevod tvog jezika u C, znači translator. Za konačno rešenje treba ti C compiler. E pa lepo, a gde je tu onda interpretator. Koliko sam shvatio baterriju lex-yacc treba nekako preseliti u memoriju tako da, ako se dobro sećam termina, sintaksni teror obaviš u memoriji i odmah izvršiš odgovarajuće funkcije. Video sam takav primer na PL-1 interpretatoru sličnom starim borlandovim kompajlerima. Nažalost izvor tih informacija (Toza) preselio se u Australiju pa ga je nemoguće pitati za detalje. Imam ovde na disketama neke primere korišćenja takve baterije i otprilike mi je jasno šta se tu dešava. Ono što mi je otprilike jasno jeste: 1. da LEX otprilike radi tzv. tokenizaciju t.j. odvaja objekt od objekta (funkcije, promenljive, konstante, operacije) i ono što dobiješ ulaz je za YACC odnosno header fajla za include u konačni C kod 2. da YACC radi sintaksnu analizu (koji objekt stoji ispred, iza i izmedju čega) i izlaz mu je prevod tvog programa u tvom jeziku u obliku c source-a 3. Oba formiraju svojevrsne tabele (lex - kodova, yacc jedan veeeeeliki switch) Dakle uvek i uvek dobijaš transliran tvoj jezik u C. Filozofija je: "šta će tu opet neki novi jezik kad je C dovoljan" i prilično mi se ne svidja odnosno ne rešava ni moj ni tvoj problem. Jedini paket koji je čini mi se dao slobodan pristup svojoj sintaksnoj analizi je Actor (pod windows-ima) ali sumnjam da će ti to mnogo pomoći. Izgleda da nam se prespektiva smeši verovatno kada situacija bude zrela (čitaj: kada ne budu imali više šta da dodaju na ionako megabajte kompajlera, neko će se setiti da dodaju i ove alate kao neke vrste funkcija). U C-ovim bibliotekama imaš neke rudimente analizatora u okviru str... funkcija sve ostalo je tvoj (moj) posao. Voleo bih da vidim šta si uradio kad uradiš. Dobro razmisli o sledećim mogućnostima: 1. LEX + YACC u sorce-u (da bi mogao da ih ugradiš u tvoj program) 2. Da sam napišeš nešto poput takve baterije, to se zove proći sintaksni teror, ne treba mnogo samo je strašno zamorno sa dosta fizičkog i mentalnog posla (crtanje pomaže). 3. Da pitaš ZZ-a kako je rešio komandnu liniju u svojim programima Nadam se da sam problem bar osvetlio. Pozdrav GWW. P.S. mislim da je ovo zaista interesantna tema za postavljanje na rapravljački sto. Ako je to suviše za ovu konferenciju, rado bih učestvovao u grupi koja bi se bavila/rapravila ovo pitanje.
unknown.154 gww., -> #96, bojt
Ima li preporuka za DOS-extender ?
unknown.155 djelovic, -> #153, gww.
Zapravo gresis! Lex + Yacc pravi od ulaznog teksta kostur programa u C-u zapravo onda ti nadogradjujes i pravis compiler ili interpreter. Moze se napraviti interpreter pomocu L+Y, ali zavisno od strukture jezika odluci sam da li se to isplati. Rescimo, za 6502 assembler ti to sigurno ne treba.
unknown.156 djelovic, -> #154, gww.
Phar Lap DE. Najvise ga ljudi koristi, pa pretpostavljam da za to ima razloga. Inace, objavljen je jedan i u DDJ-u, pa ako te zanima da ga dovuces u izv. kodu sa trickle-a...
unknown.157 bulaja, -> #148, andra
│Jel neko probao da compilira onaj UNARJ.C koji se nalazi na sezamu │(ibmpc\archiver\unarj221.exe)? Ja sam probao ali mi nesto ne radi. │Ako neko ima neko iskustvo sa ovim, bio bih mu zahvalan na odgovoru! └─── Da, meni radi odlicno sa Borland C++2.0. Koji C koristis i da li si koristio MAKE il' samo kopajlirao unarj.c (a trebas i jos ona dva odvojena modula, ne znam im ime).
unknown.158 ppekovic, -> #157, bulaja
>> Da, meni radi odlicno sa Borland C++2.0. Koji C koristis i da li si >> koristio MAKE il' samo kopajlirao unarj.c (a trebas i jos ona dva >> odvojena modula, ne znam im ime). Nevolja je sto verovatno koristi MSC a za msc nije ukljucen make fajl u ovoj arhivi. U stvari, postoji, ali za OS/2. E sad, sve to lepo radi i sa MSC-om i, koliko se secam, treba jednostavno da prevedes svaki od datih modula sa: CL /c /AS <ime>.c pa onda da ih ulinkujes sa: LINK ime1 ime2 ime3,,, i to je to. Jedino se ne secam koliko je bilo ovih modula (3-4 cini mi se). Paya
unknown.159 mjova, -> #153, gww.
> rapravljački sto. Ako je to suviše za ovu konferenciju, > rado bih učestvovao u grupi koja bi se bavila/rapravila > ovo pitanje. zašto u grupi? ovde može ladno da se piše o tome! odavno ovde očekujem jače tekstove o C-u i ostalom stvarima. SY
unknown.160 miro, -> #153, gww.
■■> Baterija lex-yacc ima veliku filozofsku manu a to je da ■■> kao rezultat dobijes prevod tvog jezika u C, znaci ■■> translator. Za konacno resenje treba ti C compiler. Ovo nije tacno. Ni filozofski :), a logicki da i ne govorimo. Rezultat nije prevod jezika u C, nego generisanje prevodioca u C-u. ■■> 1. da LEX otprilike radi tzv. tokenizaciju t.j. odvaja ■■> objekt od objekta (funkcije, promenljive, konstante, ■■> operacije) i ono sto dobijes ulaz je za YACC odnosno ■■> header fajla za include u konacni C kod Leksicki analizator nije tesko napraviti pjeske, ali poslije petog put postaje DOSADNO :(( LEX pravi pristojan kod koji se onda kompajlira sa CC i koristi kao takav. ■■> 2. da YACC radi sintaksnu analizu (koji objekt stoji ■■> ispred, iza i izmedju cega) i izlaz mu je prevod tvog ■■> programa u tvom jeziku u obliku c source-a YACC generise kod za sintaksno upravljanu kompilaciju (otprilike tako nesto). To znaci da generisani kod (procedure) obavlja analizu i u kod za analizu inkorporira i neke akcije koje kod jednostavnih jezika mogu sasvim udovoljiti. ■■> 3. Oba formiraju svojevrsne tabele (lex - kodova, yacc ■■> jedan veeeeeliki switch) Tabele koje oni formiraju su njihova stvar. Veza sa njima se ostvaruje kroz procedure koje LEX i YACC naprave. Inace, sami program su dosta mocni i priznati u praksi. Trenutno citam "Compilers, Principles, Techniques and Tools" od Aho-a, Sethi-a i Ullman-a i autori u dva poglavlja, "Lexical Analysis" i "Syntax Analysis", preporucuju koristenje LEXa i YACCa za razvoj odgovarajucih dijelova kompajlera. Kvalitet leks.analizatora i parsera je slabiji nego sto se moze postici rucnim kodiranjem, ali je odnos upotrebljivost/vrijeme razvoja MAKSIMALAN. Dragisa
unknown.161 gww., -> #155, djelovic
> Zapravo gresis! Lex + Yacc pravi od ulaznog teksta kostur programa u C-u zapravo onda ti nadogradjujes i pravis compiler ili interpreter. Moze se napraviti interpreter pomocu L+Y, ali zavisno od strukture jezika odluci sam da well meni je jasno da on daje C source u izlazu, ako si na to mislio upotrebom "pravi od ulaznog teksta kostur programa u C-u" samo pitanje glasi šta je taj kostur? t.j. šta je produkt L&Y bez intervencija translator ili interpretator. Nema problema dobiću neki SWITCH da razbacane tokene nekako izvršim (po sintaksnim pravilima) ali koji deo generisanog kod će mi uraditi leksičku/sintaksnu analizu? Ne bi bilo loše od tebe ili od mira da napravite jedan primer u obliku kalkulatora i to sledećeg: brojevi, operacija sabiranja i oduzimanja da ne bi bilo komplikovano ne treba da radi unarni minus. dakle samo 3 tokena, broj i dve operacije..... znači čita datoteku 1+2 2+3 3-4 5-2 i posle svakog reda ispise rezultat pa bi na osnovu tog primera imali o čemu da raspravljamo. Objašnjenja o L&Y sistemu koja imam ispričao mi je čovek koji nije ovde (u Jugi) pa sam sretan kada imam nekog da pitam, s tim da volim da postavljam nezgodna pitanja. Vrlo rado volim da se razuverim dobrim argumentima, onda sam nešto saznao, ovako .... pozdrav GWW.
unknown.162 gww., -> #160, miro
> Rezultat nije prevod jezika u C, nego generisanje prevodioca u > C-u. da. generisanje prevodioca koji prevodi vaš jezik u C, to sam i rekao ako se ne varam. 'i izlaz mu je prevod tvog programa u tvom jeziku u obliku c source-a da varam se rekao sam ovo, a mislio na sledeće: +------#include----+ : : leksička pravila ---> lex -----: : sintaksna pravila ---:---> YACC --+-> prevodilac.c ---> --->prevodilac.c---->prevodilac.exe----: program u 'jezik'-u--+---> program.c ----> program.exe rekoh, crtanje pomaže > YACC generise kod za sintaksno upravljanu kompilaciju (otprilike tako > nesto). To znaci da generisani kod (procedure) obavlja analizu i u > kod za analizu inkorporira i neke akcije koje kod jednostavnih jezika > mogu sasvim udovoljiti. Ovo bih još mogao da progutam kao politički govor, ukratko ne znači mi ništa (bez uvrede). Da li bi moglo ovo da se malo narodskije objasni? > Inace, sami program su dosta mocni i priznati u praksi. Trenutno citam > "Compilers, Principles, Techniques and Tools" od Aho-a, Sethi-a i baš lepo, to je kao da imam rols-rojs a ne znam da ga vozim, samo znam da je strašno moćan i priznat (i skup) :))) Bez šale voleo bih da pogledam tu knjigu. Ima li u njoj some source u C-u, onako upotrebljiv, na primer kao u "Data structures, an advanced approach using C" gde je dat mali lisp interpreter.
unknown.163 gww., -> #159, mjova
Nemam ništa protiv da se o ovome razgovara u conf, naravno da nemam, samo sam mislio da se priča neće dopasti ostalima.
unknown.164 djelovic, -> #161, gww.
> Ne bi bilo loše od tebe ili od mira da napravite jedan primer > u obliku kalkulatora i to sledećeg: Nije meni tesko da ti napravim primer, ali evo da se odlucimo za laksu varjantu: Uz Turbo C++ dobijas i spreadsheet TCALC. Posto sam ja to davno obrisao sa HD-a i ne znam ime datoteke, potrazi malo - matematika u TCALC-u je napravljena pomocu YACC-a.
unknown.165 djelovic, -> #162, gww.
Nemoj da budes u zabludi da prevodilac napravljen Y+L-om pravi od datoteke na jeziku X obavezno C source. Mozes ti da nabudzis bilo koji izlazni format (recimo OBJ).
unknown.166 gww., -> #156, djelovic
> Phar Lap DE. Najvise ga ljudi koristi, pa pretpostavljam > da za to ima razloga. Inace, objavljen je jedan i u DDJ-u, > pa ako te zanima da ga dovuces u izv. kodu sa trickle-a... imaš li ddj-ove ? zanima me tekst o btree, source je ovde negde na Sezamu, znam šta radi ali bih voleo da pročitam i članak. Naravno zanima me i taj DOS-extender. Znaš li kako se zove datoteka? Za skidanje možda će pomoći MJOVA. MJOVO hoćeš li ?
unknown.167 gww., -> #164, djelovic
> Nije meni tesko da ti napravim primer, ali evo da se > odlucimo za laksu varjantu: Uz Turbo C++ dobijas i > spreadsheet TCALC. Posto sam ja to davno obrisao sa HD-a i > ne znam ime datoteke, potrazi malo - matematika u TCALC-u > je napravljena pomocu YACC-a. Well, nisam ni mislio da je teško nego je to podloga za raspravu. što se tiče calc-a u tc-u ili u tp-u znam da je napravljen pomoću YACC-a tako bar piše u dokumentaciji, ali složićeš se sa mnom yacc source nije ni dat uz malu napomenu da je dat samo minimalni deo opisa sintakse od 10-tak redova i to za četiri osnovne računske radnje, ali pravi source nije dat. Štaviše ostatak je mogao biti i sigurno jeste doterivan ručno. Slažeš li se?? Pored toga tcalc-ovi imaju brdo tokena sa kojim barataju, tekst, slova funkcije ... i to još raznih osobina. Ne! to je mnogo komplikovano za raspravu, baš zato sam i poželeo onakav minimalan primer. "3 tokena a interpretator"
unknown.168 gww., -> #165, djelovic
> Nemoj da budes u zabludi da prevodilac napravljen Y+L-om > pravi od datoteke na jeziku X obavezno C source. Mozes ti > da nabudzis bilo koji izlazni format (recimo OBJ). Da da u pravu si uvek je u pitanju translacije jezika X u jezik Y s tim što je uobičajeno jezik Y = C. Mada to i nije problem, problem je u kao što rekoh u filozofskoj postavci. Nema dela programa koji rade L&Y posao, tokenizaciju i sintaksnu analizu, odnosno L&Y moraš imati u okviru interpretatora da bi mogao da uz pomoć njih napraviš analizu pa interpretaciju. Sve mi se čini da razgovaramo na rusko kineskoj granici, razgovaramo o granici ali ja pričam kineski i rešavam kineski problem a ti ruski i ruski problem, hoću reći jedno je translator a drugo interpretator. P.S. znaš li zašto se zove baš YACC ?
unknown.169 djelovic, -> #166, gww.
> imaš li ddj-ove ? zanima me tekst o btree, source je ovde > negde na Sezamu, znam šta radi ali bih voleo da pročitam > i > članak. > > Naravno zanima me i taj DOS-extender. Znaš li kako se zove > datoteka? Za skidanje možda će pomoći MJOVA. DDJ-ove imam, nije problem da ti ih pozajmim. Reci samo broj ili bar opseg brojeva koji ti trebaju. Sto se tice datoteka, na trickle-u se nalaze kompletni listinzi iz DDJ-a, pa potrazi malo u onoj datoteci sto je Bulaja poslao. Ako ti treba, dacu ti ja racun na BUEF78-ici pa ti to narucuj. P.S. Extender se zove PROT i izasao je u Oktobru i Novembru 1990-te.
unknown.170 djelovic, -> #168, gww.
> P.S. znaš li zašto se zove baš YACC ? YACC = Yet Another Compiler Compiler. Sacekaj sa raspravom, u nekim od sledecih racunara (mozda i ovi, decembraski) igor.mil treba da napise tekst o L+Y. Onda napadaj :). > odnosno L&Y moraš imati u okviru > interpretatora da bi mogao da uz pomoć njih napraviš analizu > pa interpretaciju. NE! Tu zaista ima neko fiksno parce koda koje se ubacuje u svaki program napravljen sa njima, ali to nisu kompletni L+Y.
unknown.171 igor.mil, -> #161, gww.
> Ne bi bilo lose od tebe ili od mira da napravite jedan primer u obliku > kalkulatora Evo trazenog primera (tesko onome ko ima JUS standard za nasa slova, ali takvi valjda i ne koriste C ): === file: first.l =================================================== number [0-9]+\.?|[0-9]*\.[0-9]+ %% [ \t]+ {number} { sscanf(yytext, "%lf", &yylval); return NUMBER; } \n|. return yytext[0]; === file: second.y ================================================== %{ #include <ctype.h> #include <stdio.h> #define YYSTYPE double %} %token NUMBER %left '+' '-' %left '*' '/' %right UMINUS %% lines : lines expr '\n' { printf ("%g\n", $2); } | lines '\n' | ; expr : expr '+' expr { $$ = $1 + $3; } | expr '-' expr { $$ = $1 - $3; } | expr '*' expr { $$ = $1 * $3; } | expr '/' expr { $$ = $1 / $3; } | '(' expr ')' { $$ = $2; } | '-' expr %prec UMINUS { $$ = - $2; } | NUMBER ; %% #ifdef MYLEX yylex() { /* ovo je leksicki analizator */ int c; while ( ( c = getchar() ) == ' ' ); if ( (c == '.') || isdigit(c) ) { ungetc(c, stdin); scanf("%lf", &yylval); return NUMBER; } return c; } #else #include "lexyy.c" #endif yyerror(char *msg) { } main() { yyparse(); } ===================================================================== Primeri su iz knjige Aho, Sethi, Ullman "Compilers - Principles, Techniques, and Tools", s tim sto sam ih u nekim sitnicama izmenio. Pretpostavlja se da imate *izvrsne* oblike lex&yacc programa, koje se u mom slucaju zovu "flex.exe" i "byacc.exe". Kalkulator se pravi na jedan od sledeca dva nacina (ne obracajte na paznju na compiler warning-e tipa "unreachable code" i druge, koje cete dobiti od Turbo C-a): [varijanta 1] flex first.l ! rezultat -> "lexyy.c" byacc second.y ! rezultat -> "y_tab.c" tcc y_tab.c ! rezultat -> "y_tab.exe" [varijanta 2] byacc second.y ! rezultat -> "y_tab.c" tcc -DMYLEX y_tab.c ! rezultat -> "y_tab.exe" Kalkulator cita aritmeticke izraze terminisane karakterom '\n' sa standardnog ulaza i pise rezlutat na stand. izlaz. Poziva se, naravno sa "y_tab". Izrazi se sastoje iz operatora ( ) + - * / i unarni minus, a operandi su C "double" konstante. Na primer: 3e-2/(6 - .45) (ne bojte se, 3e-2 ga nece zbuniti) Znaci blanko i tab nisu bitni (leksicki analizator ih "pojede"). Program ispisuje rezultat izraza posle ucitavanja karaktera '\n'. U varijanti 1, parser generisan yacc-om koristi leksicki analizator generisan lex-om. U varijanti 2 je funkcija "yylex" koja obavlja leks. analizu napravljena rucno i inkorporirana u "user code" sekciju yacc specifikacije (fajl "second.y"). Parametar MYLEX odredjuje da li ce se koristiti ovaj kod, ili includovati kod generisan lex-om (fajl lexyy.c) po specifikaciji u fajlu "first.l". I jos nesto, u izvrsnoj verziji dobijenoj var. 1 i var. 2 postoje funkcionalna razlika kada se kao ulaz koristi tastatura (t.j. bez redirekcije), jer leksicki analizator dobijen lex-om radi baferovanje (tamponazzu :)) ulaza. Zbog ovoga u var. 1, udarac na "enter" na kraju izraza nece odmah prouzrokovati ispis rezultata, nego tek drugi udarac na pomenuti taster (kada se unese sledeci izraz, koji moze biti i prazan), a u var. 2 se ulaz ne baferuje. Ako je ulaz preusmeren iz fajla ponasanje porograma dobijenih u obe varijante je identicno. Inace, "flex" ima opciju za proizvodnju leks. analizatora bez baferovanja ulaza, koju je neophodno koristiti ako se planira ulaz sa tastature.
unknown.172 igor.mil, -> #167, gww.
> Stavise ostatak je mogao biti i sigurno jeste doterivan rucno. Slazes li > se?? Ja se ne slazem. Yacc generise C kod u obliku funkcije koja se zove "yyparse" i ona se jednostavno pozove uz prosledjivanje izraza i izracuna rezultat. Nikakva rucna doterivanja koda generisanog yacc-om ili lex-om nisu potrebna, a duboko sumnjam i da su moguca. Pogledaj C source generisan yacc-om iz primera koji sam naveo u prethodnoj poruci. Videces da je ogroman deo koda deklaracije tipa: yytable[] = {3,6,7,0,0,0,5,6,7,0,0,0,0,4,5,6,7,8,... /* i.t.d. */
unknown.173 igor.mil, -> #162, gww.
>---> prevodilac.c---->prevodilac.exe----: > program u 'jezik'-u--+---> program.c ----> program.exe Ovo sto si ti nacrtao je pravljenje translatora iz nekog programskog jezika u C. Taj prevodilac se moze praviti lex&yacc alatima, ali to im nije jedina namena. Naprotiv, oni se koriste da olaksaju dizajn bilo kakvog kompajlera/interpretera/translatora. Ja sam recimo, iz zezanja, za kratko vreme napravio jedan BASIC interpreter koji je imao INPUT, PRINT, LET i IF naredbe. Naravno, nema nikakvu upotrebnu vrednost (mrzelo me da resavam grananje), ali recimo, slozenost izraza (broj postojecih operatora) ili liste agrumenata PRINT naredbe nije nikakav problem. Ako nekog interesuje kako to izgleda, mogu da stavim ovde lex i yacc programe (t.j. lex i yacc specifikacije).
unknown.174 igor.mil, -> #168, gww.
> Da da u pravu si uvek je u pitanju translacije jezika X u jezik Y s tim > sto je uobicajeno jezik Y = C. Daleko bilo! Uobicajeno je da je Y == OBJ, dok je ovo sto si ti naveo prilicno neuobicajeno.
unknown.175 bulaja, -> #169, djelovic
│DDJ-ove imam, nije problem da ti ih pozajmim. Reci samo broj ili bar │opseg brojeva koji ti trebaju. │Sto se tice datoteka, na trickle-u se nalaze kompletni listinzi iz │DDJ-a, pa potrazi malo u onoj datoteci sto je Bulaja poslao. Ako ti │treba, dacu ti ja racun na BUEF78-ici pa ti to narucuj. └─── Sad ste me ovog diskusijom naterali da malo ispitam "trziste" ;) za ono sto planiram da uradim prilicno dugo. Dakle, koliko vas je zainteresovano da se na Sezamu redovno (tj. svakog meseca) pojavljuju listinzi iz DDJ-a? Ako ne znate sta se tamo moze naci, poslacu ovih dana neki od svezijih paketa, a imate npr. i dflat5.zip u \pc\prg koji je takodje iz jednog od takvih paketa. Molim sve koji su za ovo, da mi jave na private mail. Pozdrav, Bulaja
unknown.176 mjova, -> #166, gww.
> MJOVO hoćeš li ? moze, moze ;)
unknown.177 ppekovic, -> #173, igor.mil
>> Ako nekog interesuje >> kako to izgleda, mogu da stavim ovde lex i yacc programe (t.j. lex i >> yacc specifikacije). Interesuje mene i to veoma! Paya
unknown.178 ppekovic, -> #175, bulaja
>> Dakle, koliko vas je zainteresovano da se na Sezamu redovno (tj. >> svakog meseca) pojavljuju listinzi iz DDJ-a? Ako ne znate sta se tamo >> moze naci, poslacu ovih dana neki od svezijih paketa, a imate npr. i Samo napred bulaja, mnoge će zanimati, a ostalima neće smetati jer ćeš te listinge kačiti kao fajl uz poruke i svi srećni svi zadovoljni. Paya
unknown.179 igor.mil, -> #177, ppekovic
>>> Ako nekog interesuje >>> kako to izgleda, mogu da stavim ovde lex i yacc programe (t.j. lex i >>> yacc specifikacije). > > Interesuje mene i to veoma! Evo Payo, specijalno za tebe sam doterao komentare, i napisao dokumentaciju, radio sam do 2h nocas, nadam se da ces to umeti da cenis :)). Ne trazim nista vise nego da budes umeren sa kritikama, mnogo sam sujetan covek :). --- Izvod iz dokumentacije ---------------------------------------- MicroBASIC ========== Ovo je interpreter za MicroBASIC napravljen uz pomoc lex&yacc alata. Prilozeni su izvorni fajlovi za L&Y i izvrsna verzija MB.EXE. Osim toga prilozen je i MAKEFILE za pravljenje izvrsne verzije MAKE programom iz Turbo C paketa. -------------------------------------------------------------------- mbasic.zip
unknown.180 igor.mil, -> #171, igor.mil
> I jos nesto, u izvrsnoj verziji dobijenoj var. 1 i var. 2 postoje > funkcionalna razlika Postoji i jos jedna razlika, koja se tice formata numerickih konstanti. U varijanti 1 (lex-om generisan skaner) po ovome sto stoji u "first.l", nije dozvoljen oblik sa eksponentom (na primer 4.3e-7), a u varijanti 2 jeste. Za domaci zadatak vam zadajem da odredite zasto je tako, i da promenite "flex.l" tako da i u var. 1 to bude podrzano.
unknown.181 ppekovic, -> #179, igor.mil
>> Evo Payo, specijalno za tebe sam doterao komentare, i napisao >> dokumentaciju, radio sam do 2h nocas, nadam se da ces to umeti da >> cenis :)). Ne trazim nista vise nego da budes umeren sa kritikama, >> mnogo sam sujetan covek :). Odma cu da DL-ujem a onda moje omiljeno: hassan seckati :)))) Primedbe i komentari slede ... Paya P.S. Hvala!!!
unknown.182 ivujanic,
U kom časopisu je bilo poređenje C++ kompajlera za DOS? Mislim na malo ozbiljnije članke... Ivica
unknown.183 predragd,
Zna li neko za na kom kompajleru je pisan protokol ZMODEM (nalazi se na SEZAM-u u \com\zmodemc.zip fajlu). Ja sam pokusao da ga kompajliram sa BC++ 2.0 i TSC i nisam uspeo. Pozdrav, Pedja.
unknown.184 mjova,
borland c++, funkcija mktime(), koja proračunava na osnovu datuma ostale parametre (rb. broj dana u godini i nedelji, sređuje nepravilne datume npr 39-04-91 itd) ima jedan mali bagić :) ako se u strukturu upiše datum 29-02 i to za prestupnu godinu, onda dolazi do blokiranja komp-a. malo sam to sve muvao i mislim da je u pitanju samo prestupna godina i to 29 feb. kako sam postao "ovisan" :) o ovoj funkciji, dopisao sam par redova: "mktime()" je definisana u "time.h" time_t _mktime(struct tm *tc){ time_t t; if(tc->tm_mon==1 && tc->tm_mday==29 && (tc->tm_year%4==0 && tc->tm_year%100!=0 || tc->tm_year%400==0)) { tc->tm_mday--; t= mktime(tc)+86400; tc->tm_mday++; tc->tm_yday++; tc->tm_wday= ++tc->tm_wday%7; return(t);} return(mktime(tc));} SY
unknown.185 lazo,
Hajde da mi neko objasni kako se u C-u šalje string na štampač. Recimo da hoću da napišem Hello na štampaču. Da li za ovo postoji neka funkcija unutar C-a koja bi trebala da je standardna za sve C kompajlere ili se način razlikuje od kompajlera do kompajlera? Ovo pitam, jer nisam ništa slično našao (može bit da sam preskočio, jer sam po nazivu funk.-naredbe pokušao da prepoznam nešto što bi ličilo na izlaz na štampač). Pozdrav, Mickey.
unknown.186 ppekovic, -> #185, lazo
>>Hajde da mi neko objasni kako se u C-u šalje string na štampač. Recimo >>da hoću da napišem Hello na štampaču. Da li za ovo postoji neka Mislim da je najednostavnije koristiti fopen i fputs ili fprintf funkcije, tj. uradis nesto ovako: FILE *stampac stampac=fopen("PRN","w") fputs("Hello!",stampac) Paya
unknown.187 ppekovic,
Imam problema sa FLEX-om i MSC 6.0 compiler-om. Naime, pravio sam neki programcic uz pomoc Flex-a i sve je bilo lepo dok nije doslo na red kompajliranje programa generisanog pomocu Flex-a. Pri kompjaliranju evo sta se desilo: d:\flex>cl lexyy.c Microsoft (R) C Optimizing Compiler Version 6.00 Copyright (c) Microsoft Corp 1984-1990. All rights reserved. lexyy.c proba.l(239) : fatal error C1001: Internal Compiler Error (compiler file '@(#)regMD.c:1.100', line 3837) Contact Microsoft Product Support Services Naravno odmah sam probao sa sledecim jednostavnim primerom da proverim u kome je greska: %{ int bra=0; %} %% [aA] ++bra; %% main() { yylex(); printf("Slova A ima %d.\n",bra); } I opet se pojavila ista greska (uostalom, zar se ne desava redovno da kako pipnem C kompajler, odma nadjem neki bug :(((( )! Jel ima neko objasnjenje? Jel mi se to cini ili flex generise source prilagodjen za Borlandov C kompajler? Paya
unknown.188 ppekovic, -> #187, ppekovic
>>proba.l(239) : fatal error C1001: Internal Compiler Error >> (compiler file '@(#)regMD.c:1.100', line 3837) >> Contact Microsoft Product Support Services E da, zaboravio sam da pomenem da kada zadam opciju /qc pri kompajliranju, sve radi bez greske. Paya
unknown.189 bulaja, -> #187, ppekovic
│Jel mi se to cini ili flex generise source prilagodjen za │Borlandov C kompajler? └─── Ne bih rekao da je u tome stvar, cim javlja "Internal Compiler Error" onda je to bug Microsoft C-a ;) (nije sto mi je drago, nego je smiley tek onako). Kad sam testirao FLEX pre stvaljanja u dir, takodje sam imao takvih problema sa MSC dok je sa BC radio odlicno. Na kraju je valjda igor.mil sve resio, ali ne mogu nikako da se setim sta je bilo, valjda nista strano (tj. nikakav grozni bug MSC-a ;).
unknown.190 ppekovic, -> #189, bulaja
>> Ne bih rekao da je u tome stvar, cim javlja "Internal Compiler Error" >> onda je to bug Microsoft C-a ;) (nije sto mi je drago, nego je smiley Ne, ono za prilagodjenost BC-u sam pitao nevezano za onaj internal error. Paya
unknown.191 braca, -> #185, lazo
U Borland/Turbo C-u imaš funkciju biosprint, sa njom čak možeš malo bolje da kontrolišeš štampač, tj. da očitaš status i sl.
unknown.192 mjova,
e, ovako, ovo je jedna zanmimljiva PD biblioteka za funkcije spawn.. ima dosta toga što donosi kao poboljšanje,a upotreba je jednostavna. ko ne može bez ovih fn, nek dl ovo. ima i za bc++ i za msc. mjova
unknown.193 igor.mil, -> #187, ppekovic
> Imam problema sa FLEX-om i MSC 6.0 compiler-om. Naime, pravio sam > neki programcic uz pomoc Flex-a i sve je bilo lepo dok nije doslo na > red kompajliranje programa generisanog pomocu Flex-a. Pri Cuo sam i od Bulaje da je imao problema sa MSC-om i Flex-om. Ja sam problem "resio" tako sto sam sa neke disikete iskopao MSC 5.x i probao. Sve je radilo kako treba. MSC 6.0 nemam, tako da zaista ne mogu da pomognem. Vidim u tvojoj sledecoj poruci da sa nekakvom opcijom (/qc ?) radi. Sta znaci ta opcija? Ako nije strasno nepovoljno koristiti je, onda je to valjda resenje? Sto se tice "prilagodjenosti" Borland-ovom C-u, moguce da je Turbo C blizi (nekakvom) standardnom C-u od MSC. Istina? > proba.l(239) : fatal error C1001: Internal Compiler Error > (compiler file '@(#)regMD.c:1.100', line 3837) <-+ > Contact Microsoft Product Support Services | | Sta znaci ovo ? -------------------------------------+ Koliko vidim (iz sekvence "@(#)") to je deo komentara. Ovakve sekvence koristi neki Unix utility (ne znam tacno koji) za definisanje standardnih zaglavlja sa imenom, verzijom i tome slicno, nevezano za programski jezik. Da li ova poruka prikazuje deo "naseg" fajla, ili je deo izvornog koda samog kompajlera?
unknown.194 djnsnd,
Da li neko moze da mi preporuci nakakav toolkit za Turbo C ili Turbo C++ nalik na Turbo Vision za Turbo Pascal 6.0. (prozori, meni, maske za unos i sl.). Dejan
unknown.195 ppekovic, -> #194, djnsnd
>>Da li neko moze da mi preporuci nakakav toolkit za Turbo C ili >>Turbo C++ nalik na Turbo Vision za Turbo Pascal 6.0. (prozori, >>meni, maske za unos i sl.). H Za pocetak, pogledaj: dflat5 zip 119820 C biblioteka za korisnicki interfejs (DDJ) u direktorijumu: IBMPC/PROGRAM Paya
unknown.196 alexa, -> #140, ndragan
> / nisam siguran da ima neko jednostavno rešenje... > > motorola? 386 ? (ko je rekao DOS???)
unknown.197 alexa, -> #187, ppekovic
> Jel ima neko objasnjenje? > Jel mi se to cini ili flex generise source prilagodjen > za Borlandov C kompajler? žini ti se, flex generiše source za UNIX C (bože, naravno). Problem je (naravno) u Microsoft-ovom kompajleru. A onaj compiler file je naziv source modula samog kompajlera - onaj 'č(#)' je marker koji u source-u ostavlja SCCS (source code control system), inače komplet programa na UNIX-u (vidi, vidi, ma nije valjda da ni Microsoft ne koristi DOS? :))) A pošto se modul zove regMD, probaj onako, za početak, da iz generisanog source-a ukloniš pojavu reči 'register' - može biti da se komajler zablesavi kad pokuša da rasporedi registre na register promenljive. Ili, drastičnije rešenje, stavi na početak #define register pa da vidimo šta će biti. Inače, ja sam silne muke imao pri kompilaciji sa MS C-om (istina, pod XENIX-om) raznih UNIX programa, jer MS C (bar za XENIX) ima silnih problema pri pretprocesiranju ako se pretera sa gomilom definisanih makroa; da i ne spominjem neku, ne tako staru, verziju koja je nazive makroa razlikovala samo na prvih 8 znakova (bljak!).
unknown.198 mjova, -> #194, djnsnd
> Da li neko moze da mi preporuci nakakav toolkit za Turbo C > ili Turbo C++ nalik na Turbo Vision za Turbo Pascal 6.0. > (prozori, meni, maske za unos i sl.). imaš jedan na sezamu, mislim da je dflat ili tako nešto. ja imam neke stvari koje se bave prozorima i radom sa njima (sve što možeš da pomisliš) ali samo za small model. imam i neke dodatne stvari za turboc, sa divnom help bazom za NG. sve to ima poliko kb, da me stvarno mrzi da pošaljem... mjova
unknown.199 fric, -> #195, ppekovic
> Za pocetak, pogledaj: > > dflat5 zip 119820 C biblioteka za korisnicki interfejs (DDJ) Ali uputstvo (.doc) uz dflat je nekako sakato - bez detaljnijeg opisa funkcija, koncepcije, načina korišćenja, primera... fric
unknown.200 nkbog, -> #199, fric
>> Ali uputstvo (.doc) uz dflat je nekako sakato - bez detaljnijeg opisa >> funkcija, koncepcije, načina korišćenja, primera... Pogledaj članke o Windows programiranju u računarima. Knjige o IBM-ovom SAA standardu bi bile još bolje. Naime i Windows-i i PM i DFLAT koriste taj standard na nivou sors koda. NB.
unknown.201 bulaja, -> #194, djnsnd
│Da li neko moze da mi preporuci nakakav toolkit za Turbo C ili │Turbo C++ nalik na Turbo Vision za Turbo Pascal 6.0. (prozori, │meni, maske za unos i sl.). └─── Postoji i Turbo Vision za Turbo C++ (i BC++).
unknown.202 ppekovic, -> #197, alexa
>>Ili, drastičnije rešenje, stavi na početak >>#define register >>pa da vidimo šta će biti. BINGO! Svaka čast Alexa! Proradilo je bez problema. Ako imaš vremena, voleo bi da znam suštinu, zašto nije radilo bez #define registar? Paya
unknown.203 dgrbic, -> #202, ppekovic
:: BINGO! Svaka čast Alexa! Proradilo je bez problema. Ako imaš :: vremena, voleo bi da znam suštinu, zašto nije radilo bez #define :: registar? Kolko sam ja video kod koji flex napravi, on skoro sve gurne u registar promenljive. Takođe, kolko se sećam, ZZ je jednom prilikom pisao o greškama koje MSC pravi prilikom optimizacije i tu je pomenuo i to da mu se dešava da "zaboravi" koja mu je promenljiva trenutno u registru :) Mislim da je moglo da se reši i isključivanjem neke optimizacije, možda bi ZZ mogao da kaže nešto detaljnije, on se, verovatno, od svih nas na Sezamu najviše patio sa MSC kompajlerom. Usput, zna li neko, koliko MSC 5.1 zauzima mesta na disku? Imam mali disk, a MSC 6.0 je veeeelik (a treba mi C).
unknown.204 alexa, -> #202, ppekovic
> zašto nije radilo bez #define registar? Pa, glupi MS C ima neku bubu u raspoređivanju register varijabli. Ne znam detalje, ovo sam zaključio na osnovu naziva modula u kompajleru; #define je drastičnije rešenje jer 'uništava' i moguće register deklaracije u header datotekama.
unknown.205 dnikolic, -> #201, bulaja
>> Postoji i Turbo Vision za Turbo C++ (i BC++). Postoji, ali jos nije stigao do nas. Ili mozda jeste? dn
unknown.207 jpiri, -> #205, dnikolic
>> Postoji i Turbo Vision za Turbo C++ (i BC++). >Postoji, ali jos nije stigao do nas. Ili mozda jeste? Jeste. Problem sa njim je samo to sto je zamisljen za programe poput IDE verzije kompajlera (zapravo, Borlandov IDE je i napravljen uz pomoc Turbo Vision-a). Totalno je nepogodan za form-oriented aplikacije (baze podataka i sl.). Moram priznati da je, medjutim, odlicno zamisljen i izveden potpuno u duhu objektnog programiranja. Ako si zainteresovan mogu ti mailovati neki demo (mrzi me da saljem 100-ak Kb u konferenciju tek tako). P.S. Uzgred, postoji i ObjectWindows sto je u stvari Turbo Vision za Windows. Mana mu je sto source 'bas i nije' kompatibilan sa TV.
unknown.208 djnsnd, -> #205, dnikolic
Ovo je odgovor na poruke 195, 198, 200, 201 i 205. Zahvaljujem se svima na sugestijama. Pogledao sam dflat sa sezama i u pravu ste - nije nesto... I mene interesuje Turbo Vision za Turbo C++ (ili Borland C++) pa ce valjda doci i do mene. Dejan (DjnSnd)
unknown.209 igor.mil,
Danas sam, sasvim slucajno, otkrio jedan vrlo interesantan feature MSDOS-a. Radi se o obradi parametara prosledjenih preko komandne linije. Na primer, ako napisemo program PROBA koji samo ispisuje argumente koji su mu prosledjeni na komandnoj liniji, i startujemo ga sa: proba 1 +2 +4 "aa bb"-4 Dobicemo izlaz: 1 +2 +4 aa bb -4 Znaci, blanko znaci se ignorisu, osim ako se ne nalaze u okviru polja uokvirenog navodnicima. Jos jedna interesantna stvar: 4DOS vrsi kontrolu ispravnosti parametara komandne linije (!), i to ne pitajuci nas da li je zelimo ili ne (mozda se to i moze iskljuciti, ali ko ce da gleda ono ogromno uputstvo?). To znaci da nece hteti da izvrsi program koji se startuje komandom koja ima neizbalansirane navodnike. Probajte da izvrsite: command "take that! i dobicete poruku: No closing quote "Obican" COMMAND.COM ne pravi pitanje od ovoga, i ako jedan navodnik fali on podrazumava da postoji iza poslednjeg ne-blanko znaka u komandnoj liniji. Znaci, ako radimo sa standardnim DOS shell-om, rezultat naredbe: proba "Ha!" "take that! ce biti: Ha! take that! Takodje, kod 4DOS-a treba obratiti paznju na upotrebu znaka '%' u komandnoj liniji. Na primer kod programa CAL (racunjanje aritm. izraza, autor S.Markovic) operator modulo je kao i kod C-a, znak '%'. Ako izvrsite: cal 10%5 dobicete rezultat 10 a ne 0, posto je %5 shvacen kao parameter 5 i zamenjen njegovom vrednoscu, to jest praznim stringom, pre prosledjivanja parametara programu CAL. Ovo se izbegava koriscenjem obrnutih navodnika, koji sprecavaju supstituciju: cal 10`%`5 ili cal `10%5` ili, mozda malo elegantnije, upotrebom "%%" umesto '%' na komandnoj liniji: cal 10%%5
unknown.210 ppekovic, -> #209, igor.mil
>> Takodje, kod 4DOS-a treba obratiti paznju na upotrebu znaka '%' u >> komandnoj liniji... A kako iz programa prepoznati dali je komandni interpreter COMMAND.COM ili 4DOS.COM ??? Naravno, ne uz pomoć comspec promenljive, već neki način koji će raspoznati u 100% slučajeva. Paya