Newsgroup: it.comp.programmare.win32
Titolo: Creare un editor

Sono nuovo di qui e ringrazio in anticipo chi mi rispondera' =)
Vorrei creare con VC++ un editor, pero' ho difficolta' nella sintassi
illuminata. Qualcuno dei grandi di questo newsgroup sa darmi gentilmente una
mano?
Grazie in ancitipo =))
--
WaKKa
WaKKasGuide.tk
www.wakkasguide.tk
Il forum
http://wakkas.altervista.org/forum

 ha scritto nel
messaggio news:41fcea8d$0$32338$5fc...@news.tiscali.it...


 Grazie ancora!
Io farei un vocabolario di parole con associato un colore.
Questo vocabolario lo strutturi come vuoi, tabella hash, albero, lista,
vettore... (io farei tabella hash, sai il numero esatto delle parole da
"illuminare"...)
Nell'editor che vuoi fare con ogni probabilità avrai un momento in cui
processi i tasti premuti dall'utente, in quel momento aggiungi un
banalissimo controllo: se il tasto pigiato è uno spazio o invio, allora
riprendi l'ultima parola digitata, controlla se questa parola è nel
vocabolario, se si trovi il colore e la riscrivi colorata...
Spero d'esserti stato utile!
Il Sasdo
.................................
Enrico Sasdelli  CDL Informatica
 ---
Ochei lo ammetto, il cervello lo tengo in frigo...

 ha scritto nel messaggio
news:Pine.LNX.4.44.050130...@mercedes.cs.unibo.it...


 
Proca a cercare scintilla (è una libreria che fa già quello che vuoi 
fare tu).
Un suggerimento, sarebbe più utile diversificare i vocabolari con un 
albero sintattico. Alcuni linguaggi permettono l'utilizzo di alcune 
keyword in associazione con altre (vedi VBasic, per esempio) o le 
riconosce come tali solo in alcuni casi, o addirittura può utilizzare 
diverse sintassi e set di colori in base ai vari linguaggi presenti 
(vedi XHTML, XML o HTML con CSS, javascript, PHP, ASP, ecc.)
LP

 ha scritto nel messaggio
news:B3aLd.18979$2h5....@tornado.fastwebnet.it...


 Grazie in ancitipo =))
Su siti come 
http://www.codeproject.com
 puoi trovare codice che effettua
proprio la syntax highlighting.
Io per il mio editor SQL mi sono ispirato a codice trovato su quei siti,
anche se ho dovuto sudare parecchio per adattare il tutto al rich text box
2.0
Un'altra soluzione, forse anche più semplice, è utilizzare la libreria
Scintilla (
http://www.scintilla.org/
) che realizza un componente creato
apposta per editor personalizzabili.
Ciao
Stefano "HappyMan" (Lake Maggiore - Italy)
-- 
http://www.sgr.info
Email happyman69 (at) 
libero.it

 --
Non mi riferivo proprio a quello, ma può essere un tipo di rappresentazione.
Provo comunque a spiegarmi meglio.
Se tu devi fare un editor che supporti la sintassi colorata, evidenziare 
solamente le parole conosciute può non essere esaustivo.
Se tu prendessi un file XHTML (una pagina web qualsiasi), troveresti nel 
file almeno 3 linguaggi differenti: XHTML, CSS e Javascript.
Ora, le parole chiave dell'XHTML (o prova a pensare all'HTML normale, in 
questo esempio uno vale l'altro) puoi identificare alcune parole chiave 
nelle tag, come <table> <input ... /> <br/>, e così via.
Alcune tag possono avere attributi, come <table class="rapporto">.
Quello che ti suggerivo, era un semplice (ok, mica tanto dal punto di 
vista implementativo, ma semplice dal punto di vista logico) 
analizzatore sintattico che dia valenza alle parole chiave in base al 
contesto. Quindi una voce come class="..." viene ad essere colorato come 
attributo di un tag XML solo se effettivamente inserito in un tag XML e 
non, per esempio, in un commento o come testo libero.
Stessa cosa quando apri una tag <script> il testo contenuto fino alla 
tag di chiusura non va considerato come HTML ma come Javascript.
Il fatto di non avere questo tipo di trattamento è un elemento deludente 
di molti editor a sintassi colorata.
Comunque il mio era solo un suggerimento. Nulla ti vieta di non farlo o 
aggiungerlo più avanti.
Se poi tu volessi utilizzare un file XML per permettere all'utente 
finale di definire ed estendere le sintassi, o un altro formato, a te la 
scelta. Un albero XML potrebbe non essere sufficientemente potente per 
gestire sintassi particolari, o qualora lo si studiasse opportunamente 
potrebbe non essere facile da utilizzare. Forse questo aspetto conviene 
rimandarlo a quando avrai definito il modello interno.
Su come colorare il testo nella rich edit box, ti rimando a quel 
progetto di cui ho inserito il link in testa a questa risposta.
Domandina: poi come hai intenzione di rilasciare questo editor? Potrei 
essere interessato a provarlo.
LP

A qualche punto dovremo anche nominare Byson a Lexx, se, come mi
sembra, stiamo suggerendo che scriva la grammatica per i linguaggi da
evidenziare.
F.O.R.

 ha scritto nel messaggio
news:rjdLd.19289$2h5....@tornado.fastwebnet.it...


 ha scritto nel messaggio
news:rjdLd.19289$2h5....@tornado.fastwebnet.it...


 ha scritto nel messaggio
news:70gyawslhcw6.zz1y97iisofp$.dlg@40tude.net...


 ha scritto nel messaggio
news:rjdLd.19289$2h5....@tornado.fastwebnet.it...


 
Gotcha!
Quando vuoi.
LP