kolorowanie składni

0

Mam problem z kolorowaniem składni w C#, skorzystałem z wyrażeń regularnych można powiedzieć że coś podobnego do http://www.codeproject.com/KB/edit/SyntaxHighlighting.aspx, ale to nie jest wydajne gdy mamy 600+ słów kluczowych do kolorowania. Zastanawiałem się także nad najbanalniejszym spodobem skorzystania z opcji wyszukaj w richtextboxie i z niego za pomocą selectioncolor zmieniać kolor słowa kluczowego (jeszcze nie wiem jak z wydajnością) ale może ktoś miał podobny problem, bądź ma jakiś pomysł jak go rozwiązać.

1

Na podstawie tego co podałeś (czyli 0 kodu) nie da się powiedzieć.

Ale w większości środowisk jakie widziałem (i sam takie coś widziałem) rozwiązanie polega na przekolorowywaniu tylko tego fragmentu tekstu gdzie pojawiły się zmiany - czyli w najprostszej wersji tylko tej linijki gdzie jest kursor.

0

Ja to rozumiem ale chodzi mi o sposób na sprawdzanie które słowo ma być pokolorowane.
A więc wyjaśnienie
"Kompletnie bez sensu ale :"
Przykładowo mamy zbiór 2000 słów do kolorowania, w linijce jest 6 słów czyli w najgorszym wypadku mamy sprawdzić 6 słów po 2000 razy (w przypadku gdy słowa są 2000 w wpisie).
"To już ma sens ale gdybyśmy z innego źródła niż nasza aplikacja wkleili 2000 lini tekstu bądź 10k lini to może być problem"

Mamy 10k słów do kolorowania (tamten sposób wysiada) w tym momencie możemy posegregować słowa w plikach wg alfabetu (w plikach tablicy nvm gdzieś je mamy), mamy słowo abstract i sprawdzamy 1 litere z tego słowa jest to "a" więc interesujemy się miejscem gdzie są słowa na "a" sprawdzamy drugą litere "b" i wybieramy tylko słowa z literą "b" na 2 miejscu (możemy tu tworzyć tablice pomocniczą z tymi słowami ) i tak aż dojdziemy do ostatniej litery.

Czy ktoś ma jakiś pomysł w jaki sposób wydajnie zrobić takie porównanie wyrazów, nie wykluczam trzymania tych słów w bazie danych ale wolał bym pierwsze znaleźć inne rozwiązanie)

1

Przykładowo mamy zbiór 2000 słów do kolorowania, w linijce jest 6 słów czyli w najgorszym wypadku mamy sprawdzić 6 słów po 2000 razy (w przypadku gdy słowa są 2000 w wpisie).

Po to ludzkość wymyśliła wyszukiwanie binarne żeby nie sprawdzać w tym przypadku 2000 razy tylko 11. :) Przyrost szybkości byłby zauważalny. (W C# implementacją mapy jest klasa Dictionary. Złożoność obliczeniowa wynosi praktycznie O(1)!, czyli dla 2000 wyrazów mamy 1 sprawdzenie )

"mamy 10K słów do kolorowania" - ciekawy przypadek, ale OK. W takim razie sprawdzamy 10000 * O(1) => 10000. Nie powinno nawet na archaicznym komputerze wykonywać się w zauważalnym czasie.

1 użytkowników online, w tym zalogowanych: 0, gości: 1