![]() |
![]() |
![]()
Post
#1
|
|
![]() Grupa: Zarejestrowani Postów: 40 Pomógł: 0 Dołączył: 19.08.2004 Skąd: Pruszków Ostrzeżenie: (0%) ![]() ![]() |
Witam,
Wraz z moim znajomym piszemy skrypt odpowiedzialny za kolorowanie skladni w artykulach i forum w naszym serwisie. Jak dotad wszystko nam szlo jak po masle, ale natknelismy sie na pewien problem, z ktorym od pewnego juz czasu nie mozemy dac sobie sami rady. Problem polega na tym, ze jak kolorujemy slowa kluczowe (dla przykladu niech to bedzie int z C) to slowa te nam sie koloruja, ale niestety rowniez wtedy, jesli slowo to jest lancuchem znakow. Mamy powiedzmy taki oto prosty kod napisany w C: Kod #include <stdio.h> int main() { printf("Hello int World \n"); return 0; } i teraz powiedzmy, ze chcemy pokolorowac wszystkie int na niebiesko, wiec:
I teraz pytanie. Jak powinno wygladac wyrazenie regularne, aby nie kolorowalo tekstu w cudzyslowach? Probowalem tak:
Niestety tez nie dziala. Juz nie mam pomyslu jak mozna sobie z tym poradzic. Bede wdzieczny za wszelkie informacje. |
|
|
![]() |
![]()
Post
#2
|
|
Grupa: Zarejestrowani Postów: 116 Pomógł: 0 Dołączył: 22.07.2004 Ostrzeżenie: (0%) ![]() ![]() |
Cytat(cagrET @ 2004-08-20 02:32:50) Już słyszałem od paru osób że jedynym słusznym rozwiązaniem tego problemu jest napisanie parsera, ktory zajmie z minimum 200 KB, a napisanie go zajmie z kilka miechów, no thx ![]() To bardzo ciekawe. Do kolorowania składni wystarczy lekser, a nie parser. Napisanie go wcale nie zajmuje pare miesięcy. Widze, że ostatnio ten temat dość często poruszany jest na forum. Proponuje zatem na początek zainteresować się programem GNU Enscript Może kiedyś zmusze się do napisania czegoś, bo ten problem również i mnie troche interesuje. Teraz podam przykład prostego leksera. Nie daje żadnej gwarancji, że działa. Jest mocno uproszczony. To tylko przykład jak napisać lekser.
Ten post edytował Parti 20.08.2004, 13:35:16 |
|
|
![]() ![]() |
![]() |
Aktualny czas: 22.08.2025 - 00:49 |