[Alg] Parser bouwen (colorcoding)

Pagina: 1
Acties:

  • Rhapsody
  • Registratie: Oktober 2002
  • Laatst online: 09:14

Rhapsody

In Metal We Trust

Topicstarter
hey,

ik wil een parser bouwen die code zoals HTML, PHP e.d. in vrolijke kleurtjes weer kan geven.

Nu is het voor enkel HTML eenvoudig, gewoon met reguliere expressies.
Maar ik wil graag een universele maken, die dus ook PHP kan parsen.

Nu zit ik dus al de hele avond te denken hoe ik hier een geniale methode voor kan bedenken.
Maar ik kom er niet uit.
Op internet zijn vrijwel geen goede voorbeelden te vinden omdat dit a) vrijwel altijd maar voor 1 taal is of b) niet bekend wordt gemaakt omdat het onderdeel is van een shareware programma.

Heeft iemand voor mij een idee over hoe ik dit aan moet pakken?

🇪🇺 pro Europa!


  • gorgi_19
  • Registratie: Mei 2002
  • Laatst online: 07:58

gorgi_19

Kruimeltjes zijn weer op :9

Iedere taal heeft een eigen syntax, dus een universele kan je moeilijk maken. :) Wel kan je een basisframe maken en een eigen implementatie c.q. verbijzondering voor iedere taal. :)

Digitaal onderwijsmateriaal, leermateriaal voor hbo


  • Soultaker
  • Registratie: September 2000
  • Laatst online: 04:19
Over parsers is heel veel theorie bekend. Je kunt beter een boek uit de bibliotheek halen als je er echt in wil verdiepen. Het is niet zo interessant om de 'discussie' hier vanaf nivo 0 (NOFI ;) te gaan voeren; daarvoor kun je beter een tutorial doorlezen.

Als je direct wat concrete code wil zien, dan kun je hier op GoT wel zoeken naar stack based parsers (maar die zijn alleen geschikt voor talen als UBB, XML, enzovoorts). Daar komt zo af en toe wel wat over voorbij.

  • Zoijar
  • Registratie: September 2001
  • Niet online

Zoijar

Because he doesn't row...

Grammars van talen downloaden ergens en die in je parser generator knallen :) Best veel werk...

  • Rhapsody
  • Registratie: Oktober 2002
  • Laatst online: 09:14

Rhapsody

In Metal We Trust

Topicstarter
Je hebt inderdaad helemaal gelijk over het verschil in talen.

Een basisframe en dan voor de talen apart een wat uitgebreidere 'klasse' zou dan inderdaad de oplossing zijn.

Het is niet mijn bedoeling om een werkelijke discussie te starten, maar ik wil heel graag weten wat andermans visie hierin is.
Ik ben zelf geen topprogrammeur. het is voornamelijk hobby (in vb.net dan) .

Wat je (soultaker) zegt over concrete code, dat is niet het geval. De code interesseert me op dit moment niet zoveel. Ik wil het eerst goed op een rijtje hebben in mijn hoofd, zodat ik er zelf verder aan kan werken.

[ Voor 61% gewijzigd door Rhapsody op 16-06-2004 22:53 ]

🇪🇺 pro Europa!


Verwijderd

Als je reguliere expressies wilt gebruiken, is het dan geen idee om die expressies te laden op het moment dat je weet welke taal je gaat parsen?

Als je dit combineert met een lijst van alle functies / keywords dan heb je toch genoeg aan een enkele parser?

  • Rhapsody
  • Registratie: Oktober 2002
  • Laatst online: 09:14

Rhapsody

In Metal We Trust

Topicstarter
Ja daar zat ik ook aan te denken.

Maar hoe wil je die reguliere expressies en keywords ophalen?
uit een XML bestand kan, maar dan kom je in de knoop met 'speciale karakters' (", ", <, > enzo)

Op dit moment krijg ik wel een idee trouwens :P

Als ik in een XML bestand per taal aangeef wat voor manier er gehanteerd moet worden, kan ik daarna óf met reguliere expressies spelen, óf met keywords spelen.
Daarnaast kan ik meteen de kleuren aangeven en die gebruiken.

🇪🇺 pro Europa!


  • voodooless
  • Registratie: Januari 2002
  • Laatst online: 23-05 16:37

voodooless

Sound is no voodoo!

Check eens de Jedit(.org) code. Daar gebruiken ze ook XML files voor het colorcoden van souce files.

Do diamonds shine on the dark side of the moon :?


Verwijderd

Rhapsody schreef op 16 juni 2004 @ 23:01:
Maar hoe wil je die reguliere expressies en keywords ophalen?
uit een XML bestand kan, maar dan kom je in de knoop met 'speciale karakters' (", ", <, > enzo)
Als je dit in XML wil doen kan je de elementen die speciale karakters bevatten insluiten in CDATA stukken:

code:
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
<script>
<![CDATA[
function matchwo(a,b)
{
if (a < b && a < 0) then
   {
   return 1
   }
else
   {
   return 0
   }
}
]]>
</script>


Deze stukken worden niet door de XML parser geparsed...

[ Voor 13% gewijzigd door Verwijderd op 16-06-2004 23:09 ]


  • .oisyn
  • Registratie: September 2000
  • Laatst online: 22-05 23:07

