Provided by: dte_1.10-1_amd64
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 May 2020 DTE-SYNTAX(5)