# IWordDetector Highlight Probleme



## Atze (9. Sep 2011)

moin

ich hab immernoch ein kleines schönheitsproblem mit dem albernen IWordDetector.
klappt alles soweit (highlight, damagerepairing), nur wenn vor dem keyword (eigentlich für das wort gültige identifier) stehen, in anderen worten druckbare zeichen, wird das wort trotzdem erkannt. das sollte aber nur so sein wenn es am zeilenanfang oder völlig freistehend vorkommt.

um es mal zu verdeutlichen, "SELECT" ist in meinem fall ein keyword, das gehighlightet werden soll.

das wort ist mit einer wordrule und dem enstprechenden token (farbe) zu den rules hinzugefügt, und in 99% aller fälle funzt das auch. nur in dem einen nicht.

funzt (wort wird gehighlightet):

```
SELECT blablabla
```

funzt (wort wird gehighlightet):

```
blablabla SELECT blablabla
```

funzt (wort wird nicht gehighlightet):

```
SELECTblablabla
```

funzt NICHT! (wort wird gehighlightet):

```
blablablaSELECT blablabla
```

leider hat man keine möglichkeit vor den ersten char zu schauen, es gibt im IWordDetector nur diese beiden methoden. jemand ne ahnung wie ich den anders konfigurieren soll, damit vor dem wort nur whitespace oder der zeilenanfang zugelassen ist?


```
public boolean isWordStart(char c) {
		return !Character.isWhitespace(c);
	}
	
	public boolean isWordPart(char c) {
		return Character.isJavaIdentifierStart(c);
	}
```


----------



## Wildcard (9. Sep 2011)

Du scheinst mir nicht glauben zu wollen das du dir die Arbeit mit Xtext sparen kannst 
Wenn du mir eine Grammatik, oder ein einfaches Beispiel der Zielsprache (verfremdet, wenn es ein Geheimnis ist) zukommen lässt, kann ich dir zeigen wie einfach du mit Xtext ans Ziel kommst.


----------



## Atze (10. Sep 2011)

hehe, ein geheimnis ist es nicht, nur nicht sehr verbreitet.  TROIA, falls es dir was sagt.

naja, das highlighting ist ja bis auf diese sache schon mit jface erschlagen, und besonderheiten gibt es da erstmal nicht die ich dir nennen könnte. es sind halt erstmal generell die keywords, datentypen etc, da kann man als beispiel ja so ziemlich jedes token nehmen. 

und den parser und damit eine referenzauflösung (und was alles noch vor mir liegt) nimmt mir xtext ja auch nicht ab, oder?


----------



## Wildcard (10. Sep 2011)

Atze hat gesagt.:


> und den parser und damit eine referenzauflösung (und was alles noch vor mir liegt) nimmt mir xtext ja auch nicht ab, oder?


Glaub es, oder nicht, aber genau das tut es.  Ein Xtext Editor ist ohne eigenen Code schreiben zu müssen schon sehr nahe dran an der Funktionalität des Eclipse Java Editors.
[EDIT] kurz zur Erklärung:
Xtext inferiert aus einer Grammatik ein komplettes EMF Modell deiner Sprache. Anschließend wird mittels ANTLR ein Parser erzeugt. Mittels des Parsers baut Xtext einen AST deiner Sprache, jagt alles durch den Linker, der Cross References auflöst (auch Dateiübergreifend) und am Ende hast du ein sauberes Objektmodell (keinen einfachen AST mehr).
Oben drauf kommt dann noch IDE Infrastruktur wie Syntax Highlighting, Outline, Validator, Quickfix Processor, Hyperlinking, Completion Proposal Processor,...
Zu diesem Zeitpunkt hast du noch keine Zeile Java Code geschrieben.


Wenn du ein snippet postest, schaue ich mal ob ich dafür eine einfache Grammatik stricken kann. Am besten mit Cross-References, damit du mir auch glaubst das er das wirklich kann


----------



## Atze (12. Sep 2011)

hm, hätte nicht gedacht, dass das ding so viel kann  das 1 min video auf deren page sieht schonmal gut aus. hast mich ja überzeugt, ich schaue es mir mal an und wenn ich nicht klarkomme sag ich nochmal bescheid  danke erstmal


----------



## Atze (12. Sep 2011)

also vom ansatz her ist xText ja echt super, muss mir das mit dem färben noch ansehen, aber sonst top


----------



## Atze (12. Sep 2011)

hm, bin mi tdem ding ganz zufrieden und fand die möglichkeit der automatischen testgenerierung ganz ansprechend, aber entweder stimmt was mit dem tutorial nicht, oder ich weiß auch nicht

Unit Testing the Language

er kennt bei mir weder die annotationen noch die Objekte in diesem anschnitt. und welches von den 3 ist das "test-plugin"?


----------



## Wildcard (12. Sep 2011)

Sorry, die Unit Test Geschichte ist glaub recht neu, die habe ich noch gar nicht ausprobiert.
Aber Morgen oder Übermorgen werde ich mir das wohl mal ansehen, denn das interessiert mich auch, dann kann ich vielleicht feedback geben.
Übrigens, wenn deine Sprache komplexere Ausdrücke (arithmetische zB) beinhaltet, solltest du dir unbedingt die Tree Rewrite Actions anschauen. Damit kann der AST umgeschrieben werden damit er weniger tief geschachtelt ist. Sehr nützliches Feature.


----------



## Atze (13. Sep 2011)

ok, ich werd mal reinschauen  dann lass ich das testen auch (leider) erstmal liegen


----------

