#cristallparser najlepsze najnowsze

sylwke3100 2013-11-01 11:52:25 +4
Właściwie dalej nie potrafie trywialnego błędu rozwiązać w moim parserze w tym:

https://github.com/sylwke3100/cristallparser/blob/unstable-qt/CristallParser.cpp

lub tu

https://github.com/sylwke3100/cristallparser/blob/unstable-qt/CristallDetectRules.cpp



problem polega na tym że dla takich danych:



[ala]Ala ma kota[/ala] [mal]Kotek lubi placki[/mal]heheszki -23 -2.5[ala]Sylwek[/ala]



I takich zasad



D.addGrammarToByGroup(tag,"[mal]","[/mal]",RunRuleInside::No);

D.addGrammarToByGroup(tag,"[ala]","[/ala]",RunRuleInside::No);

D.addRule("tekst",Rules::Letters,(int)Limits::None);




`
D.addRule("number",Rules::Numbers,(int)Limits::None);

D.addRule("floatnumber",Rules::FloatNumbers,(int)Limits::None);


`




Powinno mi wywalić:



tag - Ala ma kota

tag - Kotek lubi placki

tekst - hehszki

number - -23

floatnumber - 2.5

tag Sylwek



A wywala



tag - Ala ma kota

tag - Kotek lubi placki

tekst - hehszki

tekst ala

tekst Sylwek

tekst ala



Jeśli usunę z CristallParser.cpp:100



&& detectInvoke(RawData[Position]) != Types::None



to znika drugi tag pokazują się liczby ale ostatni tag dalej jest rozdzielony



#cpp #programowanie #cristallparser
japer 2013-11-01 15:25:36 +2
@sylwke3100: teraz polubiałem :>



sylwke3100 2013-11-01 15:32:14 +3
@japer: Ja mnie wiecej rozumiem ich zasadę działania ale nie chce mi się tego stosować :)
pokaż komentarze (2)
sylwke3100 2013-09-29 17:34:36 +3
Jestem taki fajnym programisto że mylę się w deklarowaniu parametrów do metody z własnego Parsera w innym projekcie i jeszcze sie dziwie dlaczego owy program mi Siga wywala.



Dałem tak:



Parser.addRule("text",Cristall::Rules::AlphaNumeric,0);



A w zasadzie mialo być tak:



Parser.addRule("text",Cristall::Rules::Letters,0);



Bo wyrażenie do preparsowania zawiera sam tekst bez innych znaków.Ale nie ma to jak stracić trochę czasu na szukaniu problemu.



#cristallparser #programowanie
A.....k 2013-09-29 20:48:38 +2
stracić trochę czasu na szukaniu problemu.



@sylwke3100: Zazwyczaj traci się czas na szukaniu rozwiązania :P
sylwke3100 2013-09-29 21:04:28 +2
@Analityk: Wiesz u mnie wystarczyło zajrzeć do innego pliku nagłówkowego ale ja co innego kombinowałem ba nawet myślałem że mi się parser popsuł
sylwke3100 2013-09-03 13:04:52 +3
Stworzyłem eksperymentalną wersje parsera z obsługą zmiany funkcji parsowania w postaci biblioteki. so. https://github.com/sylwke3100/cristallparser/tree/unstable-extension



Bajer narazie dostępny jest tylko na Linuksie (choć nie wiem czy na 100 % działa)



biblioteka powinna mieć zaincludowane dwa pliki



CristallGrammar.h

CristallValues.h



oraz funkcje




`
void parse(std::vector Grammars,

CristallValues Values,

std::string RawData);
`




W której implementujemy własną funkcje parsowania. Biblioteczka musi mieć nazwę libcristallparser-twojanazwa.so



Takie coś nie wiem jak to u innych działa bo sama implementacja rozszerzeń ale mi pluje błędami z połączonym programem (W sensie program <- libcristallparser <- jakaś biblioteczka)



#programowanie #cpp #cristallparser
sylwke3100 2013-08-21 16:27:25 +4
Jak metodę parseData z tego kodu https://github.com/sylwke3100/cristallparser/blob/unstable-qt/CristallParser.cpp troszke zmiejszyć rozbijąjąc na coś mniejszego ? Ja nie mam pomysłu żeby to miało ręce i nogi



#programowanie #parser #cpp #cristallparser
echelon_ 2013-08-21 16:42:34 +1
@sylwke3100: Mówi ci coś zasada programowania SOLID? Nie? To doczytaj sobie ;)



http://en.wikipedia.org/wiki/SOLID_(object-oriented_design)
sylwke3100 2013-08-22 00:42:20 +2
@Rincewind: Nie, parser dziedziczy metody po klasie do Obsługi Gramatyki oraz po klasie do Obsługi Wyniku (CristallValues) oraz po detectTools (klasa zajmująca się sprawdzaniem wyrażeń )



Wiem że jest zepsute bo ja się wzorcami i całą tą projektową zabawą nie zajmowałem wcześniej gdyż ten parser miałbyć tylko z zamysłu do interpretera ale że zacząłem go bardziej rozwijać to niestety b----l się zrobił taki jaki widzisz. A chciałbym to z kimś sensownie ogarnąć żeby nie tylko ja go z d--y rozwijałem ale żeby włączyli się inni ludzie robić z tej kupy coś sensownego wartego używania
pokaż komentarze (7)
sylwke3100 2013-08-09 23:00:00 +4
Naprawde nie mam pomysłu co jest powodem błędu parsera opisanego tu :

http://www.wykop.pl/wpis/4813785/sposoby-na-efektywne-debugowanie-w-c-linux-program/#comment-10415231 (funkcja parseData)



Debugowanie samo w sobie nie powiedziało mi więcej niż odkryłem wcześniej że po heheszki jakby przestaje parsować przeskakując z automatu do tekstu w tagu (tzn ala) zamiast przetworzyć liczby. Reszta poniękąd się zgadza (typy, wykrywanie, elementy)



Kod gdzie prawdopodobnie jest bug :



https://github.com/sylwke3100/cristallparser/blob/unstable-qt/CristallParser.cpp



Pomoże ktoś ?



#programowanie #cpp #cristallparser
sylwke3100 2013-08-10 01:15:33 +2
@japer: Poza tym rozwiązaniw błędu dalej będzie nierozwiązane
pokaż komentarze (3)