Nieuws:

Welkom, Gast. Alsjeblieft inloggen of registreren.
Heb je de activerings-mail niet ontvangen?

Auteur Topic: Syntax highlighting? Hoe maken?  (gelezen 1755 keer)

Syntax highlighting? Hoe maken?
« Gepost op: 2010/06/05, 17:43:43 »
Hallo iedereen,

ik zou als onderdeel van een nieuw project syntax highlighting willen maken.
Nu gaat het project gemaakt worden in Realbasic. Daar zit natuurlijk wel rich text in, dus moet het mogelijk zijn.

Maar ik heb niet echt een idee hoe ik die language keywords (als int, str, print..) in kleur moet plaatsen.
Zou je alle woorden op de lijn moeten splitsen en dan iffen met een database vol keywords??

Dankje!

Re: Syntax highlighting? Hoe maken?
« Reactie #1 Gepost op: 2010/06/05, 18:30:24 »
Ik denk dat een database / xml file met keywords de meest gebruikte methode is.
Zo kan je bij enkele commerciële text editors ook andere programmeertalen toevoegen.
http://leerubuntu.org (ubuntu zonder moeilijke woorden)
VoidWarranties (Hackerspace) Antwerpen
Microsoft isn't evil, they just make really crappy operating systems. - Linus Torvalds

Re: Syntax highlighting? Hoe maken?
« Reactie #2 Gepost op: 2010/06/05, 19:25:23 »
Ik denk dat een database / xml file met keywords de meest gebruikte methode is.
Zo kan je bij enkele commerciële text editors ook andere programmeertalen toevoegen.

Aha dankje, daar heb ik al wat aan.
Heeft iemand een idee waar ik die files van bijvoorbeeld Gedit zou kunnen vinden?
Zijn die vrij te gebruiken?

Alvast bedankt!

Re: Syntax highlighting? Hoe maken?
« Reactie #3 Gepost op: 2010/06/05, 23:06:25 »
Gedit gebruikt de highlighting van GtkSourceView. De files kan je hier downloaden:
http://ftp.gnome.org/pub/gnome/sources/gtksourceview/1.6/gtksourceview-1.6.0.tar.gz
als je door dat archief bladert vind je je bestanden op deze locatie:
/gtksourceview-1.6.0/gtksourceview/language-specs/

hier staan die van vim, al zijn die van gedit beter om te gebruiken denk ik:
http://www.fleiner.com/vim/download.html

GtkSourceView is onder de gpl licentie vrijgegeven, wat wil zeggen dat je deze code mag gebruiken, op voorwaarde dat je je eigen programma onder een vergelijkbare licentie beschikbaar maakt. Al is een lijst van keywords zo universeel dat ze daar niet direct over zullen / kunnen vallen.
« Laatst bewerkt op: 2010/06/06, 05:12:10 door Ward De Ridder »
http://leerubuntu.org (ubuntu zonder moeilijke woorden)
VoidWarranties (Hackerspace) Antwerpen
Microsoft isn't evil, they just make really crappy operating systems. - Linus Torvalds

Re: Syntax highlighting? Hoe maken?
« Reactie #4 Gepost op: 2010/06/06, 11:47:39 »
Hangt er van af. Je kan twee dingen doen.

Ten eerste gewone syntax highlighting. Hier neem je letterlijk "kom je 'int' tegen, geef dat dan die kleur. kom je iets tussen aanhalingstekens tegen, geef dat dan die kleur". Deze systemen zijn meestal niet erg slim, maar makkelijk te maken en veelgebruikt.

Daarnaast kan je een taalparser maken. Dat is iets ingewikkelder. Daarmee zou je dingen kunnen doen als 'ga naar de declaratie van functie X', of zou je macro's pakweg blauw en functies rood maken (kan onderscheiden). Mocht je zoiets gaan doen voor C++ (een volledige language parser), raad ik je aan om dit niet in RealBasic, maar in C/C++ te schrijven, en onder een niet-copyleft license (dus iets als bsd, mit of zlib) vrij te geven... We hebben er nood aan ;)

- SeySayux
I use a Unix-based system, that means I'll get laid as often as I have to reboot.
LibSylph
SeySayux.net

Offline profoX

  • Lid
    • wesley
    • Lionslink
Re: Syntax highlighting? Hoe maken?
« Reactie #5 Gepost op: 2010/06/06, 12:29:32 »
Highlighting regels opstellen aan de hand van reguliere expressies kan ook.
Een uitgebreid voorbeeld in C++/Qt kan je hier vinden:
http://doc.qt.nokia.com/4.7-snapshot/richtext-syntaxhighlighter.html
Human Knowledge Belongs To The World -- Antitrust (2001)
Nederlandstalige Ubuntu documentatie van Ubuntu-NL (wiki)

Offline Rachid

  • Lid
    • rachidbm
    • Mijn blog
Re: Syntax highlighting? Hoe maken?
« Reactie #6 Gepost op: 2010/06/08, 08:15:24 »
Ik zou ook altijd kijken of er niet al iets beschikbaar is voor RealBasic, misschien heeft iemand zn code al gedeeld.
Mijn eerste poging: http://www.google.com/search?q=Realbasic+syntax+highlighting
3e hit: http://forums.realsoftware.com/viewtopic.php?f=11&t=27568
Misschien vind je met wat slimmer googlen meer ;)
Ben je ook blij dat Ubuntu zo toegankelijk en gratis is, en wil je graag net als ik iets terugdoen, kijk dan eens rond bij mwanzo, dé poort naar het bijdragen aan Ubuntu en haar gemeenschap!

Re: Syntax highlighting? Hoe maken?
« Reactie #7 Gepost op: 2010/06/08, 16:20:44 »
Inderdaad Wazzzaaa, ik had het met weinig hoop op het RealBasic forum geplaatst. Maar blijkbaar zijn ze daar iets actiever dan ik dacht.
Bedankt voor het meedenken allemaal!

Nog even een opmerking hierover:

Hangt er van af. Je kan twee dingen doen.

Ten eerste gewone syntax highlighting. Hier neem je letterlijk "kom je 'int' tegen, geef dat dan die kleur. kom je iets tussen aanhalingstekens tegen, geef dat dan die kleur". Deze systemen zijn meestal niet erg slim, maar makkelijk te maken en veelgebruikt.

Daarnaast kan je een taalparser maken. Dat is iets ingewikkelder. Daarmee zou je dingen kunnen doen als 'ga naar de declaratie van functie X', of zou je macro's pakweg blauw en functies rood maken (kan onderscheiden). Mocht je zoiets gaan doen voor C++ (een volledige language parser), raad ik je aan om dit niet in RealBasic, maar in C/C++ te schrijven, en onder een niet-copyleft license (dus iets als bsd, mit of zlib) vrij te geven... We hebben er nood aan ;)

- SeySayux

Het is niet dat ik het niet wil gaan doen. Maar dit lijkt voor mij echt wel een onmogelijk opgave. Ik denk dat ik met de eerste al genoeg werk zou hebben. Verre van een language parser te maken in C++ (ik heb wel enige notie van C++, maar ik kan verre van zeggen dat ik ze beheers.)  :)