.oisyn

Moderator Devschuur®

Demotivational Speaker

Een parser is wat anders dan een scanner (ook wel lexical analyser). Een parser begrijpt grammatica, dat is niet iets wat je nodig hebt als je gewoon wilt highlighten. Het herkennen van verschillende tokens (keywords, identifiers, operators, getallen, etc.) kan zoals je zegt gewoon met regular expressions. De code highlighter hier op GoT die ik gemaakt heb maakt gewoon gebruik van flex, wat een lexical analyser generator is.

Maar als je een generieke manier wilt, is het wellicht handig om je eens te verdiepen in de config files van de verschillende generieke editors die colorcoding ondersteunen. Dan heb je een beetje een idee van wat er gespecificeerd moet worden, en wordt het waarschijnlijk ook helder hoe je een stukje code moet gaan colorcoden :)

Give a man a game and he'll have fun for a day. Teach a man to make games and he'll never have fun again.


  • Rhapsody
  • Registratie: Oktober 2002
  • Laatst online: 09:14

Rhapsody

In Metal We Trust

Topicstarter
Ik heb die van UltraEdit bekeken, omdat dat programma ook de mogelijkheid heeft om nieuwe talen toe te voegen.

Maar dat bestand met definities is ontzettend wazig.

Ik ga even kijken naar andere editors

🇪🇺 pro Europa!


  • NMe
  • Registratie: Februari 2004
  • Laatst online: 24-05 14:53

NMe

Quia Ego Sic Dico.

Rhapsody schreef op 16 juni 2004 @ 23:14:
Ik heb die van UltraEdit bekeken, omdat dat programma ook de mogelijkheid heeft om nieuwe talen toe te voegen.

Maar dat bestand met definities is ontzettend wazig.

Ik ga even kijken naar andere editors
Misschien heb je wat aan die van TextPad? www.textpad.com ;)

'E's fighting in there!' he stuttered, grabbing the captain's arm.
'All by himself?' said the captain.
'No, with everyone!' shouted Nobby, hopping from one foot to the other.


  • Rhapsody
  • Registratie: Oktober 2002
  • Laatst online: 09:14

Rhapsody

In Metal We Trust

Topicstarter
ik heb textpad gedownload.

En dat config bestand zit toch wat logischer in elkaar.

Hier wordt HTML ook gewoon d.m.v. keywords gekleurd.
Voorbeeldje:
code:
1
2
3
4
5
6
7
8
9
10
11
12
[Syntax]
Namespace1 = 2
IgnoreCase = Yes
KeyWordLength =
BracketChars =
OperatorChars =

[Keywords 1]
!DOCTYPE
A
ABBR
ACRONYM

🇪🇺 pro Europa!


Verwijderd

Misschien kun je eens op de site van ultraedit kijken bij downloads daar staan zogenaamde tag lists. Misschien krijg je daar nog een goed idee van :)

www.ultraedit.com

  • RSpliet
  • Registratie: Juni 2003
  • Laatst online: 27-11-2025

RSpliet

*blink*

Kijk eens naar het OpenSource project Scintilla, met de editor Scite dus ;) Dan heb je iig een idee van wat zij hebben gedaan ;)

Schaadt het niet, dan baat het niet


  • Rhapsody
  • Registratie: Oktober 2002
  • Laatst online: 09:14

Rhapsody

In Metal We Trust

Topicstarter
Dank voor de link, maar ik heb ultraedit al een tijdje geinstalleerd.
De manier die dat programma hanteerd is nogal wazig.
Ik kwam er in ieder geval niet uit.

🇪🇺 pro Europa!


  • madwizard
  • Registratie: Juli 2002
  • Laatst online: 26-10-2024

madwizard

Missionary to the word of ska

Rhapsody schreef op 16 juni 2004 @ 23:42:
Dank voor de link, maar ik heb ultraedit al een tijdje geinstalleerd.
De manier die dat programma hanteerd is nogal wazig.
Ik kwam er in ieder geval niet uit.
Bedoel je dat die ultraedit wordfiles wazig zijn? Ik vind er niks vreemds aan hoor, en bovendien staat het prima uitgelegd in de help file.

www.madwizard.org


  • Rhapsody
  • Registratie: Oktober 2002
  • Laatst online: 09:14

Rhapsody

In Metal We Trust

Topicstarter
Ik bedoel de opbouw van die file.

Ik zal er vanavond nog eens goed naar kijken :)

🇪🇺 pro Europa!


  • unclero
  • Registratie: Juni 2001
  • Laatst online: 22-05 08:38

unclero

MB EQA ftw \o/

Of probeer het gevestigde open-source Vim. Zij hebben voor ieder denkbare programmeer of scripttaal of config-file opmaak een syntax colorcoding file... Dat highlight zelfs wanneer er een gruwelijke syntax-error aan zit te komen :D.

..maar misschien is dat iets te complex ;).

Zoals UltraEdit het doet is inderdaad overzichtelijker. Ik meen dat ik een voorbeeld van een dergelijke colorcoding-editor met broncode zag in een van de samples die met wxWidgets mee word geleverd :D.

Quelle chimère est-ce donc que l'homme? Quelle nouveauté, quel monstre, quel chaos, quel sujet de contradiction, quel prodige!

Pagina: 1