-
Data: 2012-10-19 16:05:11
Temat: Re: coś lajtowego - konsola
Od: Baranosiu <r...@w...pl> szukaj wiadomości tego autora
[ pokaż wszystkie nagłówki ]Dnia 19.10.2012 kenobi <p...@g...com> napisał/a:
> W dniu piątek, 19 października 2012 15:14:41 UTC+2 użytkownik Sławomir Szczyrba
napisał:
>> They're watching you, kenobi.
>>
>> [...]
>>
>> > jak wygodnie zrobic tak by ParseCommandline
>>
>> > zwracalo rozparsowane argumenty nie tylko
>>
>> > w formie komenda i tablica intow tylko
>>
>> > w ogolnym wypadku - tj przemieszane numeryki
>>
>> > (numery moga byc wczytywane jako ogolne tj double to sobie zrzutuje na inta albo
nie)
>>
>> > oraz stringi
>>
>> >
>>
>> > slowem,
>>
>> > tak zeby mozna bylo tez obslugiwac stringi
>>
>> >
>>
>> > np
>>
>> >
>>
>> > costam 10 10 "ala ma kota"
>>
>> >
>>
>> > ?
>>
>> >
>>
>> Zobacz sobie jak to jest tu zrobione.
>>
>> http://dunkels.com/adam/ubasic/
>>
>>
> nie chce mi sie w to wczytywac, [choc o tyle
> fajne ze uswiadamia czym jest basic (przynajmniej ten w starym stylu jak c c64,
> duzo roboty/kodu to to faktycznie nie jest ]
>
> nie mowie ze to jest trudne tylko podalem
> jako ciekawostke bo o ile z argumentami
> czysto liczbowymi mozna dac "char* command"
> i "double arg[]" to w przypadku mieszanych
> trzeba chyba cos w stylu "char* c = getCommand(); double arg1 = getNumber(); double
arg2 = getNumber(); char* arg3 = getString();" itd
>
Możesz pobrać wszystko jako char* a potem sobie konwertować w razie
potrzeby na liczby poprzez atoi czy atof. Możesz też wykorzystać
gotowe interpretery prostych języków (typu lua). Możesz też
zdefiniować gramatykę i wykorzystać bisona i flexa do automatycznego
wygenerowania parserów itd. Serio nie widzę tu żadnych "ciekawostek"
:D Nawet "na piechotę" to po wprowadzeniu całej linii przez
użytkownika tnę ją po białych znakach na kawałki używając strtok i na
podstawie pierwszego "wyrazu" decyduję co zrobić z pozostałymi, na
przykład jak ktoś wpisze "rysujkolo 10 20 5", to po pocięciu tego na
kawałki dostanę powiedzmy x[0]="rysujkolo", x[1]="10", x[2]="20", x[3]="5".
x[0] zawiera "rysujkolo", więc wywoluje funkcje (o deklaracji na
przyklad rysuj_kolo(int,int,int);) w ten sposob:
rysuj_kolo(atoi(x[1]),atoi(x[2]),atoi(x[3]));
i po sprawie.
Jeśli natomiast nie chcesz mieć osobnych funkcji rysuj_kolo(),
rysuj_kwardat() itd., tylko chcesz mieć jedną funkcję rysuj()
(obsługującą różne "konfiguracje" argumentów), to jeśli piszesz to w
C, to możesz użyć mechanizmu z stdarg.h, a jeśli piszesz w C++, to
załatwić sprawę różnych argumentów poprzez przeciążanie funkcji :D
Moim zdaniem pharsowanie nie powinno się odbywać w funkcji
pobierającej dane z konsoli, tylko konsola powinna pobierać na
przykład całą linię i wysyłać ją (jako jeden string) do pharsera,
który już sobie zrobi z tym co będzie chciał :D
Następne wpisy z tego wątku
- 19.10.12 16:27 kenobi
- 19.10.12 16:33 kenobi
- 19.10.12 16:35 Baranosiu
- 19.10.12 16:45 Baranosiu
- 19.10.12 16:46 kenobi
- 19.10.12 16:50 kenobi
- 19.10.12 17:00 Baranosiu
- 19.10.12 17:54 kenobi
- 19.10.12 18:54 Baranosiu
- 19.10.12 19:22 kenobi
- 19.10.12 20:06 kenobi
- 19.10.12 20:43 Baranosiu
- 20.10.12 01:25 Baranosiu
- 20.10.12 08:57 kenobi
- 20.10.12 10:38 kenobi
Najnowsze wątki z tej grupy
- Arch. Prog. Nieuprzywilejowanych w pełnej wer. na nowej s. WWW energokod.pl
- 7. Raport Totaliztyczny: Sprawa Qt Group wer. 424
- TCL - problem z escape ostatniego \ w nawiasach {}
- Nauka i Praca Programisty C++ w III Rzeczy (pospolitej)
- testy-wyd-sort - Podsumowanie
- Tworzenie Programów Nieuprzywilejowanych Opartych Na Wtyczkach
- Do czego nadaje się QDockWidget z bibl. Qt?
- Bibl. Qt jest sztucznie ograniczona - jest nieprzydatna do celów komercyjnych
- Co sciaga kretynow
- AEiC 2024 - Ada-Europe conference - Deadlines Approaching
- Jakie są dobre zasady programowania programów opartych na wtyczkach?
- sprawdzanie słów kluczowych dot. zła
- Re: W czym sie teraz pisze programy??
- Re: (PDF) Surgical Pathology of Non-neoplastic Gastrointestinal Diseases by Lizhi Zhang
- CfC 28th Ada-Europe Int. Conf. Reliable Software Technologies
Najnowsze wątki
- 2024-12-30 Warszawa => Key Account Manager <=
- 2024-12-30 Katowice => Key Account Manager (ERP) <=
- 2024-12-28 Śmiechu KOOOOOOPA ;-)
- 2024-12-29 Pomiar amplitudy w zegarku mechanicznym
- 2024-12-28 Antyradar
- 2024-12-28 Deweloper przegral w sadzie musi zwrócic pieniądze Posypia sie kolejne pozwy?
- 2024-12-28 Warszawa => Full Stack .Net Engineer <=
- 2024-12-28 Warszawa => Sales Assistant <=
- 2024-12-28 Warszawa => Programista Full Stack .Net <=
- 2024-12-28 Warszawa => Full Stack web developer (obszar .Net Core, Angular6+) <=
- 2024-12-28 Katowice => Head of Virtualization Platform Management and Operating S
- 2024-12-28 Błonie => Analityk Systemów Informatycznych (TMS SPEED) <=
- 2024-12-28 Warszawa => Senior Frontend Developer (React + React Native) <=
- 2024-12-28 Żerniki => Employer Branding Specialist <=
- 2024-12-28 ale zawziętość i cierpliwość