This repository has been archived on 2024-06-20. You can view files and clone it, but you cannot make any changes to it's state, such as pushing and creating new issues, pull requests or comments.
coffee.pygments/tests/examplefiles/sed/reverse.sed.output
Thomas Voss 44e567c3a8
Add a lexer for the sed scripting language
Sed is a stream editing scripting language forming part of the POSIX
standard. This means that sed cn be found as part of any POSIX compliant
OS such as Linux, MacOS, and the BSDs. This lexer supports the complete
POSIX standard for sed as well as various GNU extensions.

The names 'gsed' and 'ssed' may sometimes be used as part of a file
extension to refer specifically to GNU sed or Super Sed, two popular
implementations of sed.

The sed language is rather simple, here is a quick overview:

- Comments begin with a '#' and continue to the end of the line.
- Commands can be prepended with a range that selects lines. This can be
  either a number ([0-9]+), a '$', or a regular expression. Regular
  expressions can either be enclosed in '/' such as /regex/ or they can
  be exclosed in any other character however the opening delimiter must
  be escaped, for example: \@regex@.
- Some commands such as 'w', 'r', and 'b' take a string as a parameter,
  this string extends either to the next ';' or newline.
- Some commands such as 'a' can take multiline strings.
- Commands can be grouped with braces ('{' and '}').
- The 'y' command takes two strings as parameters, seperated by any
  delimiter ('y/abc/123/' or 'y|abc|123|')
- The 's' command is like the 'y' command but the fist parameter is a
  regular expression. Additionally it takes an optional 3rd parameter
  which are a sequence of flags ('s|regex|replace|flags').

I chose to add support for GNU sed extensions as it is by far the most
used implementation.
2021-10-31 17:20:31 +01:00

59 lines
1.5 KiB
Text
Generated

'#!/usr/bin/sed -f' Comment.Single
'\n\n' Text.Whitespace
'/' Punctuation
'..' Literal.String.Regex
'/' Punctuation
'!' Punctuation
' ' Text.Whitespace
'b' Keyword
'\n\n' Text.Whitespace
'# Reverse a line. Begin embedding the line between two newlines' Comment.Single
'\n' Text.Whitespace
's' Keyword
'/' Punctuation
'^.*$' Literal.String.Regex
'/' Punctuation
'\\\n&\\\n' Literal.String.Single
'/' Punctuation
'\n\n' Text.Whitespace
'# Move first character at the end. The regexp matches until' Comment.Single
'\n' Text.Whitespace
'# there are zero or one characters between the markers' Comment.Single
'\n' Text.Whitespace
't' Keyword
'x' Literal.String.Single
'\n' Text.Whitespace
':' Keyword
'x' Literal.String.Single
'\n' Text.Whitespace
's' Keyword
'/' Punctuation
'\\(\\n.\\)\\(.*\\)\\(.\\n\\)' Literal.String.Regex
'/' Punctuation
'\\3\\2\\1' Literal.String.Single
'/' Punctuation
'\n' Text.Whitespace
't' Keyword
'x' Literal.String.Single
'\n\n' Text.Whitespace
'# Remove the newline markers' Comment.Single
'\n' Text.Whitespace
's' Keyword
'/' Punctuation
'\\n' Literal.String.Regex
'/' Punctuation
'/' Punctuation
'g' Keyword
'\n' Text.Whitespace