MC edit íródna

 ( Tsab | 2004. november 20., szombat - 21:05 )

Hozzászólás megjelenítési lehetőségek

A választott hozzászólás megjelenítési mód a „Beállítás” gombbal rögzíthető.

Hi all!

Lenne egy olyan házi feladatom amiben egy programot kell írnom ami egy c forráskódot tesz "szebbé" tehát elrendezi a {} jeleket + bekezdések meg hasonlók. a megkötés annyi volt hogy ansi c-ben fordítható legyen
ezen felül arra gondoltam hogy ehhez csinálnék egy szerkesztőt is ami mcedithez hasonlít. érdekelne hogy az ablak megkreálása hogy működik ansi c alatt vagy lehetséges-e egyáltalán külsőség nélkül?

amennyiben ez lehetséges nem bánnám ha valaki tudna mutatni valami bő infot vagy vmi kész példát róla :D
köszi
Tsab

nem értem tökéletesen hogy mit akarsz
azt, hogy gcc leforgassa vagy azt, hogy ne használj lib-eket

libek nélkül nincs ablakkezelés sem

ha használhatsz libeket akkor ncurses ott meg man
de az editorral sokkal többet fogsz szívni mint a szöevgformázóval

[quote:72f9e6c54c="Tsab"]Hi all!

Lenne egy olyan házi feladatom amiben egy programot kell írnom ami egy c forráskódot tesz "szebbé" tehát elrendezi a {} jeleket + bekezdések meg hasonlók. a megkötés annyi volt hogy ansi c-ben fordítható legyen
ezen felül arra gondoltam hogy ehhez csinálnék egy szerkesztőt is ami mcedithez hasonlít. érdekelne hogy az ablak megkreálása hogy működik ansi c alatt vagy lehetséges-e egyáltalán külsőség nélkül?

amennyiben ez lehetséges nem bánnám ha valaki tudna mutatni valami bő infot vagy vmi kész példát róla :D
köszi
Tsab[/quote:72f9e6c54c]

Minden lehetseges, csak ido es turelem kerdese. :D

Bocs ha nem leszek vmi osszeszedett kb ez a 45 oram ebren, ugyh probalom csk a fontos reszeket irni amihez tenyleg fontos az 5let. :|

Ha szovegszerkesztot akarsz irni akkor kb 10x akkora faba vagod a fejszedet mint maga az egesz szovegformazo, ugyhogy szerintem egyenlore erd be egy parancssoros progival amit parameterbol meghivsz .

Peldaul ha a neve mondjuk szovform:

szovform formazando.c formazott.c

vagy ha igazan unixos akarok lenni akkor:

szovform <formazando.c >formazott.c

Melyebben:
1. Eloszor is a forrasszoveg inicializalasaval kezdodjon, tehat egy neutralis allapotba kell hoznod a szoveget, amibol kiindulhatsz a formazasnal. Mit is takar ez? El kell tavolitani az osszes sortordelest, space-t ugy, hogy az egesz forraskod egy sorba helyezkedjen el. A textek sortordelesnel figyelj arra, h az egyes operaciosrenszer csaladok elteroen jelolik.

UNIX csalad: <LF>
MAC csalad: <CR>
M$ csalad: <CR+LF>

Jo ha ezt az elejen tisztazod a progiba, erre keszits egy fuggvenyt ami visszadobja, h melyik szabaly szerint van tordelve, amit tarolj el es a program vegen ez szerint a szabaly szerint kell visszaallitanod a tordelest.

2. Egy nyilvantartast be kell vezetned az egyes szimbolumokrol. Pl a valtozokrol reserved szavakrol blokkokrol etc.
A reserved szavakat, valtozokat, operatorokat elore kigyujthetsz konstansokba, ezt a headerbe tennem a helyedbe. Egy gyujtociklus segitsegevel gyujtemenyt keszitesz a fajl tartalmabol tehat a konstansokba meghatarozott szimbolumokrol, valamint a { es } jelekrol amik az utasitasblokkokat fogjak kozre.

Ez utobbi tarolasanak a legegyszerubb modja, h felveszel egy egesz tipusu valtozot,

pl:

int blokkszamlalo;
blokkszamlalo = 0;

Majd, ha { jellel talalkozol akkor noveled az erteket, ha } akkor csokkented. A lenyeg, h amikor a fajl vegere ersz akkor 0 kell, h legyen az ertek ujbol. Ez aszt jelenti, h mindketto egyenlo szamban van. De ezt a c fordito is tudja, viszont gondolni kell arra is, h mi van ha valaki syntax erroros kodot akar formazni vele es nincsenek parba akkor konnyen hulyeseget formazhat, vagy rosszabb esetben el is szallhat. Roviden ennyit a gyujtesrol.

Ez a sok pont :arrow: .................................. = minden mas ami meg varatlanul kozbejohet le kell programoznod

3. A formazott szoveg letrehozasa. Ujabb ciklus. Az elejen detektalt szerint elkezded beszurkalni a sortoresszimbolumokat, space-ket, tabulatorokat, kulonosen figyelembe veve a 2. pontban osszegyujtott ertekekre, valamint az altalad kert szovegformazasi szabalyokra.

Hat nagy vonalakban ennyi. Remelem tudtam segiteni, v legalabbis 5leteket adni. De ha egy kipihentebb kollegat kerdezel lehet, h meg tudna mit hozzatenni :)

