Вопросы по созданию лексеров

All questions regarding lexer highlighting schemes are discussed here...
lehanidze
Posts: 11
Joined: 05.06.2013 16:14

Post by lehanidze »

далее по Syntax lexer -> Common -> Line comment string -- как объяснить присутствие этой опции здесь, не является ли это дублирующей функцией парсера коммент? и, что важнее, Line comment string или Token rule для коммента?
Alexey
Posts: 1633
Joined: 05.10.2012 22:10

Post by Alexey »

Line comment str не влияет на раскраску. это для кнопок "line comment-uncomment".
lehanidze
Posts: 11
Joined: 05.06.2013 16:14

Post by lehanidze »

Аа, понял, интересно. Спасибо!
Продолжим, с закладкой Syntax Lexer -> Styles вроде все ясно, поэтому переходим к следующей: Syntax Lexer -> Parser. Здесь неясных моментов будет много, но начнем по-маленьку.. что значат строки:
- Parent block
- Position in line
Alexey
Posts: 1633
Joined: 05.10.2012 22:10

Post by Alexey »

parent - выбор одного из блоков с таба Rules. Этот блок должен быть родителем правила
position - никогда не трогал. не нужно
lehanidze
Posts: 11
Joined: 05.06.2013 16:14

Post by lehanidze »

можно поподробнее о Parent, и с реальным примером?
Alexey
Posts: 1633
Joined: 05.10.2012 22:10

Post by Alexey »

В табе Rules создаем блок. у него 2 элемента- начало имеет block type = range start, конец имеет block type = range end. Потом заходим в Parser, и в списке Parent выбираем первый из них (который range start). тогда парсер работает только для блоков указанных
lehanidze
Posts: 11
Joined: 05.06.2013 16:14

Post by lehanidze »

Понял, спасибо!

Далее, что значат?
- Strict parent block
- Not a parent
- Always enabled
Alexey
Posts: 1633
Joined: 05.10.2012 22:10

Post by Alexey »

Strict parent block - flag that specifies that parent block must be immediate parent for the rule.
Not a parent - flag that specifies that "parent block" is not a parent of the rule.

Always enabled - flag that specifies that this rule will be active not only in the current lexer but in the nested lexers too.
For example, in Pascal function we have "asm" range with reference to nested "Assembler" lexer. We can specify that "Comment" token rule is always enabled. In this case in the Assembler block Pascal comments will be highlighted correctly
lehanidze
Posts: 11
Joined: 05.06.2013 16:14

Post by lehanidze »

да-да, я в курсе, что есть мануал... однако даже эти объяснения нуждаются в объяснениях и примерах. впрочем, опцию Always enabled можно понять, ее опускаем. но Strict parent block и Not a parent совершенно не понятны -- можно о них поподробнее и с примерами?
Alexey
Posts: 1633
Joined: 05.10.2012 22:10

Post by Alexey »

Strict- означает что блок являетя не просто родителем, одним из них (у блока может быть много родителей, один родит другого). А ПРЯМЫМ родителем. т.е. не родителем родителя

Not parent- задает что блок НЕ являетя родителем правила. т.е. он может родитель но не этого правила
Locked