Как получить location ключевого слова?
От: catbert  
Дата: 17.05.10 20:20
Оценка:
Я наверное, подхожу к вопросу не с той стороны, но лучше придумать не смог

Раскрашивается код на основе CompileUnit. То есть берется TopLevelNamespace и рекурсивно раскрашиваются его дети на основе Location'ов.

Но тут проблема. Допустим, у нас есть Decl.Using. Тогда Decl.Using.Location — это локейшн всего оператора. Decl.Usinc.NameLocations и AliasLocation указывають, соответственно на пространства имен и тип. А покрасить нужно только сам кейворд (локейшна которого в Decl'е нету).

Можно, конечно просто посчитать, что using это 5 символов, первый совпадает с началом локейшна, но что-то мне подсказывает, что есть вариант получше.
Re: Как получить location ключевого слова?
От: VladD2 Российская Империя www.nemerle.org
Дата: 18.05.10 14:44
Оценка:
Здравствуйте, catbert, Вы писали:

C>Но тут проблема. Допустим, у нас есть Decl.Using. Тогда Decl.Using.Location — это локейшн всего оператора. Decl.Usinc.NameLocations и AliasLocation указывають, соответственно на пространства имен и тип. А покрасить нужно только сам кейворд (локейшна которого в Decl'е нету).


Нужно действовать как интеграция. Использовать лексер для получения токенов. Например, можно использовать лексер из интеграции или тот что используется в компиляторе.

C>Можно, конечно просто посчитать, что using это 5 символов, первый совпадает с началом локейшна, но что-то мне подсказывает, что есть вариант получше.


Это совсем плохой вариант.
Есть логика намерений и логика обстоятельств, последняя всегда сильнее.
 
Подождите ...
Wait...
Пока на собственное сообщение не было ответов, его можно удалить.