Hi!

Te valamit felreertesz. A C nem olyan konkret valami, mit pl. a Borland Pascal, amiben adott hogy pl. hogy kell szoveget valahova kirakni meg ilyesmik, es akarhol forgatod le (Borland Pascal forditoval meg libekkel) ugyanugy mukodni fog. Amikor pl. egy Linux alatt futo program valahogy kirak egy szoveget, akkor az feltetelezi az op.rendszer bizonyos mukodeset. Itt nincs meghatarozva hogy pl. ezzel a fuggvennyel tudsz pl. zolden kiirni a kepernyo adott reszere, azzal meg kepernyot tudsz torolni. Az ilyeneket jo ha most tisztazod magadban. Egyebkent egy ilyen editor megirasa baromi nehez a formazohoz kepest. Nem csak a fent leirtak miatt.

By(t)e
TBS::Antiemes

[quote:766bcdde8b="Tsab"]Hi all!

Lenne egy olyan házi feladatom amiben egy programot kell írnom ami egy c forráskódot tesz "szebbé" tehát elrendezi a {} jeleket + bekezdések meg hasonlók. a megkötés annyi volt hogy ansi c-ben fordítható legyen
ezen felül arra gondoltam hogy ehhez csinálnék egy szerkesztőt is ami mcedithez hasonlít. érdekelne hogy az ablak megkreálása hogy működik ansi c alatt vagy lehetséges-e egyáltalán külsőség nélkül?

amennyiben ez lehetséges nem bánnám ha valaki tudna mutatni valami bő infot vagy vmi kész példát róla :D
köszi
Tsab[/quote:766bcdde8b]

A program amit meg szeretnel irni, mar osidok ota letezik, a neve: indent.
Az "ablakkezeles"-hez pedig az ncurses kell neked.

[quote:8a084759d8="ghost"]de az editorral sokkal többet fogsz szívni mint a szöevgformázóval[/quote:8a084759d8]

ghost, meet /bin/ed, /bin/ed, meet ghost. Szovegszerkeszto, es hasznalhato is, es nem egy nagy durranas ilyet, vagy hasonlot irni. Igaz, nem is hasonlit mceditre egy picit sem >;]

[quote:181d275607="algernon"][quote:181d275607="ghost"]de az editorral sokkal többet fogsz szívni mint a szöevgformázóval[/quote:181d275607]

ghost, meet /bin/ed, /bin/ed, meet ghost. Szovegszerkeszto, es hasznalhato is, es nem egy nagy durranas ilyet, vagy hasonlot irni. Igaz, nem is hasonlit mceditre egy picit sem >;][/quote:181d275607]
azért az ed-et szövegszerkesztőnek nevezni az szerintem erős túlzás
a vim meg az emacs, kis jóindulattal az mcedit az editor :lol:

[quote:8aaf0690fa="ghost"][quote:8aaf0690fa="algernon"][quote:8aaf0690fa="ghost"]de az editorral sokkal többet fogsz szívni mint a szöevgformázóval[/quote:8aaf0690fa]

ghost, meet /bin/ed, /bin/ed, meet ghost. Szovegszerkeszto, es hasznalhato is, es nem egy nagy durranas ilyet, vagy hasonlot irni. Igaz, nem is hasonlit mceditre egy picit sem >;][/quote:8aaf0690fa]

azért az ed-et szövegszerkesztőnek nevezni az szerintem erős túlzás
a vim meg az emacs, kis jóindulattal az mcedit az editor :lol:[/quote:8aaf0690fa]

Egyáltalán nem túlzás. Nagyon régi és barátságtalan, ennek ellenére tud pár dolgot. Ahogy vi sem egy barátságos jószág, vim viszont már az. Szóval az ed is szövegszerkesztő (pl a Kernighan-Pike: A UNIX operációs rendszer c. könyvében szépen le van írva. Hétfőn megmutathatom, ha nincs kéznél egy példány :D)

[quote:9c88546d3b="ghost"][quote:9c88546d3b="algernon"][quote:9c88546d3b="ghost"]de az editorral sokkal többet fogsz szívni mint a szöevgformázóval[/quote:9c88546d3b]

ghost, meet /bin/ed, /bin/ed, meet ghost. Szovegszerkeszto, es hasznalhato is, es nem egy nagy durranas ilyet, vagy hasonlot irni. Igaz, nem is hasonlit mceditre egy picit sem >;][/quote:9c88546d3b]
azért az ed-et szövegszerkesztőnek nevezni az szerintem erős túlzás
a vim meg az emacs, kis jóindulattal az mcedit az editor :lol:[/quote:9c88546d3b]

Pedig szovegszerkeszto az. Ed Is The Standard UNIX Text Editor(tm)!
Lehet, hogy nincs benne syntax hajlajt, meg nem full-screen editor mint a Nagyok(R), de kivaloan alkalmas arra, hogy szoveget szerkesszen vele az ember. Raadasul lassu vonalon is hasznalhato, nem kell kepet frissitenie mint vimnek meg emacsnak. (Anno a dialupos idokben meg tok sokszor orultem is ennek. Most mar csak akkor edelek, ha scriptbol kell in-place filet szerkeszteni - lightosabb, mint perl :)