Man page - dte-syntax(5)
Packages contains this manual
Manual
DTE-SYNTAX
NAMESYNOPSIS
DESCRIPTION
COMMANDS
Main commands
Conditionals
Default actions
Other commands
SUB-SYNTAXES
SEE ALSO
AUTHORS
NAME
dte-syntax - Format of syntax highlighting files used by dte (1)
SYNOPSIS
Commands:
Main commands:
syntax
name
state
name
[
emit-color
]
default
color name
...
list
[
-i
]
name string
...
Conditionals:
bufis
[
-i
]
string destination
[
emit-name
]
char
[
-bn
]
characters destination
[
emit-name
]
heredocend
destination
inlist
list destination
[
emit-name
]
str
[
-i
]
string destination
[
emit-name
]
Default actions:
eat
destination
[
emit-name
]
heredocbegin
subsyntax return-state
noeat
[
-b
]
destination
Other commands:
recolor
color
[
count
]
DESCRIPTION
A dte syntax file consists of multiple states. A state consists of optional conditionals and one default action. The best way understand the syntax is to read through some of the built-in syntax files, which can be printed with dte -b , for example:
dte -b syntax/dte
The basic syntax used is the same as in dterc (5) files, but the available commands are different.
Conditionals and default actions have a destination state. The special destination state this can be used to jump to the current state.
COMMANDS
Main commands
syntax name
Begin a new syntax. One syntax file can contain multiple syntax definitions, but you should only define one real syntax in one syntax file.
See also: sub-syntaxes.
state name [ emit-color ]
Add new state. Conditionals (if any) and one default action must follow. The first state is the start state.
default color name ...
Set default color for emitted name .
Example:
default numeric oct dec hex
If there is no color defined for oct , dec or hex then color numeric is used instead.
list [ -i ] name string ...
Define a list of strings.
Example:
list keyword if else for while do continue switch case
Use the inlist command to test if a buffered string is in a list.
|
-i |
Make list case-insensitive. |
Conditionals
bufis [ -i ] string destination [ emit-name ]
Test if buffered bytes are same as string . If they are, emit emit-name and jump to destination state.
|
-i |
Case-insensitive. |
char [ -bn ] characters destination [ emit-name ]
Test if current byte is in the characters list. If it is then emit emit-color and jump to destination state. If emit-name is not given then the destination state’s emit name is used.
characters is a list of strings. Ranges are supported ( a-d is the same as abcd ).
|
-b |
Add byte to buffer. |
|||
|
-n |
Invert character bitmap. |
heredocend destination
Compare following characters to heredoc end delimiter and go to destination state if comparison is true.
inlist list destination [ emit-name ]
Test if buffered bytes are found in list . If found, emit emit-name and jump to destination state.
str [ -i ] string destination [ emit-name ]
See if following bytes are same as string . If they are, emit emit-name and jump to destination state.
|
-i |
Case-insensitive. |
NOTE: This conditional can be slow, especially if string is longer than two bytes.
Default actions
The last command of every state must be a default action. It is an unconditional jump.
eat destination [ emit-name ]
Consume byte, emit emit-name color and continue to destination state.
heredocbegin subsyntax return-state
Store buffered bytes as heredoc end delimiter and go to subsyntax . Sub-syntax is like any other sub-syntax but it must contain a heredocend conditional.
noeat [ -b ] destination
Continue to destination state without emitting color or consuming byte.
|
-b |
Don’t stop buffering. |
Other commands
recolor color [ count ]
If count is given, recolor count previous bytes, otherwise recolor buffered bytes.
SUB-SYNTAXES
Sub-syntaxes are useful when the same states are needed in many contexts.
Sub-syntax names must be prefixed with . . It’s recommended to also use the main syntax name in the prefix. For example .c-comment if c is the main syntax.
A sub-syntax is a syntax in which some destination state’s name is END . END is a special state name that is replaced by the state specified in another syntax.
Example:
# Sub-syntax
syntax .c-comment
state comment
char "*" star
eat comment
state star comment
# END is a special state name
char / END comment
noeat comment
# Main syntax
syntax c
state c code
char " \t\n" c
char -b a-zA-Z_ ident
char "\"" string
char "’" char
# Call sub-syntax
str "/*" .c-comment:c
eat c
# Other states removed
In this example the destination state .c-comment:c is a special syntax for calling a sub-syntax. .c-comment is the name of the sub-syntax and c is the return state defined in the main syntax. The whole sub-syntax tree is copied into the main syntax and all destination states in the sub-syntax whose name is END are replaced with c .
SEE ALSO
dte (1), dterc (5)
AUTHORS
Craig Barnes
Timo Hirvonen