annotate docs/lexer-algpseudocode.rst @ 244:53bb764cfaf6

WS
author Franz Glasner <fzglas.hg@dom66.de>
date Sat, 16 May 2026 01:28:09 +0200
parents 7df1fd3bab87
children 2e78e255b54e
Ignore whitespace changes - Everywhere: Within whitespace: At end of lines:
rev   line source
88
03e9031b5eca Some details and examples about \tt-XXX and \ttx-XXX in the docs
Franz Glasner <fzglas.hg@dom66.de>
parents:
diff changeset
1 .. -*- coding: utf-8; indent-tabs-mode: nil; -*-
03e9031b5eca Some details and examples about \tt-XXX and \ttx-XXX in the docs
Franz Glasner <fzglas.hg@dom66.de>
parents:
diff changeset
2
03e9031b5eca Some details and examples about \tt-XXX and \ttx-XXX in the docs
Franz Glasner <fzglas.hg@dom66.de>
parents:
diff changeset
3
168
bff8b900713a REFACTOR: All documentation pages refactored: merge intro and details for lexers and filters
Franz Glasner <fzglas.hg@dom66.de>
parents: 165
diff changeset
4 *************************************
bff8b900713a REFACTOR: All documentation pages refactored: merge intro and details for lexers and filters
Franz Glasner <fzglas.hg@dom66.de>
parents: 165
diff changeset
5 AlgPseudocode and Language Variants
bff8b900713a REFACTOR: All documentation pages refactored: merge intro and details for lexers and filters
Franz Glasner <fzglas.hg@dom66.de>
parents: 165
diff changeset
6 *************************************
bff8b900713a REFACTOR: All documentation pages refactored: merge intro and details for lexers and filters
Franz Glasner <fzglas.hg@dom66.de>
parents: 165
diff changeset
7
192
156bcd310596 FIX: duplicate word
Franz Glasner <fzglas.hg@dom66.de>
parents: 187
diff changeset
8 These lexers are heavily inspired by CTAN’s `Algpseudocodex`_.
201
b6a959c31bed Wording
Franz Glasner <fzglas.hg@dom66.de>
parents: 194
diff changeset
9 They recognize all sorts of single- and multi-line comments in addition to
b6a959c31bed Wording
Franz Glasner <fzglas.hg@dom66.de>
parents: 194
diff changeset
10 expressions and commands that are inspired by `Algpseudocodex`_.
168
bff8b900713a REFACTOR: All documentation pages refactored: merge intro and details for lexers and filters
Franz Glasner <fzglas.hg@dom66.de>
parents: 165
diff changeset
11
186
95754197f5b3 Link to some source code of example pseudocode files
Franz Glasner <fzglas.hg@dom66.de>
parents: 172
diff changeset
12 They may be used in `Sphinx`_ by their aliases.
95754197f5b3 Link to some source code of example pseudocode files
Franz Glasner <fzglas.hg@dom66.de>
parents: 172
diff changeset
13 The code-block:
168
bff8b900713a REFACTOR: All documentation pages refactored: merge intro and details for lexers and filters
Franz Glasner <fzglas.hg@dom66.de>
parents: 165
diff changeset
14
bff8b900713a REFACTOR: All documentation pages refactored: merge intro and details for lexers and filters
Franz Glasner <fzglas.hg@dom66.de>
parents: 165
diff changeset
15 .. code-block:: none
bff8b900713a REFACTOR: All documentation pages refactored: merge intro and details for lexers and filters
Franz Glasner <fzglas.hg@dom66.de>
parents: 165
diff changeset
16
bff8b900713a REFACTOR: All documentation pages refactored: merge intro and details for lexers and filters
Franz Glasner <fzglas.hg@dom66.de>
parents: 165
diff changeset
17 .. code-block:: algpseudocode
bff8b900713a REFACTOR: All documentation pages refactored: merge intro and details for lexers and filters
Franz Glasner <fzglas.hg@dom66.de>
parents: 165
diff changeset
18
bff8b900713a REFACTOR: All documentation pages refactored: merge intro and details for lexers and filters
Franz Glasner <fzglas.hg@dom66.de>
parents: 165
diff changeset
19 \PROGRAM {The Pseudoprogram} \IS
bff8b900713a REFACTOR: All documentation pages refactored: merge intro and details for lexers and filters
Franz Glasner <fzglas.hg@dom66.de>
parents: 165
diff changeset
20
bff8b900713a REFACTOR: All documentation pages refactored: merge intro and details for lexers and filters
Franz Glasner <fzglas.hg@dom66.de>
parents: 165
diff changeset
21 \END PROGRAM {The Pseudoprogram}
bff8b900713a REFACTOR: All documentation pages refactored: merge intro and details for lexers and filters
Franz Glasner <fzglas.hg@dom66.de>
parents: 165
diff changeset
22
186
95754197f5b3 Link to some source code of example pseudocode files
Franz Glasner <fzglas.hg@dom66.de>
parents: 172
diff changeset
23 will be rendered as:
168
bff8b900713a REFACTOR: All documentation pages refactored: merge intro and details for lexers and filters
Franz Glasner <fzglas.hg@dom66.de>
parents: 165
diff changeset
24
bff8b900713a REFACTOR: All documentation pages refactored: merge intro and details for lexers and filters
Franz Glasner <fzglas.hg@dom66.de>
parents: 165
diff changeset
25 .. code-block:: algpseudocode
bff8b900713a REFACTOR: All documentation pages refactored: merge intro and details for lexers and filters
Franz Glasner <fzglas.hg@dom66.de>
parents: 165
diff changeset
26
bff8b900713a REFACTOR: All documentation pages refactored: merge intro and details for lexers and filters
Franz Glasner <fzglas.hg@dom66.de>
parents: 165
diff changeset
27 \PROGRAM {The Pseudoprogram} \IS
bff8b900713a REFACTOR: All documentation pages refactored: merge intro and details for lexers and filters
Franz Glasner <fzglas.hg@dom66.de>
parents: 165
diff changeset
28
bff8b900713a REFACTOR: All documentation pages refactored: merge intro and details for lexers and filters
Franz Glasner <fzglas.hg@dom66.de>
parents: 165
diff changeset
29 \END PROGRAM {The Pseudoprogram}
bff8b900713a REFACTOR: All documentation pages refactored: merge intro and details for lexers and filters
Franz Glasner <fzglas.hg@dom66.de>
parents: 165
diff changeset
30
186
95754197f5b3 Link to some source code of example pseudocode files
Franz Glasner <fzglas.hg@dom66.de>
parents: 172
diff changeset
31 And the same code-block with the german variant
168
bff8b900713a REFACTOR: All documentation pages refactored: merge intro and details for lexers and filters
Franz Glasner <fzglas.hg@dom66.de>
parents: 165
diff changeset
32 (using ``.. code-block:: algpseudocode-de`` as language alias):
bff8b900713a REFACTOR: All documentation pages refactored: merge intro and details for lexers and filters
Franz Glasner <fzglas.hg@dom66.de>
parents: 165
diff changeset
33
bff8b900713a REFACTOR: All documentation pages refactored: merge intro and details for lexers and filters
Franz Glasner <fzglas.hg@dom66.de>
parents: 165
diff changeset
34 .. code-block:: algpseudocode-de
bff8b900713a REFACTOR: All documentation pages refactored: merge intro and details for lexers and filters
Franz Glasner <fzglas.hg@dom66.de>
parents: 165
diff changeset
35
bff8b900713a REFACTOR: All documentation pages refactored: merge intro and details for lexers and filters
Franz Glasner <fzglas.hg@dom66.de>
parents: 165
diff changeset
36 \PROGRAM {The Pseudoprogram} \IS
bff8b900713a REFACTOR: All documentation pages refactored: merge intro and details for lexers and filters
Franz Glasner <fzglas.hg@dom66.de>
parents: 165
diff changeset
37
bff8b900713a REFACTOR: All documentation pages refactored: merge intro and details for lexers and filters
Franz Glasner <fzglas.hg@dom66.de>
parents: 165
diff changeset
38 \END PROGRAM {The Pseudoprogram}
bff8b900713a REFACTOR: All documentation pages refactored: merge intro and details for lexers and filters
Franz Glasner <fzglas.hg@dom66.de>
parents: 165
diff changeset
39
169
3c517c22df9c Much more details and refinements in the docs
Franz Glasner <fzglas.hg@dom66.de>
parents: 168
diff changeset
40
3c517c22df9c Much more details and refinements in the docs
Franz Glasner <fzglas.hg@dom66.de>
parents: 168
diff changeset
41 States
3c517c22df9c Much more details and refinements in the docs
Franz Glasner <fzglas.hg@dom66.de>
parents: 168
diff changeset
42 ======
3c517c22df9c Much more details and refinements in the docs
Franz Glasner <fzglas.hg@dom66.de>
parents: 168
diff changeset
43
168
bff8b900713a REFACTOR: All documentation pages refactored: merge intro and details for lexers and filters
Franz Glasner <fzglas.hg@dom66.de>
parents: 165
diff changeset
44 The AlgPseudocode lexer and its language variants AlgPseudocodeDE and
208
de7118d299e9 Aliases for states: context or mode
Franz Glasner <fzglas.hg@dom66.de>
parents: 207
diff changeset
45 AlgPseudocodeFR basically work in three states (aka modes or contexts):
de7118d299e9 Aliases for states: context or mode
Franz Glasner <fzglas.hg@dom66.de>
parents: 207
diff changeset
46 `default`, `expression` and `text`.
168
bff8b900713a REFACTOR: All documentation pages refactored: merge intro and details for lexers and filters
Franz Glasner <fzglas.hg@dom66.de>
parents: 165
diff changeset
47
208
de7118d299e9 Aliases for states: context or mode
Franz Glasner <fzglas.hg@dom66.de>
parents: 207
diff changeset
48 In `expressions` it automatically recognizes:
168
bff8b900713a REFACTOR: All documentation pages refactored: merge intro and details for lexers and filters
Franz Glasner <fzglas.hg@dom66.de>
parents: 165
diff changeset
49
bff8b900713a REFACTOR: All documentation pages refactored: merge intro and details for lexers and filters
Franz Glasner <fzglas.hg@dom66.de>
parents: 165
diff changeset
50 - Strings (single-quote, double-quote, triple-single-quote,
bff8b900713a REFACTOR: All documentation pages refactored: merge intro and details for lexers and filters
Franz Glasner <fzglas.hg@dom66.de>
parents: 165
diff changeset
51 triple-double-quote, `Python`_ style)
bff8b900713a REFACTOR: All documentation pages refactored: merge intro and details for lexers and filters
Franz Glasner <fzglas.hg@dom66.de>
parents: 165
diff changeset
52 - Numbers (also `Python`_ style)
bff8b900713a REFACTOR: All documentation pages refactored: merge intro and details for lexers and filters
Franz Glasner <fzglas.hg@dom66.de>
parents: 165
diff changeset
53 - (Mathematical) operators and symbols
bff8b900713a REFACTOR: All documentation pages refactored: merge intro and details for lexers and filters
Franz Glasner <fzglas.hg@dom66.de>
parents: 165
diff changeset
54 - ``\TEXT{...}``
bff8b900713a REFACTOR: All documentation pages refactored: merge intro and details for lexers and filters
Franz Glasner <fzglas.hg@dom66.de>
parents: 165
diff changeset
55
bff8b900713a REFACTOR: All documentation pages refactored: merge intro and details for lexers and filters
Franz Glasner <fzglas.hg@dom66.de>
parents: 165
diff changeset
56 To switch in a text-mode that prohibits automatic expression
bff8b900713a REFACTOR: All documentation pages refactored: merge intro and details for lexers and filters
Franz Glasner <fzglas.hg@dom66.de>
parents: 165
diff changeset
57 highlighting.
bff8b900713a REFACTOR: All documentation pages refactored: merge intro and details for lexers and filters
Franz Glasner <fzglas.hg@dom66.de>
parents: 165
diff changeset
58
bff8b900713a REFACTOR: All documentation pages refactored: merge intro and details for lexers and filters
Franz Glasner <fzglas.hg@dom66.de>
parents: 165
diff changeset
59 A closing curly brace can be quoted with ``\}`` to not end the
bff8b900713a REFACTOR: All documentation pages refactored: merge intro and details for lexers and filters
Franz Glasner <fzglas.hg@dom66.de>
parents: 165
diff changeset
60 text mode prematurely.
bff8b900713a REFACTOR: All documentation pages refactored: merge intro and details for lexers and filters
Franz Glasner <fzglas.hg@dom66.de>
parents: 165
diff changeset
61
212
18553f595b34 Allow nested \TEXT and \EXPR commands.
Franz Glasner <fzglas.hg@dom66.de>
parents: 209
diff changeset
62 - ``\EXPR`` or ``\EXPRESSION`` as nested construct
18553f595b34 Allow nested \TEXT and \EXPR commands.
Franz Glasner <fzglas.hg@dom66.de>
parents: 209
diff changeset
63
168
bff8b900713a REFACTOR: All documentation pages refactored: merge intro and details for lexers and filters
Franz Glasner <fzglas.hg@dom66.de>
parents: 165
diff changeset
64 - ``\NAME``, ``\CALL`` and ``\GETS``
bff8b900713a REFACTOR: All documentation pages refactored: merge intro and details for lexers and filters
Franz Glasner <fzglas.hg@dom66.de>
parents: 165
diff changeset
65
bff8b900713a REFACTOR: All documentation pages refactored: merge intro and details for lexers and filters
Franz Glasner <fzglas.hg@dom66.de>
parents: 165
diff changeset
66 - ``\REM`` and ``\REMARK`` for remarks (aka comments)
bff8b900713a REFACTOR: All documentation pages refactored: merge intro and details for lexers and filters
Franz Glasner <fzglas.hg@dom66.de>
parents: 165
diff changeset
67
bff8b900713a REFACTOR: All documentation pages refactored: merge intro and details for lexers and filters
Franz Glasner <fzglas.hg@dom66.de>
parents: 165
diff changeset
68 - Names (`Name.Entity`)
bff8b900713a REFACTOR: All documentation pages refactored: merge intro and details for lexers and filters
Franz Glasner <fzglas.hg@dom66.de>
parents: 165
diff changeset
69
bff8b900713a REFACTOR: All documentation pages refactored: merge intro and details for lexers and filters
Franz Glasner <fzglas.hg@dom66.de>
parents: 165
diff changeset
70 - :ref:`explicit-token-types`
bff8b900713a REFACTOR: All documentation pages refactored: merge intro and details for lexers and filters
Franz Glasner <fzglas.hg@dom66.de>
parents: 165
diff changeset
71
208
de7118d299e9 Aliases for states: context or mode
Franz Glasner <fzglas.hg@dom66.de>
parents: 207
diff changeset
72 In the `default`-mode it recognizes all sorts of single- and multi-line
201
b6a959c31bed Wording
Franz Glasner <fzglas.hg@dom66.de>
parents: 194
diff changeset
73 comments in addition to expressions and commands that are inspired by
b6a959c31bed Wording
Franz Glasner <fzglas.hg@dom66.de>
parents: 194
diff changeset
74 `Algpseudocodex`_.
168
bff8b900713a REFACTOR: All documentation pages refactored: merge intro and details for lexers and filters
Franz Glasner <fzglas.hg@dom66.de>
parents: 165
diff changeset
75
208
de7118d299e9 Aliases for states: context or mode
Franz Glasner <fzglas.hg@dom66.de>
parents: 207
diff changeset
76 In `texts` it recognizes:
168
bff8b900713a REFACTOR: All documentation pages refactored: merge intro and details for lexers and filters
Franz Glasner <fzglas.hg@dom66.de>
parents: 165
diff changeset
77
bff8b900713a REFACTOR: All documentation pages refactored: merge intro and details for lexers and filters
Franz Glasner <fzglas.hg@dom66.de>
parents: 165
diff changeset
78 - ``\EXPR`` or ``\EXPRESSION``
bff8b900713a REFACTOR: All documentation pages refactored: merge intro and details for lexers and filters
Franz Glasner <fzglas.hg@dom66.de>
parents: 165
diff changeset
79
bff8b900713a REFACTOR: All documentation pages refactored: merge intro and details for lexers and filters
Franz Glasner <fzglas.hg@dom66.de>
parents: 165
diff changeset
80 To switch to expression-mode.
bff8b900713a REFACTOR: All documentation pages refactored: merge intro and details for lexers and filters
Franz Glasner <fzglas.hg@dom66.de>
parents: 165
diff changeset
81
bff8b900713a REFACTOR: All documentation pages refactored: merge intro and details for lexers and filters
Franz Glasner <fzglas.hg@dom66.de>
parents: 165
diff changeset
82 A closing curly brace can be quoted with ``\}`` to not end the expression
bff8b900713a REFACTOR: All documentation pages refactored: merge intro and details for lexers and filters
Franz Glasner <fzglas.hg@dom66.de>
parents: 165
diff changeset
83 mode prematurely.
bff8b900713a REFACTOR: All documentation pages refactored: merge intro and details for lexers and filters
Franz Glasner <fzglas.hg@dom66.de>
parents: 165
diff changeset
84
212
18553f595b34 Allow nested \TEXT and \EXPR commands.
Franz Glasner <fzglas.hg@dom66.de>
parents: 209
diff changeset
85 - ``\TEXT`` as nested construct
18553f595b34 Allow nested \TEXT and \EXPR commands.
Franz Glasner <fzglas.hg@dom66.de>
parents: 209
diff changeset
86
168
bff8b900713a REFACTOR: All documentation pages refactored: merge intro and details for lexers and filters
Franz Glasner <fzglas.hg@dom66.de>
parents: 165
diff changeset
87 - ``\REM`` and ``\REMARK`` for remarks (aka comments)
bff8b900713a REFACTOR: All documentation pages refactored: merge intro and details for lexers and filters
Franz Glasner <fzglas.hg@dom66.de>
parents: 165
diff changeset
88
bff8b900713a REFACTOR: All documentation pages refactored: merge intro and details for lexers and filters
Franz Glasner <fzglas.hg@dom66.de>
parents: 165
diff changeset
89 - :ref:`explicit-token-types`
bff8b900713a REFACTOR: All documentation pages refactored: merge intro and details for lexers and filters
Franz Glasner <fzglas.hg@dom66.de>
parents: 165
diff changeset
90
bff8b900713a REFACTOR: All documentation pages refactored: merge intro and details for lexers and filters
Franz Glasner <fzglas.hg@dom66.de>
parents: 165
diff changeset
91
125
3629bf09b30d Much more documentation including most details of the AlgPseudocodeLexer
Franz Glasner <fzglas.hg@dom66.de>
parents: 88
diff changeset
92 Lexer Options
3629bf09b30d Much more documentation including most details of the AlgPseudocodeLexer
Franz Glasner <fzglas.hg@dom66.de>
parents: 88
diff changeset
93 =============
3629bf09b30d Much more documentation including most details of the AlgPseudocodeLexer
Franz Glasner <fzglas.hg@dom66.de>
parents: 88
diff changeset
94
160
b4028838e0c8 Implement lexer option "prohibit_raiseonerror_filter".
Franz Glasner <fzglas.hg@dom66.de>
parents: 159
diff changeset
95 .. describe:: prohibit_raiseonerror_filter
b4028838e0c8 Implement lexer option "prohibit_raiseonerror_filter".
Franz Glasner <fzglas.hg@dom66.de>
parents: 159
diff changeset
96
165
88f872c50aae Markup of Python objects in docs
Franz Glasner <fzglas.hg@dom66.de>
parents: 164
diff changeset
97 **Type:** :py:class:`bool`
160
b4028838e0c8 Implement lexer option "prohibit_raiseonerror_filter".
Franz Glasner <fzglas.hg@dom66.de>
parents: 159
diff changeset
98
172
ad80fcbf7b47 Docs formatting
Franz Glasner <fzglas.hg@dom66.de>
parents: 169
diff changeset
99 **Default:** :py:obj:`None`
160
b4028838e0c8 Implement lexer option "prohibit_raiseonerror_filter".
Franz Glasner <fzglas.hg@dom66.de>
parents: 159
diff changeset
100
172
ad80fcbf7b47 Docs formatting
Franz Glasner <fzglas.hg@dom66.de>
parents: 169
diff changeset
101 If :py:obj:`True` the `raiseonerror` filter is not allowed to be
ad80fcbf7b47 Docs formatting
Franz Glasner <fzglas.hg@dom66.de>
parents: 169
diff changeset
102 applied by `Sphinx`_ when :py:meth:`Lexer.add_filter` is called.
165
88f872c50aae Markup of Python objects in docs
Franz Glasner <fzglas.hg@dom66.de>
parents: 164
diff changeset
103
160
b4028838e0c8 Implement lexer option "prohibit_raiseonerror_filter".
Franz Glasner <fzglas.hg@dom66.de>
parents: 159
diff changeset
104 This setting does not apply to filters that are set by the standard
b4028838e0c8 Implement lexer option "prohibit_raiseonerror_filter".
Franz Glasner <fzglas.hg@dom66.de>
parents: 159
diff changeset
105 lexer option `filters`.
b4028838e0c8 Implement lexer option "prohibit_raiseonerror_filter".
Franz Glasner <fzglas.hg@dom66.de>
parents: 159
diff changeset
106
142
5df4403f9e18 Reformae the description of the lexer options
Franz Glasner <fzglas.hg@dom66.de>
parents: 127
diff changeset
107 .. describe:: no_end
125
3629bf09b30d Much more documentation including most details of the AlgPseudocodeLexer
Franz Glasner <fzglas.hg@dom66.de>
parents: 88
diff changeset
108
165
88f872c50aae Markup of Python objects in docs
Franz Glasner <fzglas.hg@dom66.de>
parents: 164
diff changeset
109 **Type:** :py:class:`bool`
142
5df4403f9e18 Reformae the description of the lexer options
Franz Glasner <fzglas.hg@dom66.de>
parents: 127
diff changeset
110
172
ad80fcbf7b47 Docs formatting
Franz Glasner <fzglas.hg@dom66.de>
parents: 169
diff changeset
111 **Default:** :py:obj:`False`
125
3629bf09b30d Much more documentation including most details of the AlgPseudocodeLexer
Franz Glasner <fzglas.hg@dom66.de>
parents: 88
diff changeset
112
172
ad80fcbf7b47 Docs formatting
Franz Glasner <fzglas.hg@dom66.de>
parents: 169
diff changeset
113 If :py:obj:`True` all the ``\ENDxxx`` commands will be skipped and yield
169
3c517c22df9c Much more details and refinements in the docs
Franz Glasner <fzglas.hg@dom66.de>
parents: 168
diff changeset
114 no output.
125
3629bf09b30d Much more documentation including most details of the AlgPseudocodeLexer
Franz Glasner <fzglas.hg@dom66.de>
parents: 88
diff changeset
115
142
5df4403f9e18 Reformae the description of the lexer options
Franz Glasner <fzglas.hg@dom66.de>
parents: 127
diff changeset
116 .. describe:: gets
125
3629bf09b30d Much more documentation including most details of the AlgPseudocodeLexer
Franz Glasner <fzglas.hg@dom66.de>
parents: 88
diff changeset
117
165
88f872c50aae Markup of Python objects in docs
Franz Glasner <fzglas.hg@dom66.de>
parents: 164
diff changeset
118 **Type:** :py:class:`str` or :py:obj:`None`
125
3629bf09b30d Much more documentation including most details of the AlgPseudocodeLexer
Franz Glasner <fzglas.hg@dom66.de>
parents: 88
diff changeset
119
212
18553f595b34 Allow nested \TEXT and \EXPR commands.
Franz Glasner <fzglas.hg@dom66.de>
parents: 209
diff changeset
120 **Default:** :py:obj:`None` (yields ``⟵``)
125
3629bf09b30d Much more documentation including most details of the AlgPseudocodeLexer
Franz Glasner <fzglas.hg@dom66.de>
parents: 88
diff changeset
121
142
5df4403f9e18 Reformae the description of the lexer options
Franz Glasner <fzglas.hg@dom66.de>
parents: 127
diff changeset
122 The operator symbol to be printed by the command ``\GETS``.
5df4403f9e18 Reformae the description of the lexer options
Franz Glasner <fzglas.hg@dom66.de>
parents: 127
diff changeset
123
5df4403f9e18 Reformae the description of the lexer options
Franz Glasner <fzglas.hg@dom66.de>
parents: 127
diff changeset
124 An often used alternative is ``:=``.
125
3629bf09b30d Much more documentation including most details of the AlgPseudocodeLexer
Franz Glasner <fzglas.hg@dom66.de>
parents: 88
diff changeset
125
142
5df4403f9e18 Reformae the description of the lexer options
Franz Glasner <fzglas.hg@dom66.de>
parents: 127
diff changeset
126 .. describe:: remark
5df4403f9e18 Reformae the description of the lexer options
Franz Glasner <fzglas.hg@dom66.de>
parents: 127
diff changeset
127
165
88f872c50aae Markup of Python objects in docs
Franz Glasner <fzglas.hg@dom66.de>
parents: 164
diff changeset
128 **Type:** :py:class:`str` or :py:obj:`None`
125
3629bf09b30d Much more documentation including most details of the AlgPseudocodeLexer
Franz Glasner <fzglas.hg@dom66.de>
parents: 88
diff changeset
129
172
ad80fcbf7b47 Docs formatting
Franz Glasner <fzglas.hg@dom66.de>
parents: 169
diff changeset
130 **Default:** :py:obj:`None` (yields ``▷``)
125
3629bf09b30d Much more documentation including most details of the AlgPseudocodeLexer
Franz Glasner <fzglas.hg@dom66.de>
parents: 88
diff changeset
131
142
5df4403f9e18 Reformae the description of the lexer options
Franz Glasner <fzglas.hg@dom66.de>
parents: 127
diff changeset
132 The symbol to be printed as when starting comments with
5df4403f9e18 Reformae the description of the lexer options
Franz Glasner <fzglas.hg@dom66.de>
parents: 127
diff changeset
133 ``\REMARK`` or ``\REM``.
125
3629bf09b30d Much more documentation including most details of the AlgPseudocodeLexer
Franz Glasner <fzglas.hg@dom66.de>
parents: 88
diff changeset
134
144
b616f9645e37 More referencing with internal and external links
Franz Glasner <fzglas.hg@dom66.de>
parents: 142
diff changeset
135 To use a lexer with non-default options in `Sphinx`_ see section
b616f9645e37 More referencing with internal and external links
Franz Glasner <fzglas.hg@dom66.de>
parents: 142
diff changeset
136 :ref:`customized-sphinx-lexers`.
b616f9645e37 More referencing with internal and external links
Franz Glasner <fzglas.hg@dom66.de>
parents: 142
diff changeset
137
125
3629bf09b30d Much more documentation including most details of the AlgPseudocodeLexer
Franz Glasner <fzglas.hg@dom66.de>
parents: 88
diff changeset
138
3629bf09b30d Much more documentation including most details of the AlgPseudocodeLexer
Franz Glasner <fzglas.hg@dom66.de>
parents: 88
diff changeset
139 Comments
3629bf09b30d Much more documentation including most details of the AlgPseudocodeLexer
Franz Glasner <fzglas.hg@dom66.de>
parents: 88
diff changeset
140 ========
3629bf09b30d Much more documentation including most details of the AlgPseudocodeLexer
Franz Glasner <fzglas.hg@dom66.de>
parents: 88
diff changeset
141
150
4acf578ae93f Much more details in the documentation
Franz Glasner <fzglas.hg@dom66.de>
parents: 148
diff changeset
142 - with the ``\REMARK`` or ``\REM`` keywords (this includes a leading symbol)
125
3629bf09b30d Much more documentation including most details of the AlgPseudocodeLexer
Franz Glasner <fzglas.hg@dom66.de>
parents: 88
diff changeset
143 - multi-line comments with ``/* ... */``; they can be **nested**
3629bf09b30d Much more documentation including most details of the AlgPseudocodeLexer
Franz Glasner <fzglas.hg@dom66.de>
parents: 88
diff changeset
144 - multi-line comments with ``(* ... *)``; they can be **nested**
3629bf09b30d Much more documentation including most details of the AlgPseudocodeLexer
Franz Glasner <fzglas.hg@dom66.de>
parents: 88
diff changeset
145 - single-line comments with ``//`` or ``#`` (until the end of the line)
3629bf09b30d Much more documentation including most details of the AlgPseudocodeLexer
Franz Glasner <fzglas.hg@dom66.de>
parents: 88
diff changeset
146
150
4acf578ae93f Much more details in the documentation
Franz Glasner <fzglas.hg@dom66.de>
parents: 148
diff changeset
147 .. code-block:: algpseudocode
4acf578ae93f Much more details in the documentation
Franz Glasner <fzglas.hg@dom66.de>
parents: 148
diff changeset
148
4acf578ae93f Much more details in the documentation
Franz Glasner <fzglas.hg@dom66.de>
parents: 148
diff changeset
149 /*
4acf578ae93f Much more details in the documentation
Franz Glasner <fzglas.hg@dom66.de>
parents: 148
diff changeset
150 * A single multiline comment
4acf578ae93f Much more details in the documentation
Franz Glasner <fzglas.hg@dom66.de>
parents: 148
diff changeset
151 */
4acf578ae93f Much more details in the documentation
Franz Glasner <fzglas.hg@dom66.de>
parents: 148
diff changeset
152
4acf578ae93f Much more details in the documentation
Franz Glasner <fzglas.hg@dom66.de>
parents: 148
diff changeset
153 /*
4acf578ae93f Much more details in the documentation
Franz Glasner <fzglas.hg@dom66.de>
parents: 148
diff changeset
154 * A multiline comment
4acf578ae93f Much more details in the documentation
Franz Glasner <fzglas.hg@dom66.de>
parents: 148
diff changeset
155 *
4acf578ae93f Much more details in the documentation
Franz Glasner <fzglas.hg@dom66.de>
parents: 148
diff changeset
156 * /* This is a nested multi-line comment */
4acf578ae93f Much more details in the documentation
Franz Glasner <fzglas.hg@dom66.de>
parents: 148
diff changeset
157 *
4acf578ae93f Much more details in the documentation
Franz Glasner <fzglas.hg@dom66.de>
parents: 148
diff changeset
158 */
4acf578ae93f Much more details in the documentation
Franz Glasner <fzglas.hg@dom66.de>
parents: 148
diff changeset
159
4acf578ae93f Much more details in the documentation
Franz Glasner <fzglas.hg@dom66.de>
parents: 148
diff changeset
160 (*
4acf578ae93f Much more details in the documentation
Franz Glasner <fzglas.hg@dom66.de>
parents: 148
diff changeset
161 * A multiline comment
4acf578ae93f Much more details in the documentation
Franz Glasner <fzglas.hg@dom66.de>
parents: 148
diff changeset
162 *
4acf578ae93f Much more details in the documentation
Franz Glasner <fzglas.hg@dom66.de>
parents: 148
diff changeset
163 * (* This is a nested multi-line comment *)
4acf578ae93f Much more details in the documentation
Franz Glasner <fzglas.hg@dom66.de>
parents: 148
diff changeset
164 *
4acf578ae93f Much more details in the documentation
Franz Glasner <fzglas.hg@dom66.de>
parents: 148
diff changeset
165 *)
4acf578ae93f Much more details in the documentation
Franz Glasner <fzglas.hg@dom66.de>
parents: 148
diff changeset
166
4acf578ae93f Much more details in the documentation
Franz Glasner <fzglas.hg@dom66.de>
parents: 148
diff changeset
167 // A single-line comment
4acf578ae93f Much more details in the documentation
Franz Glasner <fzglas.hg@dom66.de>
parents: 148
diff changeset
168
4acf578ae93f Much more details in the documentation
Franz Glasner <fzglas.hg@dom66.de>
parents: 148
diff changeset
169 # A single-line comment
4acf578ae93f Much more details in the documentation
Franz Glasner <fzglas.hg@dom66.de>
parents: 148
diff changeset
170
213
d470250f8451 Title/metadata of PDF documentation builds:
Franz Glasner <fzglas.hg@dom66.de>
parents: 212
diff changeset
171 \REM A remark is a single-line comment with a leading symbol
150
4acf578ae93f Much more details in the documentation
Franz Glasner <fzglas.hg@dom66.de>
parents: 148
diff changeset
172
125
3629bf09b30d Much more documentation including most details of the AlgPseudocodeLexer
Franz Glasner <fzglas.hg@dom66.de>
parents: 88
diff changeset
173
3629bf09b30d Much more documentation including most details of the AlgPseudocodeLexer
Franz Glasner <fzglas.hg@dom66.de>
parents: 88
diff changeset
174 Literals
3629bf09b30d Much more documentation including most details of the AlgPseudocodeLexer
Franz Glasner <fzglas.hg@dom66.de>
parents: 88
diff changeset
175 ========
3629bf09b30d Much more documentation including most details of the AlgPseudocodeLexer
Franz Glasner <fzglas.hg@dom66.de>
parents: 88
diff changeset
176
150
4acf578ae93f Much more details in the documentation
Franz Glasner <fzglas.hg@dom66.de>
parents: 148
diff changeset
177 Strings and numbers as in `Python`_. String prefixes ``r``, ``f`` and ``t``
4acf578ae93f Much more details in the documentation
Franz Glasner <fzglas.hg@dom66.de>
parents: 148
diff changeset
178 are not supported -- ``u`` and ``b`` are.
125
3629bf09b30d Much more documentation including most details of the AlgPseudocodeLexer
Franz Glasner <fzglas.hg@dom66.de>
parents: 88
diff changeset
179
3629bf09b30d Much more documentation including most details of the AlgPseudocodeLexer
Franz Glasner <fzglas.hg@dom66.de>
parents: 88
diff changeset
180 To yield non-string-delimiting single- and double-quotes you have to escape them
3629bf09b30d Much more documentation including most details of the AlgPseudocodeLexer
Franz Glasner <fzglas.hg@dom66.de>
parents: 88
diff changeset
181 using ``\'`` or ``\"``. This must be used to typeset something as
3629bf09b30d Much more documentation including most details of the AlgPseudocodeLexer
Franz Glasner <fzglas.hg@dom66.de>
parents: 88
diff changeset
182 :algpseudocode:`f\\'(x) = 0`.
3629bf09b30d Much more documentation including most details of the AlgPseudocodeLexer
Franz Glasner <fzglas.hg@dom66.de>
parents: 88
diff changeset
183
150
4acf578ae93f Much more details in the documentation
Franz Glasner <fzglas.hg@dom66.de>
parents: 148
diff changeset
184 .. code-block:: algpseudocode
4acf578ae93f Much more details in the documentation
Franz Glasner <fzglas.hg@dom66.de>
parents: 148
diff changeset
185
241
7df1fd3bab87 In the number example use 1234567890 also
Franz Glasner <fzglas.hg@dom66.de>
parents: 237
diff changeset
186 0 1234567890 0xdead 0b100001 0o720 2.7 2.7e-54
150
4acf578ae93f Much more details in the documentation
Franz Glasner <fzglas.hg@dom66.de>
parents: 148
diff changeset
187
4acf578ae93f Much more details in the documentation
Franz Glasner <fzglas.hg@dom66.de>
parents: 148
diff changeset
188 "A string with an escaped double-quote \" "
4acf578ae93f Much more details in the documentation
Franz Glasner <fzglas.hg@dom66.de>
parents: 148
diff changeset
189
4acf578ae93f Much more details in the documentation
Franz Glasner <fzglas.hg@dom66.de>
parents: 148
diff changeset
190 'Another string with an escaped single-quote \' '
4acf578ae93f Much more details in the documentation
Franz Glasner <fzglas.hg@dom66.de>
parents: 148
diff changeset
191
4acf578ae93f Much more details in the documentation
Franz Glasner <fzglas.hg@dom66.de>
parents: 148
diff changeset
192 """A multiline
4acf578ae93f Much more details in the documentation
Franz Glasner <fzglas.hg@dom66.de>
parents: 148
diff changeset
193 string
4acf578ae93f Much more details in the documentation
Franz Glasner <fzglas.hg@dom66.de>
parents: 148
diff changeset
194 """
4acf578ae93f Much more details in the documentation
Franz Glasner <fzglas.hg@dom66.de>
parents: 148
diff changeset
195
4acf578ae93f Much more details in the documentation
Franz Glasner <fzglas.hg@dom66.de>
parents: 148
diff changeset
196 '''Another multiline string
4acf578ae93f Much more details in the documentation
Franz Glasner <fzglas.hg@dom66.de>
parents: 148
diff changeset
197
4acf578ae93f Much more details in the documentation
Franz Glasner <fzglas.hg@dom66.de>
parents: 148
diff changeset
198 '''
4acf578ae93f Much more details in the documentation
Franz Glasner <fzglas.hg@dom66.de>
parents: 148
diff changeset
199
4acf578ae93f Much more details in the documentation
Franz Glasner <fzglas.hg@dom66.de>
parents: 148
diff changeset
200 b"A \x20 byte string"
4acf578ae93f Much more details in the documentation
Franz Glasner <fzglas.hg@dom66.de>
parents: 148
diff changeset
201
4acf578ae93f Much more details in the documentation
Franz Glasner <fzglas.hg@dom66.de>
parents: 148
diff changeset
202 u'An explicit Unicode \u1234 string'
4acf578ae93f Much more details in the documentation
Franz Glasner <fzglas.hg@dom66.de>
parents: 148
diff changeset
203
4acf578ae93f Much more details in the documentation
Franz Glasner <fzglas.hg@dom66.de>
parents: 148
diff changeset
204 \" a non string
4acf578ae93f Much more details in the documentation
Franz Glasner <fzglas.hg@dom66.de>
parents: 148
diff changeset
205
4acf578ae93f Much more details in the documentation
Franz Glasner <fzglas.hg@dom66.de>
parents: 148
diff changeset
206 \' a non string also
4acf578ae93f Much more details in the documentation
Franz Glasner <fzglas.hg@dom66.de>
parents: 148
diff changeset
207
4acf578ae93f Much more details in the documentation
Franz Glasner <fzglas.hg@dom66.de>
parents: 148
diff changeset
208
4acf578ae93f Much more details in the documentation
Franz Glasner <fzglas.hg@dom66.de>
parents: 148
diff changeset
209 (Mathematical) Symbols and Operators
4acf578ae93f Much more details in the documentation
Franz Glasner <fzglas.hg@dom66.de>
parents: 148
diff changeset
210 ====================================
4acf578ae93f Much more details in the documentation
Franz Glasner <fzglas.hg@dom66.de>
parents: 148
diff changeset
211
4acf578ae93f Much more details in the documentation
Franz Glasner <fzglas.hg@dom66.de>
parents: 148
diff changeset
212 Some ASCII symbol combinations are recognized and replaced by a
4acf578ae93f Much more details in the documentation
Franz Glasner <fzglas.hg@dom66.de>
parents: 148
diff changeset
213 Unicode symbol:
4acf578ae93f Much more details in the documentation
Franz Glasner <fzglas.hg@dom66.de>
parents: 148
diff changeset
214
4acf578ae93f Much more details in the documentation
Franz Glasner <fzglas.hg@dom66.de>
parents: 148
diff changeset
215 .. code-block:: algpseudocode
4acf578ae93f Much more details in the documentation
Franz Glasner <fzglas.hg@dom66.de>
parents: 148
diff changeset
216
4acf578ae93f Much more details in the documentation
Franz Glasner <fzglas.hg@dom66.de>
parents: 148
diff changeset
217 \TEXT{<=>} <=>
4acf578ae93f Much more details in the documentation
Franz Glasner <fzglas.hg@dom66.de>
parents: 148
diff changeset
218 \TEXT{<->} <->
4acf578ae93f Much more details in the documentation
Franz Glasner <fzglas.hg@dom66.de>
parents: 148
diff changeset
219 \TEXT{<-} <-
4acf578ae93f Much more details in the documentation
Franz Glasner <fzglas.hg@dom66.de>
parents: 148
diff changeset
220 \TEXT{->} ->
4acf578ae93f Much more details in the documentation
Franz Glasner <fzglas.hg@dom66.de>
parents: 148
diff changeset
221 \TEXT{=>} =>
4acf578ae93f Much more details in the documentation
Franz Glasner <fzglas.hg@dom66.de>
parents: 148
diff changeset
222 \TEXT{<=} <=
4acf578ae93f Much more details in the documentation
Franz Glasner <fzglas.hg@dom66.de>
parents: 148
diff changeset
223 \TEXT{>=} >=
4acf578ae93f Much more details in the documentation
Franz Glasner <fzglas.hg@dom66.de>
parents: 148
diff changeset
224 \TEXT{<>} <>
4acf578ae93f Much more details in the documentation
Franz Glasner <fzglas.hg@dom66.de>
parents: 148
diff changeset
225 \TEXT{!=} !=
4acf578ae93f Much more details in the documentation
Franz Glasner <fzglas.hg@dom66.de>
parents: 148
diff changeset
226 \TEXT{:=} :=
4acf578ae93f Much more details in the documentation
Franz Glasner <fzglas.hg@dom66.de>
parents: 148
diff changeset
227 \TEXT{=:} =:
4acf578ae93f Much more details in the documentation
Franz Glasner <fzglas.hg@dom66.de>
parents: 148
diff changeset
228 \TEXT{?=} ?=
4acf578ae93f Much more details in the documentation
Franz Glasner <fzglas.hg@dom66.de>
parents: 148
diff changeset
229
4acf578ae93f Much more details in the documentation
Franz Glasner <fzglas.hg@dom66.de>
parents: 148
diff changeset
230 Unicode codepoints with property ``Sm`` are recognized as mathematical symbol
4acf578ae93f Much more details in the documentation
Franz Glasner <fzglas.hg@dom66.de>
parents: 148
diff changeset
231 and highlighted accordingly.
4acf578ae93f Much more details in the documentation
Franz Glasner <fzglas.hg@dom66.de>
parents: 148
diff changeset
232
125
3629bf09b30d Much more documentation including most details of the AlgPseudocodeLexer
Franz Glasner <fzglas.hg@dom66.de>
parents: 88
diff changeset
233
159
4ee0b1536ea6 Handle runs of dots in expressions (., .., ..., ...., ...)
Franz Glasner <fzglas.hg@dom66.de>
parents: 158
diff changeset
234 Punctuation
4ee0b1536ea6 Handle runs of dots in expressions (., .., ..., ...., ...)
Franz Glasner <fzglas.hg@dom66.de>
parents: 158
diff changeset
235 ===========
4ee0b1536ea6 Handle runs of dots in expressions (., .., ..., ...., ...)
Franz Glasner <fzglas.hg@dom66.de>
parents: 158
diff changeset
236
4ee0b1536ea6 Handle runs of dots in expressions (., .., ..., ...., ...)
Franz Glasner <fzglas.hg@dom66.de>
parents: 158
diff changeset
237 Runs of dots ``.``, ``..``, ``...``, ``....``, ... are handled
4ee0b1536ea6 Handle runs of dots in expressions (., .., ..., ...., ...)
Franz Glasner <fzglas.hg@dom66.de>
parents: 158
diff changeset
238 properly in expressions and yield a punctuation token.
4ee0b1536ea6 Handle runs of dots in expressions (., .., ..., ...., ...)
Franz Glasner <fzglas.hg@dom66.de>
parents: 158
diff changeset
239 They are not replaced by corresponding Unicode symbols.
4ee0b1536ea6 Handle runs of dots in expressions (., .., ..., ...., ...)
Franz Glasner <fzglas.hg@dom66.de>
parents: 158
diff changeset
240
4ee0b1536ea6 Handle runs of dots in expressions (., .., ..., ...., ...)
Franz Glasner <fzglas.hg@dom66.de>
parents: 158
diff changeset
241
169
3c517c22df9c Much more details and refinements in the docs
Franz Glasner <fzglas.hg@dom66.de>
parents: 168
diff changeset
242 Commands
125
3629bf09b30d Much more documentation including most details of the AlgPseudocodeLexer
Franz Glasner <fzglas.hg@dom66.de>
parents: 88
diff changeset
243 ========
3629bf09b30d Much more documentation including most details of the AlgPseudocodeLexer
Franz Glasner <fzglas.hg@dom66.de>
parents: 88
diff changeset
244
3629bf09b30d Much more documentation including most details of the AlgPseudocodeLexer
Franz Glasner <fzglas.hg@dom66.de>
parents: 88
diff changeset
245 - Start with a backslash character ``\``
3629bf09b30d Much more documentation including most details of the AlgPseudocodeLexer
Franz Glasner <fzglas.hg@dom66.de>
parents: 88
diff changeset
246 - Case-insensitive
169
3c517c22df9c Much more details and refinements in the docs
Franz Glasner <fzglas.hg@dom66.de>
parents: 168
diff changeset
247 - Yield mostly to :py:class:`pygments.Token.Keyword`
125
3629bf09b30d Much more documentation including most details of the AlgPseudocodeLexer
Franz Glasner <fzglas.hg@dom66.de>
parents: 88
diff changeset
248 - Translated if a translation is found
169
3c517c22df9c Much more details and refinements in the docs
Franz Glasner <fzglas.hg@dom66.de>
parents: 168
diff changeset
249 - Depending on the command---may have required or optional parameters
125
3629bf09b30d Much more documentation including most details of the AlgPseudocodeLexer
Franz Glasner <fzglas.hg@dom66.de>
parents: 88
diff changeset
250
169
3c517c22df9c Much more details and refinements in the docs
Franz Glasner <fzglas.hg@dom66.de>
parents: 168
diff changeset
251 Parameter handling is as follows:
125
3629bf09b30d Much more documentation including most details of the AlgPseudocodeLexer
Franz Glasner <fzglas.hg@dom66.de>
parents: 88
diff changeset
252
169
3c517c22df9c Much more details and refinements in the docs
Franz Glasner <fzglas.hg@dom66.de>
parents: 168
diff changeset
253 * Parameters are enclosed in curly braces ``{`` and ``}``
3c517c22df9c Much more details and refinements in the docs
Franz Glasner <fzglas.hg@dom66.de>
parents: 168
diff changeset
254 * Escaping within the braces is possible using the backslash ``\`` as
3c517c22df9c Much more details and refinements in the docs
Franz Glasner <fzglas.hg@dom66.de>
parents: 168
diff changeset
255 escape character
3c517c22df9c Much more details and refinements in the docs
Franz Glasner <fzglas.hg@dom66.de>
parents: 168
diff changeset
256 * Parameters are separated from the keyword/command by a (possibly empty) run
3c517c22df9c Much more details and refinements in the docs
Franz Glasner <fzglas.hg@dom66.de>
parents: 168
diff changeset
257 of space or TAB characters.
3c517c22df9c Much more details and refinements in the docs
Franz Glasner <fzglas.hg@dom66.de>
parents: 168
diff changeset
258 This is true for required and optional parameters.
209
f20177032d21 A chapter about escaping rules
Franz Glasner <fzglas.hg@dom66.de>
parents: 208
diff changeset
259 - Unrecognized commands typically result in a
f20177032d21 A chapter about escaping rules
Franz Glasner <fzglas.hg@dom66.de>
parents: 208
diff changeset
260 :py:class:`pygments.token.Token.Error` token.
162
11ce0903ff8b Yield lone backslash characters in expressions that not really escape anything as "Generic.Error" now.
Franz Glasner <fzglas.hg@dom66.de>
parents: 160
diff changeset
261
209
f20177032d21 A chapter about escaping rules
Franz Glasner <fzglas.hg@dom66.de>
parents: 208
diff changeset
262 More on escaping rules you can find in :ref:`this chapter <escaping-rules>`.
162
11ce0903ff8b Yield lone backslash characters in expressions that not really escape anything as "Generic.Error" now.
Franz Glasner <fzglas.hg@dom66.de>
parents: 160
diff changeset
263
125
3629bf09b30d Much more documentation including most details of the AlgPseudocodeLexer
Franz Glasner <fzglas.hg@dom66.de>
parents: 88
diff changeset
264
169
3c517c22df9c Much more details and refinements in the docs
Franz Glasner <fzglas.hg@dom66.de>
parents: 168
diff changeset
265 Commands With Required Parameters
3c517c22df9c Much more details and refinements in the docs
Franz Glasner <fzglas.hg@dom66.de>
parents: 168
diff changeset
266 ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
125
3629bf09b30d Much more documentation including most details of the AlgPseudocodeLexer
Franz Glasner <fzglas.hg@dom66.de>
parents: 88
diff changeset
267
3629bf09b30d Much more documentation including most details of the AlgPseudocodeLexer
Franz Glasner <fzglas.hg@dom66.de>
parents: 88
diff changeset
268 .. code-block:: algpseudocode
3629bf09b30d Much more documentation including most details of the AlgPseudocodeLexer
Franz Glasner <fzglas.hg@dom66.de>
parents: 88
diff changeset
269
3629bf09b30d Much more documentation including most details of the AlgPseudocodeLexer
Franz Glasner <fzglas.hg@dom66.de>
parents: 88
diff changeset
270 \TEXT{\PROGRAM {A Program\} or \PROG {A Program\}} \PROGRAM {A Program}
3629bf09b30d Much more documentation including most details of the AlgPseudocodeLexer
Franz Glasner <fzglas.hg@dom66.de>
parents: 88
diff changeset
271 \TEXT{\ALGORITHM{An Algorithm\} or \ALGO{An Algorithm\}} \ALGORITHM{An Algorithm}
3629bf09b30d Much more documentation including most details of the AlgPseudocodeLexer
Franz Glasner <fzglas.hg@dom66.de>
parents: 88
diff changeset
272 \TEXT{\PROCEDURE{A Procedure\} or \PROC{A Procedure\}} \PROCEDURE{A Procedure}
3629bf09b30d Much more documentation including most details of the AlgPseudocodeLexer
Franz Glasner <fzglas.hg@dom66.de>
parents: 88
diff changeset
273 \TEXT{\FUNCTION{A Function\} or \FUNC{A Function\} or \FN{A Function\}} \FUNCTION{A Function}
3629bf09b30d Much more documentation including most details of the AlgPseudocodeLexer
Franz Glasner <fzglas.hg@dom66.de>
parents: 88
diff changeset
274 \TEXT{\CLASS{A Class\}} \CLASS{A Class}
3629bf09b30d Much more documentation including most details of the AlgPseudocodeLexer
Franz Glasner <fzglas.hg@dom66.de>
parents: 88
diff changeset
275
3629bf09b30d Much more documentation including most details of the AlgPseudocodeLexer
Franz Glasner <fzglas.hg@dom66.de>
parents: 88
diff changeset
276 \TEXT{\STATEMENT{the expression\} \STATE{the expression\} \BLOCK{the expression\}} \STATEMENT{the expression}
3629bf09b30d Much more documentation including most details of the AlgPseudocodeLexer
Franz Glasner <fzglas.hg@dom66.de>
parents: 88
diff changeset
277
3629bf09b30d Much more documentation including most details of the AlgPseudocodeLexer
Franz Glasner <fzglas.hg@dom66.de>
parents: 88
diff changeset
278 \TEXT{expr1: \\EXPRESSION{expression a in b\} expr2: \\EXPR{expression b in a\}} \TEXT{expr1: \EXPRESSION{expression a in b} expr2: \EXPR{expression b in a}}
3629bf09b30d Much more documentation including most details of the AlgPseudocodeLexer
Franz Glasner <fzglas.hg@dom66.de>
parents: 88
diff changeset
279
3629bf09b30d Much more documentation including most details of the AlgPseudocodeLexer
Franz Glasner <fzglas.hg@dom66.de>
parents: 88
diff changeset
280 \TEXT{\TEXTSTATEMENT{the text\} \TEXTSTATE{the text\} \TSTATEMENT{the text\} \TSTATE{the text\} \TEXTBLOCK{the text\} \TBLOCK{the text\}} \TEXTSTATEMENT{the text}
3629bf09b30d Much more documentation including most details of the AlgPseudocodeLexer
Franz Glasner <fzglas.hg@dom66.de>
parents: 88
diff changeset
281
3629bf09b30d Much more documentation including most details of the AlgPseudocodeLexer
Franz Glasner <fzglas.hg@dom66.de>
parents: 88
diff changeset
282 \TEXT{\INPUT{Input 1\}} \INPUT{Input 1}
3629bf09b30d Much more documentation including most details of the AlgPseudocodeLexer
Franz Glasner <fzglas.hg@dom66.de>
parents: 88
diff changeset
283 \TEXT{\INPUTS{Input 2\}} \INPUTS{Input 2}
3629bf09b30d Much more documentation including most details of the AlgPseudocodeLexer
Franz Glasner <fzglas.hg@dom66.de>
parents: 88
diff changeset
284
3629bf09b30d Much more documentation including most details of the AlgPseudocodeLexer
Franz Glasner <fzglas.hg@dom66.de>
parents: 88
diff changeset
285 \TEXT{\OUTPUT{Output 1\}} \OUTPUT{Output 1}
3629bf09b30d Much more documentation including most details of the AlgPseudocodeLexer
Franz Glasner <fzglas.hg@dom66.de>
parents: 88
diff changeset
286 \TEXT{\OUTPUTS{Output 2\}} \OUTPUTS{Output 2}
3629bf09b30d Much more documentation including most details of the AlgPseudocodeLexer
Franz Glasner <fzglas.hg@dom66.de>
parents: 88
diff changeset
287
3629bf09b30d Much more documentation including most details of the AlgPseudocodeLexer
Franz Glasner <fzglas.hg@dom66.de>
parents: 88
diff changeset
288 \TEXT{\ENSURE{Whatever should be ensured!\}} \ENSURE{Whatever should be ensured!}
3629bf09b30d Much more documentation including most details of the AlgPseudocodeLexer
Franz Glasner <fzglas.hg@dom66.de>
parents: 88
diff changeset
289
142
5df4403f9e18 Reformae the description of the lexer options
Franz Glasner <fzglas.hg@dom66.de>
parents: 127
diff changeset
290 \TEXT{\REQUIRE{Whatever should be required.\}} \REQUIRE{Whatever should be required.}
125
3629bf09b30d Much more documentation including most details of the AlgPseudocodeLexer
Franz Glasner <fzglas.hg@dom66.de>
parents: 88
diff changeset
291
3629bf09b30d Much more documentation including most details of the AlgPseudocodeLexer
Franz Glasner <fzglas.hg@dom66.de>
parents: 88
diff changeset
292 \TEXT{\RETURNS{Return 2\}} \RETURNS{Return 2}
3629bf09b30d Much more documentation including most details of the AlgPseudocodeLexer
Franz Glasner <fzglas.hg@dom66.de>
parents: 88
diff changeset
293
3629bf09b30d Much more documentation including most details of the AlgPseudocodeLexer
Franz Glasner <fzglas.hg@dom66.de>
parents: 88
diff changeset
294 \TEXT{\CALL{a function\}(p1, p2)} \CALL{a function}(p1, p2)
3629bf09b30d Much more documentation including most details of the AlgPseudocodeLexer
Franz Glasner <fzglas.hg@dom66.de>
parents: 88
diff changeset
295
150
4acf578ae93f Much more details in the documentation
Franz Glasner <fzglas.hg@dom66.de>
parents: 148
diff changeset
296 \TEXT{\NAME{an entity name\}} \NAME{an entity name}
4acf578ae93f Much more details in the documentation
Franz Glasner <fzglas.hg@dom66.de>
parents: 148
diff changeset
297
125
3629bf09b30d Much more documentation including most details of the AlgPseudocodeLexer
Franz Glasner <fzglas.hg@dom66.de>
parents: 88
diff changeset
298
169
3c517c22df9c Much more details and refinements in the docs
Franz Glasner <fzglas.hg@dom66.de>
parents: 168
diff changeset
299 Commands With Optional Parameters
3c517c22df9c Much more details and refinements in the docs
Franz Glasner <fzglas.hg@dom66.de>
parents: 168
diff changeset
300 ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
125
3629bf09b30d Much more documentation including most details of the AlgPseudocodeLexer
Franz Glasner <fzglas.hg@dom66.de>
parents: 88
diff changeset
301
169
3c517c22df9c Much more details and refinements in the docs
Franz Glasner <fzglas.hg@dom66.de>
parents: 168
diff changeset
302 Some ``END``-commands have optional parameters:
125
3629bf09b30d Much more documentation including most details of the AlgPseudocodeLexer
Franz Glasner <fzglas.hg@dom66.de>
parents: 88
diff changeset
303
3629bf09b30d Much more documentation including most details of the AlgPseudocodeLexer
Franz Glasner <fzglas.hg@dom66.de>
parents: 88
diff changeset
304 .. code-block:: algpseudocode
3629bf09b30d Much more documentation including most details of the AlgPseudocodeLexer
Franz Glasner <fzglas.hg@dom66.de>
parents: 88
diff changeset
305
3629bf09b30d Much more documentation including most details of the AlgPseudocodeLexer
Franz Glasner <fzglas.hg@dom66.de>
parents: 88
diff changeset
306 \TEXT{\ENDPROGRAM \ENDPROG} \ENDPROGRAM
3629bf09b30d Much more documentation including most details of the AlgPseudocodeLexer
Franz Glasner <fzglas.hg@dom66.de>
parents: 88
diff changeset
307 \TEXT{\ENDALGORITHM \ENDALGO} \ENDALGORITHM
3629bf09b30d Much more documentation including most details of the AlgPseudocodeLexer
Franz Glasner <fzglas.hg@dom66.de>
parents: 88
diff changeset
308 \TEXT{\ENDPROCEDURE \ENDPROC} \ENDPROCEDURE
3629bf09b30d Much more documentation including most details of the AlgPseudocodeLexer
Franz Glasner <fzglas.hg@dom66.de>
parents: 88
diff changeset
309 \TEXT{\ENDFUNCTION \ENDFUNC \ENDFN} \ENDFUNCTION
3629bf09b30d Much more documentation including most details of the AlgPseudocodeLexer
Franz Glasner <fzglas.hg@dom66.de>
parents: 88
diff changeset
310 \TEXT{\ENDCLASS} \ENDCLASS
3629bf09b30d Much more documentation including most details of the AlgPseudocodeLexer
Franz Glasner <fzglas.hg@dom66.de>
parents: 88
diff changeset
311
3629bf09b30d Much more documentation including most details of the AlgPseudocodeLexer
Franz Glasner <fzglas.hg@dom66.de>
parents: 88
diff changeset
312 They are used like this:
3629bf09b30d Much more documentation including most details of the AlgPseudocodeLexer
Franz Glasner <fzglas.hg@dom66.de>
parents: 88
diff changeset
313
3629bf09b30d Much more documentation including most details of the AlgPseudocodeLexer
Franz Glasner <fzglas.hg@dom66.de>
parents: 88
diff changeset
314 .. code-block:: algpseudocode
3629bf09b30d Much more documentation including most details of the AlgPseudocodeLexer
Franz Glasner <fzglas.hg@dom66.de>
parents: 88
diff changeset
315
3629bf09b30d Much more documentation including most details of the AlgPseudocodeLexer
Franz Glasner <fzglas.hg@dom66.de>
parents: 88
diff changeset
316 \TEXT{\CLASS{Foo Bar Class\} ... \END CLASS {Foo Bar Class\}} \TEXT{yields} \CLASS{Foo Bar Class} ... \END CLASS {Foo Bar Class}
3629bf09b30d Much more documentation including most details of the AlgPseudocodeLexer
Franz Glasner <fzglas.hg@dom66.de>
parents: 88
diff changeset
317
169
3c517c22df9c Much more details and refinements in the docs
Franz Glasner <fzglas.hg@dom66.de>
parents: 168
diff changeset
318 \TEXT{\CLASS{Foo Bar Class\} ... \END CLASS} \TEXT{yields} \CLASS{Foo Bar Class} ... \END CLASS
3c517c22df9c Much more details and refinements in the docs
Franz Glasner <fzglas.hg@dom66.de>
parents: 168
diff changeset
319
3c517c22df9c Much more details and refinements in the docs
Franz Glasner <fzglas.hg@dom66.de>
parents: 168
diff changeset
320 .. seealso:: For other syntax variants concerning `END` see also section
3c517c22df9c Much more details and refinements in the docs
Franz Glasner <fzglas.hg@dom66.de>
parents: 168
diff changeset
321 `END-Commands`_.
125
3629bf09b30d Much more documentation including most details of the AlgPseudocodeLexer
Franz Glasner <fzglas.hg@dom66.de>
parents: 88
diff changeset
322
3629bf09b30d Much more documentation including most details of the AlgPseudocodeLexer
Franz Glasner <fzglas.hg@dom66.de>
parents: 88
diff changeset
323
169
3c517c22df9c Much more details and refinements in the docs
Franz Glasner <fzglas.hg@dom66.de>
parents: 168
diff changeset
324 Commands Without Parameters
3c517c22df9c Much more details and refinements in the docs
Franz Glasner <fzglas.hg@dom66.de>
parents: 168
diff changeset
325 ~~~~~~~~~~~~~~~~~~~~~~~~~~~
125
3629bf09b30d Much more documentation including most details of the AlgPseudocodeLexer
Franz Glasner <fzglas.hg@dom66.de>
parents: 88
diff changeset
326
169
3c517c22df9c Much more details and refinements in the docs
Franz Glasner <fzglas.hg@dom66.de>
parents: 168
diff changeset
327 "Normal" Commands
125
3629bf09b30d Much more documentation including most details of the AlgPseudocodeLexer
Franz Glasner <fzglas.hg@dom66.de>
parents: 88
diff changeset
328 '''''''''''''''''
3629bf09b30d Much more documentation including most details of the AlgPseudocodeLexer
Franz Glasner <fzglas.hg@dom66.de>
parents: 88
diff changeset
329
3629bf09b30d Much more documentation including most details of the AlgPseudocodeLexer
Franz Glasner <fzglas.hg@dom66.de>
parents: 88
diff changeset
330 .. code-block:: algpseudocode
3629bf09b30d Much more documentation including most details of the AlgPseudocodeLexer
Franz Glasner <fzglas.hg@dom66.de>
parents: 88
diff changeset
331
3629bf09b30d Much more documentation including most details of the AlgPseudocodeLexer
Franz Glasner <fzglas.hg@dom66.de>
parents: 88
diff changeset
332 \TEXT{\IF} \IF
3629bf09b30d Much more documentation including most details of the AlgPseudocodeLexer
Franz Glasner <fzglas.hg@dom66.de>
parents: 88
diff changeset
333 \TEXT{\THEN} \THEN
3629bf09b30d Much more documentation including most details of the AlgPseudocodeLexer
Franz Glasner <fzglas.hg@dom66.de>
parents: 88
diff changeset
334 \TEXT{\ELSE} \ELSE
3629bf09b30d Much more documentation including most details of the AlgPseudocodeLexer
Franz Glasner <fzglas.hg@dom66.de>
parents: 88
diff changeset
335 \TEXT{\ELSEIF or \ELSIF or \ELIF} \ELSEIF \text{or} \ELSIF \text{or} \ELIF
3629bf09b30d Much more documentation including most details of the AlgPseudocodeLexer
Franz Glasner <fzglas.hg@dom66.de>
parents: 88
diff changeset
336 \TEXT{\DO} \DO
3629bf09b30d Much more documentation including most details of the AlgPseudocodeLexer
Franz Glasner <fzglas.hg@dom66.de>
parents: 88
diff changeset
337 \TEXT{\WHILE} \WHILE
3629bf09b30d Much more documentation including most details of the AlgPseudocodeLexer
Franz Glasner <fzglas.hg@dom66.de>
parents: 88
diff changeset
338 \TEXT{\FORALL} \FORALL
3629bf09b30d Much more documentation including most details of the AlgPseudocodeLexer
Franz Glasner <fzglas.hg@dom66.de>
parents: 88
diff changeset
339 \TEXT{\FOR} \FOR
3629bf09b30d Much more documentation including most details of the AlgPseudocodeLexer
Franz Glasner <fzglas.hg@dom66.de>
parents: 88
diff changeset
340 \TEXT{\FROM} \FROM
3629bf09b30d Much more documentation including most details of the AlgPseudocodeLexer
Franz Glasner <fzglas.hg@dom66.de>
parents: 88
diff changeset
341 \TEXT{\TO} \TO
3629bf09b30d Much more documentation including most details of the AlgPseudocodeLexer
Franz Glasner <fzglas.hg@dom66.de>
parents: 88
diff changeset
342 \TEXT{\STEP} \STEP
3629bf09b30d Much more documentation including most details of the AlgPseudocodeLexer
Franz Glasner <fzglas.hg@dom66.de>
parents: 88
diff changeset
343 \TEXT{\IN} \IN
3629bf09b30d Much more documentation including most details of the AlgPseudocodeLexer
Franz Glasner <fzglas.hg@dom66.de>
parents: 88
diff changeset
344 \TEXT{\LOOP} \LOOP
3629bf09b30d Much more documentation including most details of the AlgPseudocodeLexer
Franz Glasner <fzglas.hg@dom66.de>
parents: 88
diff changeset
345 \TEXT{\REPEAT} \REPEAT
3629bf09b30d Much more documentation including most details of the AlgPseudocodeLexer
Franz Glasner <fzglas.hg@dom66.de>
parents: 88
diff changeset
346 \TEXT{\UNTIL} \UNTIL
3629bf09b30d Much more documentation including most details of the AlgPseudocodeLexer
Franz Glasner <fzglas.hg@dom66.de>
parents: 88
diff changeset
347
3629bf09b30d Much more documentation including most details of the AlgPseudocodeLexer
Franz Glasner <fzglas.hg@dom66.de>
parents: 88
diff changeset
348 \TEXT{\RETURN} \RETURN
3629bf09b30d Much more documentation including most details of the AlgPseudocodeLexer
Franz Glasner <fzglas.hg@dom66.de>
parents: 88
diff changeset
349
3629bf09b30d Much more documentation including most details of the AlgPseudocodeLexer
Franz Glasner <fzglas.hg@dom66.de>
parents: 88
diff changeset
350 \TEXT{\BEGIN} \BEGIN
3629bf09b30d Much more documentation including most details of the AlgPseudocodeLexer
Franz Glasner <fzglas.hg@dom66.de>
parents: 88
diff changeset
351 \TEXT{\END} \END
3629bf09b30d Much more documentation including most details of the AlgPseudocodeLexer
Franz Glasner <fzglas.hg@dom66.de>
parents: 88
diff changeset
352
3629bf09b30d Much more documentation including most details of the AlgPseudocodeLexer
Franz Glasner <fzglas.hg@dom66.de>
parents: 88
diff changeset
353 \TEXT{\IS} \IS
3629bf09b30d Much more documentation including most details of the AlgPseudocodeLexer
Franz Glasner <fzglas.hg@dom66.de>
parents: 88
diff changeset
354 \TEXT{\WITH} \WITH
3629bf09b30d Much more documentation including most details of the AlgPseudocodeLexer
Franz Glasner <fzglas.hg@dom66.de>
parents: 88
diff changeset
355
150
4acf578ae93f Much more details in the documentation
Franz Glasner <fzglas.hg@dom66.de>
parents: 148
diff changeset
356 \TEXT{\GETS} \GETS
4acf578ae93f Much more details in the documentation
Franz Glasner <fzglas.hg@dom66.de>
parents: 148
diff changeset
357
4acf578ae93f Much more details in the documentation
Franz Glasner <fzglas.hg@dom66.de>
parents: 148
diff changeset
358 \TEXT{\\REMARK or \\REM} \REMARK A comment with a leading symbol
125
3629bf09b30d Much more documentation including most details of the AlgPseudocodeLexer
Franz Glasner <fzglas.hg@dom66.de>
parents: 88
diff changeset
359
3629bf09b30d Much more documentation including most details of the AlgPseudocodeLexer
Franz Glasner <fzglas.hg@dom66.de>
parents: 88
diff changeset
360 ``\REMARK`` or ``\REM`` is special: all characters to the end of the
150
4acf578ae93f Much more details in the documentation
Franz Glasner <fzglas.hg@dom66.de>
parents: 148
diff changeset
361 line are taken as comment; curly braces are not needed---in fact:
4acf578ae93f Much more details in the documentation
Franz Glasner <fzglas.hg@dom66.de>
parents: 148
diff changeset
362 they are interpreted to be part of the comment.
125
3629bf09b30d Much more documentation including most details of the AlgPseudocodeLexer
Franz Glasner <fzglas.hg@dom66.de>
parents: 88
diff changeset
363
3629bf09b30d Much more documentation including most details of the AlgPseudocodeLexer
Franz Glasner <fzglas.hg@dom66.de>
parents: 88
diff changeset
364
169
3c517c22df9c Much more details and refinements in the docs
Franz Glasner <fzglas.hg@dom66.de>
parents: 168
diff changeset
365 END-Commands
125
3629bf09b30d Much more documentation including most details of the AlgPseudocodeLexer
Franz Glasner <fzglas.hg@dom66.de>
parents: 88
diff changeset
366 ''''''''''''
3629bf09b30d Much more documentation including most details of the AlgPseudocodeLexer
Franz Glasner <fzglas.hg@dom66.de>
parents: 88
diff changeset
367
169
3c517c22df9c Much more details and refinements in the docs
Franz Glasner <fzglas.hg@dom66.de>
parents: 168
diff changeset
368 The separator character can be empty, a run of ASCII spaces, a run of
3c517c22df9c Much more details and refinements in the docs
Franz Glasner <fzglas.hg@dom66.de>
parents: 168
diff changeset
369 TAB characters, a single underscore ``_`` or a single hyphen ``-``
3c517c22df9c Much more details and refinements in the docs
Franz Glasner <fzglas.hg@dom66.de>
parents: 168
diff changeset
370 like:
125
3629bf09b30d Much more documentation including most details of the AlgPseudocodeLexer
Franz Glasner <fzglas.hg@dom66.de>
parents: 88
diff changeset
371
3629bf09b30d Much more documentation including most details of the AlgPseudocodeLexer
Franz Glasner <fzglas.hg@dom66.de>
parents: 88
diff changeset
372 ``\ENDIF``, ``\END IF``, ``\END-IF``, ``\END_IF`` or ``\END IF``
3629bf09b30d Much more documentation including most details of the AlgPseudocodeLexer
Franz Glasner <fzglas.hg@dom66.de>
parents: 88
diff changeset
373
3629bf09b30d Much more documentation including most details of the AlgPseudocodeLexer
Franz Glasner <fzglas.hg@dom66.de>
parents: 88
diff changeset
374
3629bf09b30d Much more documentation including most details of the AlgPseudocodeLexer
Franz Glasner <fzglas.hg@dom66.de>
parents: 88
diff changeset
375 .. code-block:: algpseudocode
3629bf09b30d Much more documentation including most details of the AlgPseudocodeLexer
Franz Glasner <fzglas.hg@dom66.de>
parents: 88
diff changeset
376
3629bf09b30d Much more documentation including most details of the AlgPseudocodeLexer
Franz Glasner <fzglas.hg@dom66.de>
parents: 88
diff changeset
377 \text{\ENDIF} \ENDIF \rem empty
3629bf09b30d Much more documentation including most details of the AlgPseudocodeLexer
Franz Glasner <fzglas.hg@dom66.de>
parents: 88
diff changeset
378
3629bf09b30d Much more documentation including most details of the AlgPseudocodeLexer
Franz Glasner <fzglas.hg@dom66.de>
parents: 88
diff changeset
379 \text{\END IF} \END IF \rem a single space
3629bf09b30d Much more documentation including most details of the AlgPseudocodeLexer
Franz Glasner <fzglas.hg@dom66.de>
parents: 88
diff changeset
380
3629bf09b30d Much more documentation including most details of the AlgPseudocodeLexer
Franz Glasner <fzglas.hg@dom66.de>
parents: 88
diff changeset
381 \text{\END IF} \END IF \rem two spaces
3629bf09b30d Much more documentation including most details of the AlgPseudocodeLexer
Franz Glasner <fzglas.hg@dom66.de>
parents: 88
diff changeset
382
3629bf09b30d Much more documentation including most details of the AlgPseudocodeLexer
Franz Glasner <fzglas.hg@dom66.de>
parents: 88
diff changeset
383 \text{\END-IF} \END-IF \rem a single hyphen
3629bf09b30d Much more documentation including most details of the AlgPseudocodeLexer
Franz Glasner <fzglas.hg@dom66.de>
parents: 88
diff changeset
384
3629bf09b30d Much more documentation including most details of the AlgPseudocodeLexer
Franz Glasner <fzglas.hg@dom66.de>
parents: 88
diff changeset
385 \text{\END_IF} \END_IF \rem a single underscore
3629bf09b30d Much more documentation including most details of the AlgPseudocodeLexer
Franz Glasner <fzglas.hg@dom66.de>
parents: 88
diff changeset
386
3629bf09b30d Much more documentation including most details of the AlgPseudocodeLexer
Franz Glasner <fzglas.hg@dom66.de>
parents: 88
diff changeset
387 \text{\END IF} \END IF \rem a single TAB character
3629bf09b30d Much more documentation including most details of the AlgPseudocodeLexer
Franz Glasner <fzglas.hg@dom66.de>
parents: 88
diff changeset
388
169
3c517c22df9c Much more details and refinements in the docs
Franz Glasner <fzglas.hg@dom66.de>
parents: 168
diff changeset
389 The list of END-commands (here always just with ``-`` as separator):
125
3629bf09b30d Much more documentation including most details of the AlgPseudocodeLexer
Franz Glasner <fzglas.hg@dom66.de>
parents: 88
diff changeset
390
3629bf09b30d Much more documentation including most details of the AlgPseudocodeLexer
Franz Glasner <fzglas.hg@dom66.de>
parents: 88
diff changeset
391 .. code-block:: algpseudocode
3629bf09b30d Much more documentation including most details of the AlgPseudocodeLexer
Franz Glasner <fzglas.hg@dom66.de>
parents: 88
diff changeset
392
3629bf09b30d Much more documentation including most details of the AlgPseudocodeLexer
Franz Glasner <fzglas.hg@dom66.de>
parents: 88
diff changeset
393 \text{\END-PROGRAM \END-PROG} \END-PROGRAM
3629bf09b30d Much more documentation including most details of the AlgPseudocodeLexer
Franz Glasner <fzglas.hg@dom66.de>
parents: 88
diff changeset
394 \text{\END-ALGORITHM \END-ALGO} \END-ALGORITHM
3629bf09b30d Much more documentation including most details of the AlgPseudocodeLexer
Franz Glasner <fzglas.hg@dom66.de>
parents: 88
diff changeset
395 \text{\END-PROCEDURE \END-PROC} \END-PROCEDURE
3629bf09b30d Much more documentation including most details of the AlgPseudocodeLexer
Franz Glasner <fzglas.hg@dom66.de>
parents: 88
diff changeset
396 \text{\END-FUNCTION \END-FUNC \END-FN} \END-FUNCTION
3629bf09b30d Much more documentation including most details of the AlgPseudocodeLexer
Franz Glasner <fzglas.hg@dom66.de>
parents: 88
diff changeset
397 \text{\END-CLASS} \END-CLASS
3629bf09b30d Much more documentation including most details of the AlgPseudocodeLexer
Franz Glasner <fzglas.hg@dom66.de>
parents: 88
diff changeset
398 \text{\END-IF} \END-IF
3629bf09b30d Much more documentation including most details of the AlgPseudocodeLexer
Franz Glasner <fzglas.hg@dom66.de>
parents: 88
diff changeset
399 \text{\END-WHILE} \END-WHILE
3629bf09b30d Much more documentation including most details of the AlgPseudocodeLexer
Franz Glasner <fzglas.hg@dom66.de>
parents: 88
diff changeset
400 \text{\END-FOR} \END-FOR
3629bf09b30d Much more documentation including most details of the AlgPseudocodeLexer
Franz Glasner <fzglas.hg@dom66.de>
parents: 88
diff changeset
401 \text{\END-FORALL} \END-FORALL
3629bf09b30d Much more documentation including most details of the AlgPseudocodeLexer
Franz Glasner <fzglas.hg@dom66.de>
parents: 88
diff changeset
402 \text{\END-LOOP} \END-LOOP
3629bf09b30d Much more documentation including most details of the AlgPseudocodeLexer
Franz Glasner <fzglas.hg@dom66.de>
parents: 88
diff changeset
403
169
3c517c22df9c Much more details and refinements in the docs
Franz Glasner <fzglas.hg@dom66.de>
parents: 168
diff changeset
404 .. note:: The output of END-commands can be suppressed by setting the
172
ad80fcbf7b47 Docs formatting
Franz Glasner <fzglas.hg@dom66.de>
parents: 169
diff changeset
405 lexer option ``no_end`` to :py:obj:`True`.
169
3c517c22df9c Much more details and refinements in the docs
Franz Glasner <fzglas.hg@dom66.de>
parents: 168
diff changeset
406
88
03e9031b5eca Some details and examples about \tt-XXX and \ttx-XXX in the docs
Franz Glasner <fzglas.hg@dom66.de>
parents:
diff changeset
407
150
4acf578ae93f Much more details in the documentation
Franz Glasner <fzglas.hg@dom66.de>
parents: 148
diff changeset
408 Names and Entities
4acf578ae93f Much more details in the documentation
Franz Glasner <fzglas.hg@dom66.de>
parents: 148
diff changeset
409 ==================
4acf578ae93f Much more details in the documentation
Franz Glasner <fzglas.hg@dom66.de>
parents: 148
diff changeset
410
4acf578ae93f Much more details in the documentation
Franz Glasner <fzglas.hg@dom66.de>
parents: 148
diff changeset
411 In an expression context all other words are interpreted as entity
156
123aeb2de8aa Explicitely call all markup with the domain
Franz Glasner <fzglas.hg@dom66.de>
parents: 154
diff changeset
412 names (token type :py:class:`pygments.token.Token.Name.Entity`).
150
4acf578ae93f Much more details in the documentation
Franz Glasner <fzglas.hg@dom66.de>
parents: 148
diff changeset
413
4acf578ae93f Much more details in the documentation
Franz Glasner <fzglas.hg@dom66.de>
parents: 148
diff changeset
414 Allowed characters in the words follow the corresponding `Python`_ rules.
4acf578ae93f Much more details in the documentation
Franz Glasner <fzglas.hg@dom66.de>
parents: 148
diff changeset
415 As such, many Unicode characters are allowed.
4acf578ae93f Much more details in the documentation
Franz Glasner <fzglas.hg@dom66.de>
parents: 148
diff changeset
416
4acf578ae93f Much more details in the documentation
Franz Glasner <fzglas.hg@dom66.de>
parents: 148
diff changeset
417 To highlight entity names with whitespace or other "special" characters in it
4acf578ae93f Much more details in the documentation
Franz Glasner <fzglas.hg@dom66.de>
parents: 148
diff changeset
418 use the ``NAME`` command.
4acf578ae93f Much more details in the documentation
Franz Glasner <fzglas.hg@dom66.de>
parents: 148
diff changeset
419
4acf578ae93f Much more details in the documentation
Franz Glasner <fzglas.hg@dom66.de>
parents: 148
diff changeset
420 .. code-block:: algpseudocode
4acf578ae93f Much more details in the documentation
Franz Glasner <fzglas.hg@dom66.de>
parents: 148
diff changeset
421
4acf578ae93f Much more details in the documentation
Franz Glasner <fzglas.hg@dom66.de>
parents: 148
diff changeset
422 \TEXT{entity_name_1} entity_name_1
4acf578ae93f Much more details in the documentation
Franz Glasner <fzglas.hg@dom66.de>
parents: 148
diff changeset
423
4acf578ae93f Much more details in the documentation
Franz Glasner <fzglas.hg@dom66.de>
parents: 148
diff changeset
424 \TEXT{entity_name_2} entity_name_2
4acf578ae93f Much more details in the documentation
Franz Glasner <fzglas.hg@dom66.de>
parents: 148
diff changeset
425
4acf578ae93f Much more details in the documentation
Franz Glasner <fzglas.hg@dom66.de>
parents: 148
diff changeset
426 \TEXT{\NAME{entity-name 3\}} \NAME{entity-name 3}
4acf578ae93f Much more details in the documentation
Franz Glasner <fzglas.hg@dom66.de>
parents: 148
diff changeset
427
4acf578ae93f Much more details in the documentation
Franz Glasner <fzglas.hg@dom66.de>
parents: 148
diff changeset
428 \TEXT{München} München
4acf578ae93f Much more details in the documentation
Franz Glasner <fzglas.hg@dom66.de>
parents: 148
diff changeset
429
4acf578ae93f Much more details in the documentation
Franz Glasner <fzglas.hg@dom66.de>
parents: 148
diff changeset
430 \TEXT{Genève} Genève
4acf578ae93f Much more details in the documentation
Franz Glasner <fzglas.hg@dom66.de>
parents: 148
diff changeset
431
169
3c517c22df9c Much more details and refinements in the docs
Franz Glasner <fzglas.hg@dom66.de>
parents: 168
diff changeset
432
150
4acf578ae93f Much more details in the documentation
Franz Glasner <fzglas.hg@dom66.de>
parents: 148
diff changeset
433 .. _explicit-token-types:
4acf578ae93f Much more details in the documentation
Franz Glasner <fzglas.hg@dom66.de>
parents: 148
diff changeset
434
88
03e9031b5eca Some details and examples about \tt-XXX and \ttx-XXX in the docs
Franz Glasner <fzglas.hg@dom66.de>
parents:
diff changeset
435 Explicit Token Types
03e9031b5eca Some details and examples about \tt-XXX and \ttx-XXX in the docs
Franz Glasner <fzglas.hg@dom66.de>
parents:
diff changeset
436 ====================
03e9031b5eca Some details and examples about \tt-XXX and \ttx-XXX in the docs
Franz Glasner <fzglas.hg@dom66.de>
parents:
diff changeset
437
03e9031b5eca Some details and examples about \tt-XXX and \ttx-XXX in the docs
Franz Glasner <fzglas.hg@dom66.de>
parents:
diff changeset
438 Handle keywords and operators that are not handled by default or change
03e9031b5eca Some details and examples about \tt-XXX and \ttx-XXX in the docs
Franz Glasner <fzglas.hg@dom66.de>
parents:
diff changeset
439 the default handling of some expressions.
03e9031b5eca Some details and examples about \tt-XXX and \ttx-XXX in the docs
Franz Glasner <fzglas.hg@dom66.de>
parents:
diff changeset
440
156
123aeb2de8aa Explicitely call all markup with the domain
Franz Glasner <fzglas.hg@dom66.de>
parents: 154
diff changeset
441 `XX` represents a `value` in the :py:data:`pygments.token.STANDARD_TYPES`
123aeb2de8aa Explicitely call all markup with the domain
Franz Glasner <fzglas.hg@dom66.de>
parents: 154
diff changeset
442 dict.
123aeb2de8aa Explicitely call all markup with the domain
Franz Glasner <fzglas.hg@dom66.de>
parents: 154
diff changeset
443 Its corresponding token type (the associated `key` in this `dict`) is
123aeb2de8aa Explicitely call all markup with the domain
Franz Glasner <fzglas.hg@dom66.de>
parents: 154
diff changeset
444 used as token type.
88
03e9031b5eca Some details and examples about \tt-XXX and \ttx-XXX in the docs
Franz Glasner <fzglas.hg@dom66.de>
parents:
diff changeset
445
237
c4e8c7010ca0 FIX: Syntax description of "Explicit Token Types".
Franz Glasner <fzglas.hg@dom66.de>
parents: 213
diff changeset
446 ``\tt-XX/SINGLE-CHAR``
88
03e9031b5eca Some details and examples about \tt-XXX and \ttx-XXX in the docs
Franz Glasner <fzglas.hg@dom66.de>
parents:
diff changeset
447
03e9031b5eca Some details and examples about \tt-XXX and \ttx-XXX in the docs
Franz Glasner <fzglas.hg@dom66.de>
parents:
diff changeset
448 no escaping needed
03e9031b5eca Some details and examples about \tt-XXX and \ttx-XXX in the docs
Franz Glasner <fzglas.hg@dom66.de>
parents:
diff changeset
449
03e9031b5eca Some details and examples about \tt-XXX and \ttx-XXX in the docs
Franz Glasner <fzglas.hg@dom66.de>
parents:
diff changeset
450 `SINGLE-CHAR` is a single character and can be *every* character
03e9031b5eca Some details and examples about \tt-XXX and \ttx-XXX in the docs
Franz Glasner <fzglas.hg@dom66.de>
parents:
diff changeset
451 (including a carriage-return or line-feed)
03e9031b5eca Some details and examples about \tt-XXX and \ttx-XXX in the docs
Franz Glasner <fzglas.hg@dom66.de>
parents:
diff changeset
452
237
c4e8c7010ca0 FIX: Syntax description of "Explicit Token Types".
Franz Glasner <fzglas.hg@dom66.de>
parents: 213
diff changeset
453 ``\ttx-XX{CHARACTERS}``
88
03e9031b5eca Some details and examples about \tt-XXX and \ttx-XXX in the docs
Franz Glasner <fzglas.hg@dom66.de>
parents:
diff changeset
454
237
c4e8c7010ca0 FIX: Syntax description of "Explicit Token Types".
Franz Glasner <fzglas.hg@dom66.de>
parents: 213
diff changeset
455 ``\ttx-XX(CHARACTERS)``
88
03e9031b5eca Some details and examples about \tt-XXX and \ttx-XXX in the docs
Franz Glasner <fzglas.hg@dom66.de>
parents:
diff changeset
456
237
c4e8c7010ca0 FIX: Syntax description of "Explicit Token Types".
Franz Glasner <fzglas.hg@dom66.de>
parents: 213
diff changeset
457 ``\ttx-XX[CHARACTERS]``
88
03e9031b5eca Some details and examples about \tt-XXX and \ttx-XXX in the docs
Franz Glasner <fzglas.hg@dom66.de>
parents:
diff changeset
458
237
c4e8c7010ca0 FIX: Syntax description of "Explicit Token Types".
Franz Glasner <fzglas.hg@dom66.de>
parents: 213
diff changeset
459 ``\ttx-XX<CHARACTERS>``
88
03e9031b5eca Some details and examples about \tt-XXX and \ttx-XXX in the docs
Franz Glasner <fzglas.hg@dom66.de>
parents:
diff changeset
460
237
c4e8c7010ca0 FIX: Syntax description of "Explicit Token Types".
Franz Glasner <fzglas.hg@dom66.de>
parents: 213
diff changeset
461 ``\ttx-XX<SEP>CHARACTERS<SEP>``
88
03e9031b5eca Some details and examples about \tt-XXX and \ttx-XXX in the docs
Franz Glasner <fzglas.hg@dom66.de>
parents:
diff changeset
462
03e9031b5eca Some details and examples about \tt-XXX and \ttx-XXX in the docs
Franz Glasner <fzglas.hg@dom66.de>
parents:
diff changeset
463 No escaping possible! There are enough alternatives available!
03e9031b5eca Some details and examples about \tt-XXX and \ttx-XXX in the docs
Franz Glasner <fzglas.hg@dom66.de>
parents:
diff changeset
464
03e9031b5eca Some details and examples about \tt-XXX and \ttx-XXX in the docs
Franz Glasner <fzglas.hg@dom66.de>
parents:
diff changeset
465 `SEP` is one of ``/:|=*+!\$~``.
03e9031b5eca Some details and examples about \tt-XXX and \ttx-XXX in the docs
Franz Glasner <fzglas.hg@dom66.de>
parents:
diff changeset
466
03e9031b5eca Some details and examples about \tt-XXX and \ttx-XXX in the docs
Franz Glasner <fzglas.hg@dom66.de>
parents:
diff changeset
467
03e9031b5eca Some details and examples about \tt-XXX and \ttx-XXX in the docs
Franz Glasner <fzglas.hg@dom66.de>
parents:
diff changeset
468 Examples:
03e9031b5eca Some details and examples about \tt-XXX and \ttx-XXX in the docs
Franz Glasner <fzglas.hg@dom66.de>
parents:
diff changeset
469
125
3629bf09b30d Much more documentation including most details of the AlgPseudocodeLexer
Franz Glasner <fzglas.hg@dom66.de>
parents: 88
diff changeset
470 .. code-block:: algpseudocode
88
03e9031b5eca Some details and examples about \tt-XXX and \ttx-XXX in the docs
Franz Glasner <fzglas.hg@dom66.de>
parents:
diff changeset
471
03e9031b5eca Some details and examples about \tt-XXX and \ttx-XXX in the docs
Franz Glasner <fzglas.hg@dom66.de>
parents:
diff changeset
472 \text{• \\tt-kc/C} \tt-kc/C \rem C as Keyword.Constant
03e9031b5eca Some details and examples about \tt-XXX and \ttx-XXX in the docs
Franz Glasner <fzglas.hg@dom66.de>
parents:
diff changeset
473 \text{• \\tt-ow/∈} \tt-ow/∈ \rem ∈ as Operator.Word
03e9031b5eca Some details and examples about \tt-XXX and \ttx-XXX in the docs
Franz Glasner <fzglas.hg@dom66.de>
parents:
diff changeset
474 \text{• \\ttx-kc{A New Constant Keyword\}} \ttx-kc{A New Constant Keyword} \rem As a new Keyword.Constant
03e9031b5eca Some details and examples about \tt-XXX and \ttx-XXX in the docs
Franz Glasner <fzglas.hg@dom66.de>
parents:
diff changeset
475 \text{• \\ttx-nv{A New Variable Name\}} \ttx-nv{A New Variable Name} \rem An explicit Name.Variable
03e9031b5eca Some details and examples about \tt-XXX and \ttx-XXX in the docs
Franz Glasner <fzglas.hg@dom66.de>
parents:
diff changeset
476 \text{• \\ttx-k(∈ ∌)} \ttx-k(∈ ∌) \rem ∈ and ∌ as (ordinary) Keywords
03e9031b5eca Some details and examples about \tt-XXX and \ttx-XXX in the docs
Franz Glasner <fzglas.hg@dom66.de>
parents:
diff changeset
477 \text{• \\ttx-o<∈ ∌>} \ttx-o<∈ ∌> \rem ∈ and ∌ as (ordinary) Operators
03e9031b5eca Some details and examples about \tt-XXX and \ttx-XXX in the docs
Franz Glasner <fzglas.hg@dom66.de>
parents:
diff changeset
478 /*
03e9031b5eca Some details and examples about \tt-XXX and \ttx-XXX in the docs
Franz Glasner <fzglas.hg@dom66.de>
parents:
diff changeset
479 * The line below has ∈_∌ as (peculiar) function name.
150
4acf578ae93f Much more details in the documentation
Franz Glasner <fzglas.hg@dom66.de>
parents: 148
diff changeset
480 * Their params are automatic (i.e. a normal expression).
88
03e9031b5eca Some details and examples about \tt-XXX and \ttx-XXX in the docs
Franz Glasner <fzglas.hg@dom66.de>
parents:
diff changeset
481 */
03e9031b5eca Some details and examples about \tt-XXX and \ttx-XXX in the docs
Franz Glasner <fzglas.hg@dom66.de>
parents:
diff changeset
482 \text{• \\ttx-nf<∈_∌>(p1, p2)} \ttx-nf<∈_∌>(p1, p2)
03e9031b5eca Some details and examples about \tt-XXX and \ttx-XXX in the docs
Franz Glasner <fzglas.hg@dom66.de>
parents:
diff changeset
483 /*
03e9031b5eca Some details and examples about \tt-XXX and \ttx-XXX in the docs
Franz Glasner <fzglas.hg@dom66.de>
parents:
diff changeset
484 * The line below has ∈_∌ as (peculiar) decorator name (as used in Python).
150
4acf578ae93f Much more details in the documentation
Franz Glasner <fzglas.hg@dom66.de>
parents: 148
diff changeset
485 * Their params are automatic (i.e. a normal expression).
88
03e9031b5eca Some details and examples about \tt-XXX and \ttx-XXX in the docs
Franz Glasner <fzglas.hg@dom66.de>
parents:
diff changeset
486 */
03e9031b5eca Some details and examples about \tt-XXX and \ttx-XXX in the docs
Franz Glasner <fzglas.hg@dom66.de>
parents:
diff changeset
487 \text{• \\ttx-nd[∈_∌](p1, p2)} \ttx-nd[∈_∌](p1, p2)
03e9031b5eca Some details and examples about \tt-XXX and \ttx-XXX in the docs
Franz Glasner <fzglas.hg@dom66.de>
parents:
diff changeset
488 /*
03e9031b5eca Some details and examples about \tt-XXX and \ttx-XXX in the docs
Franz Glasner <fzglas.hg@dom66.de>
parents:
diff changeset
489 * This is a non-existing token type: you get some generic error marking
03e9031b5eca Some details and examples about \tt-XXX and \ttx-XXX in the docs
Franz Glasner <fzglas.hg@dom66.de>
parents:
diff changeset
490 * with a Generic.Error token and no expansion.
03e9031b5eca Some details and examples about \tt-XXX and \ttx-XXX in the docs
Franz Glasner <fzglas.hg@dom66.de>
parents:
diff changeset
491 */
03e9031b5eca Some details and examples about \tt-XXX and \ttx-XXX in the docs
Franz Glasner <fzglas.hg@dom66.de>
parents:
diff changeset
492 \text{• \\ttx-NON-EXISTING[∈_∌](p1, p2)} \ttx-NON_EXISTING[∈_∌](p1, p2)
125
3629bf09b30d Much more documentation including most details of the AlgPseudocodeLexer
Franz Glasner <fzglas.hg@dom66.de>
parents: 88
diff changeset
493
3629bf09b30d Much more documentation including most details of the AlgPseudocodeLexer
Franz Glasner <fzglas.hg@dom66.de>
parents: 88
diff changeset
494 .. note:: Explicit token types are **case-sensitive**.
3629bf09b30d Much more documentation including most details of the AlgPseudocodeLexer
Franz Glasner <fzglas.hg@dom66.de>
parents: 88
diff changeset
495
3629bf09b30d Much more documentation including most details of the AlgPseudocodeLexer
Franz Glasner <fzglas.hg@dom66.de>
parents: 88
diff changeset
496
209
f20177032d21 A chapter about escaping rules
Franz Glasner <fzglas.hg@dom66.de>
parents: 208
diff changeset
497 .. _escaping-rules:
f20177032d21 A chapter about escaping rules
Franz Glasner <fzglas.hg@dom66.de>
parents: 208
diff changeset
498
f20177032d21 A chapter about escaping rules
Franz Glasner <fzglas.hg@dom66.de>
parents: 208
diff changeset
499 Escaping Rules
f20177032d21 A chapter about escaping rules
Franz Glasner <fzglas.hg@dom66.de>
parents: 208
diff changeset
500 ==============
f20177032d21 A chapter about escaping rules
Franz Glasner <fzglas.hg@dom66.de>
parents: 208
diff changeset
501
f20177032d21 A chapter about escaping rules
Franz Glasner <fzglas.hg@dom66.de>
parents: 208
diff changeset
502 The escape character is a backslash ``\``.
f20177032d21 A chapter about escaping rules
Franz Glasner <fzglas.hg@dom66.de>
parents: 208
diff changeset
503
f20177032d21 A chapter about escaping rules
Franz Glasner <fzglas.hg@dom66.de>
parents: 208
diff changeset
504 A backslash can be escaped with ``\\`` and yields a single backslash token.
f20177032d21 A chapter about escaping rules
Franz Glasner <fzglas.hg@dom66.de>
parents: 208
diff changeset
505
f20177032d21 A chapter about escaping rules
Franz Glasner <fzglas.hg@dom66.de>
parents: 208
diff changeset
506 Within parameters a closing curly brace ``}`` ends the current
f20177032d21 A chapter about escaping rules
Franz Glasner <fzglas.hg@dom66.de>
parents: 208
diff changeset
507 parameters environment.
f20177032d21 A chapter about escaping rules
Franz Glasner <fzglas.hg@dom66.de>
parents: 208
diff changeset
508 It must be escaped using ``\}`` if a closing curly brace is part of the
f20177032d21 A chapter about escaping rules
Franz Glasner <fzglas.hg@dom66.de>
parents: 208
diff changeset
509 argument content.
f20177032d21 A chapter about escaping rules
Franz Glasner <fzglas.hg@dom66.de>
parents: 208
diff changeset
510
f20177032d21 A chapter about escaping rules
Franz Glasner <fzglas.hg@dom66.de>
parents: 208
diff changeset
511 A single backslash yields a :py:class:`pygments.token.Token.Generic.Error`
f20177032d21 A chapter about escaping rules
Franz Glasner <fzglas.hg@dom66.de>
parents: 208
diff changeset
512 token when in `default` and `expression` states.
f20177032d21 A chapter about escaping rules
Franz Glasner <fzglas.hg@dom66.de>
parents: 208
diff changeset
513 Contrary---in `text` contexts a single backslash character that does not
f20177032d21 A chapter about escaping rules
Franz Glasner <fzglas.hg@dom66.de>
parents: 208
diff changeset
514 introduce a command yields a normal text token.
f20177032d21 A chapter about escaping rules
Franz Glasner <fzglas.hg@dom66.de>
parents: 208
diff changeset
515
f20177032d21 A chapter about escaping rules
Franz Glasner <fzglas.hg@dom66.de>
parents: 208
diff changeset
516 In all contexts a backslash that would normally introduce a known command
f20177032d21 A chapter about escaping rules
Franz Glasner <fzglas.hg@dom66.de>
parents: 208
diff changeset
517 must be escaped if the content should not recognized as a command.
f20177032d21 A chapter about escaping rules
Franz Glasner <fzglas.hg@dom66.de>
parents: 208
diff changeset
518
f20177032d21 A chapter about escaping rules
Franz Glasner <fzglas.hg@dom66.de>
parents: 208
diff changeset
519 Single- and double-quotes must be escaped also (``\"`` or ``\'``) in
f20177032d21 A chapter about escaping rules
Franz Glasner <fzglas.hg@dom66.de>
parents: 208
diff changeset
520 `default` and `expression` contexts when they should not introduce a
f20177032d21 A chapter about escaping rules
Franz Glasner <fzglas.hg@dom66.de>
parents: 208
diff changeset
521 string token.
f20177032d21 A chapter about escaping rules
Franz Glasner <fzglas.hg@dom66.de>
parents: 208
diff changeset
522
f20177032d21 A chapter about escaping rules
Franz Glasner <fzglas.hg@dom66.de>
parents: 208
diff changeset
523
144
b616f9645e37 More referencing with internal and external links
Franz Glasner <fzglas.hg@dom66.de>
parents: 142
diff changeset
524 .. _customized-sphinx-lexers:
b616f9645e37 More referencing with internal and external links
Franz Glasner <fzglas.hg@dom66.de>
parents: 142
diff changeset
525
125
3629bf09b30d Much more documentation including most details of the AlgPseudocodeLexer
Franz Glasner <fzglas.hg@dom66.de>
parents: 88
diff changeset
526 Customized Lexers in Sphinx
3629bf09b30d Much more documentation including most details of the AlgPseudocodeLexer
Franz Glasner <fzglas.hg@dom66.de>
parents: 88
diff changeset
527 ===========================
3629bf09b30d Much more documentation including most details of the AlgPseudocodeLexer
Franz Glasner <fzglas.hg@dom66.de>
parents: 88
diff changeset
528
144
b616f9645e37 More referencing with internal and external links
Franz Glasner <fzglas.hg@dom66.de>
parents: 142
diff changeset
529 Defining lexers with non-default options in `Sphinx`_ can be done in its
153
d475f5e252eb Document an alternate variant to apply options to existing lexers
Franz Glasner <fzglas.hg@dom66.de>
parents: 150
diff changeset
530 configuration file :file:`conf.py`.
d475f5e252eb Document an alternate variant to apply options to existing lexers
Franz Glasner <fzglas.hg@dom66.de>
parents: 150
diff changeset
531
d475f5e252eb Document an alternate variant to apply options to existing lexers
Franz Glasner <fzglas.hg@dom66.de>
parents: 150
diff changeset
532 The first option is to apply the Sphinx config value ``highlight_options``
d475f5e252eb Document an alternate variant to apply options to existing lexers
Franz Glasner <fzglas.hg@dom66.de>
parents: 150
diff changeset
533 properly. An existing lexer can be customized by options.
d475f5e252eb Document an alternate variant to apply options to existing lexers
Franz Glasner <fzglas.hg@dom66.de>
parents: 150
diff changeset
534
d475f5e252eb Document an alternate variant to apply options to existing lexers
Franz Glasner <fzglas.hg@dom66.de>
parents: 150
diff changeset
535 A more flexible alternative is to define a new lexer in the Sphinx
d475f5e252eb Document an alternate variant to apply options to existing lexers
Franz Glasner <fzglas.hg@dom66.de>
parents: 150
diff changeset
536 application. The very same lexer class can be used with different options:
125
3629bf09b30d Much more documentation including most details of the AlgPseudocodeLexer
Franz Glasner <fzglas.hg@dom66.de>
parents: 88
diff changeset
537
3629bf09b30d Much more documentation including most details of the AlgPseudocodeLexer
Franz Glasner <fzglas.hg@dom66.de>
parents: 88
diff changeset
538 .. code-block:: python
3629bf09b30d Much more documentation including most details of the AlgPseudocodeLexer
Franz Glasner <fzglas.hg@dom66.de>
parents: 88
diff changeset
539
3629bf09b30d Much more documentation including most details of the AlgPseudocodeLexer
Franz Glasner <fzglas.hg@dom66.de>
parents: 88
diff changeset
540 from functools import partial
164
a4317957148b Move all lexers into a subpackage pygments_lexer_pseudocode2.lexers.
Franz Glasner <fzglas.hg@dom66.de>
parents: 162
diff changeset
541 from pygments_lexer_pseudocode2.lexers.algpseudocode import AlgPseudocodeLexer
125
3629bf09b30d Much more documentation including most details of the AlgPseudocodeLexer
Franz Glasner <fzglas.hg@dom66.de>
parents: 88
diff changeset
542
3629bf09b30d Much more documentation including most details of the AlgPseudocodeLexer
Franz Glasner <fzglas.hg@dom66.de>
parents: 88
diff changeset
543 def setup(app):
3629bf09b30d Much more documentation including most details of the AlgPseudocodeLexer
Franz Glasner <fzglas.hg@dom66.de>
parents: 88
diff changeset
544
3629bf09b30d Much more documentation including most details of the AlgPseudocodeLexer
Franz Glasner <fzglas.hg@dom66.de>
parents: 88
diff changeset
545 #
3629bf09b30d Much more documentation including most details of the AlgPseudocodeLexer
Franz Glasner <fzglas.hg@dom66.de>
parents: 88
diff changeset
546 # Add a custom lexer: AlgPseudocodeLexer with custom init
3629bf09b30d Much more documentation including most details of the AlgPseudocodeLexer
Franz Glasner <fzglas.hg@dom66.de>
parents: 88
diff changeset
547 # option "no_end".
3629bf09b30d Much more documentation including most details of the AlgPseudocodeLexer
Franz Glasner <fzglas.hg@dom66.de>
parents: 88
diff changeset
548 #
3629bf09b30d Much more documentation including most details of the AlgPseudocodeLexer
Franz Glasner <fzglas.hg@dom66.de>
parents: 88
diff changeset
549 # In modern Sphinx versions given lexer must be callable and may
3629bf09b30d Much more documentation including most details of the AlgPseudocodeLexer
Franz Glasner <fzglas.hg@dom66.de>
parents: 88
diff changeset
550 # not be a lexer instance. So use an indirection with "partial"
3629bf09b30d Much more documentation including most details of the AlgPseudocodeLexer
Franz Glasner <fzglas.hg@dom66.de>
parents: 88
diff changeset
551 # here.
3629bf09b30d Much more documentation including most details of the AlgPseudocodeLexer
Franz Glasner <fzglas.hg@dom66.de>
parents: 88
diff changeset
552 #
3629bf09b30d Much more documentation including most details of the AlgPseudocodeLexer
Franz Glasner <fzglas.hg@dom66.de>
parents: 88
diff changeset
553 app.add_lexer("noend-algpseudocode",
3629bf09b30d Much more documentation including most details of the AlgPseudocodeLexer
Franz Glasner <fzglas.hg@dom66.de>
parents: 88
diff changeset
554 partial(AlgPseudocodeLexer, no_end=True))
3629bf09b30d Much more documentation including most details of the AlgPseudocodeLexer
Franz Glasner <fzglas.hg@dom66.de>
parents: 88
diff changeset
555
3629bf09b30d Much more documentation including most details of the AlgPseudocodeLexer
Franz Glasner <fzglas.hg@dom66.de>
parents: 88
diff changeset
556 Similarily it works for custom styles and filters.
3629bf09b30d Much more documentation including most details of the AlgPseudocodeLexer
Franz Glasner <fzglas.hg@dom66.de>
parents: 88
diff changeset
557
158
f08d77b8cbf7 Document the default filter "raiseonerror" that is applied by Sphinx by default for lexers
Franz Glasner <fzglas.hg@dom66.de>
parents: 156
diff changeset
558 .. note:: Lexers in Sphinx are instantiated with the `raiseonerror` filter
f08d77b8cbf7 Document the default filter "raiseonerror" that is applied by Sphinx by default for lexers
Franz Glasner <fzglas.hg@dom66.de>
parents: 156
diff changeset
559 applied by default.
f08d77b8cbf7 Document the default filter "raiseonerror" that is applied by Sphinx by default for lexers
Franz Glasner <fzglas.hg@dom66.de>
parents: 156
diff changeset
560 This is also true for custom lexers that are added by
f08d77b8cbf7 Document the default filter "raiseonerror" that is applied by Sphinx by default for lexers
Franz Glasner <fzglas.hg@dom66.de>
parents: 156
diff changeset
561 :py:meth:`Sphinx.add_lexer`.
207
76053daf813e Extend the note in "Customized Lexers in Sphinx" somewhat
Franz Glasner <fzglas.hg@dom66.de>
parents: 201
diff changeset
562 Using the `filters` option the user can associate custom filters
76053daf813e Extend the note in "Customized Lexers in Sphinx" somewhat
Franz Glasner <fzglas.hg@dom66.de>
parents: 201
diff changeset
563 with a lexer.
76053daf813e Extend the note in "Customized Lexers in Sphinx" somewhat
Franz Glasner <fzglas.hg@dom66.de>
parents: 201
diff changeset
564 These filters have precedence over the default `raiseonerror`
76053daf813e Extend the note in "Customized Lexers in Sphinx" somewhat
Franz Glasner <fzglas.hg@dom66.de>
parents: 201
diff changeset
565 filter.
158
f08d77b8cbf7 Document the default filter "raiseonerror" that is applied by Sphinx by default for lexers
Franz Glasner <fzglas.hg@dom66.de>
parents: 156
diff changeset
566
f08d77b8cbf7 Document the default filter "raiseonerror" that is applied by Sphinx by default for lexers
Franz Glasner <fzglas.hg@dom66.de>
parents: 156
diff changeset
567 Lexer *instances* that are added to
f08d77b8cbf7 Document the default filter "raiseonerror" that is applied by Sphinx by default for lexers
Franz Glasner <fzglas.hg@dom66.de>
parents: 156
diff changeset
568 :py:data:`sphinx.highlighting.lexers` somehow are taken as is by
f08d77b8cbf7 Document the default filter "raiseonerror" that is applied by Sphinx by default for lexers
Franz Glasner <fzglas.hg@dom66.de>
parents: 156
diff changeset
569 Sphinx and are not augmented with any default filters.
f08d77b8cbf7 Document the default filter "raiseonerror" that is applied by Sphinx by default for lexers
Franz Glasner <fzglas.hg@dom66.de>
parents: 156
diff changeset
570
125
3629bf09b30d Much more documentation including most details of the AlgPseudocodeLexer
Franz Glasner <fzglas.hg@dom66.de>
parents: 88
diff changeset
571 For older Sphinx versions your mileage may vary.
169
3c517c22df9c Much more details and refinements in the docs
Franz Glasner <fzglas.hg@dom66.de>
parents: 168
diff changeset
572
3c517c22df9c Much more details and refinements in the docs
Franz Glasner <fzglas.hg@dom66.de>
parents: 168
diff changeset
573
3c517c22df9c Much more details and refinements in the docs
Franz Glasner <fzglas.hg@dom66.de>
parents: 168
diff changeset
574 Some Examples
3c517c22df9c Much more details and refinements in the docs
Franz Glasner <fzglas.hg@dom66.de>
parents: 168
diff changeset
575 =============
3c517c22df9c Much more details and refinements in the docs
Franz Glasner <fzglas.hg@dom66.de>
parents: 168
diff changeset
576
187
418846a2623c Also link to exampled from the PDF properly
Franz Glasner <fzglas.hg@dom66.de>
parents: 186
diff changeset
577 A synthetic example with many features.
418846a2623c Also link to exampled from the PDF properly
Franz Glasner <fzglas.hg@dom66.de>
parents: 186
diff changeset
578
418846a2623c Also link to exampled from the PDF properly
Franz Glasner <fzglas.hg@dom66.de>
parents: 186
diff changeset
579 .. only:: builder_html
418846a2623c Also link to exampled from the PDF properly
Franz Glasner <fzglas.hg@dom66.de>
parents: 186
diff changeset
580
418846a2623c Also link to exampled from the PDF properly
Franz Glasner <fzglas.hg@dom66.de>
parents: 186
diff changeset
581 Its source code is in :download:`examples/example-1.pseudocode`.
418846a2623c Also link to exampled from the PDF properly
Franz Glasner <fzglas.hg@dom66.de>
parents: 186
diff changeset
582
418846a2623c Also link to exampled from the PDF properly
Franz Glasner <fzglas.hg@dom66.de>
parents: 186
diff changeset
583 .. raw:: latex
418846a2623c Also link to exampled from the PDF properly
Franz Glasner <fzglas.hg@dom66.de>
parents: 186
diff changeset
584
418846a2623c Also link to exampled from the PDF properly
Franz Glasner <fzglas.hg@dom66.de>
parents: 186
diff changeset
585 Its source code can be found at \url{example-1.pseudocode}.
169
3c517c22df9c Much more details and refinements in the docs
Franz Glasner <fzglas.hg@dom66.de>
parents: 168
diff changeset
586
3c517c22df9c Much more details and refinements in the docs
Franz Glasner <fzglas.hg@dom66.de>
parents: 168
diff changeset
587 .. literalinclude:: examples/example-1.pseudocode
3c517c22df9c Much more details and refinements in the docs
Franz Glasner <fzglas.hg@dom66.de>
parents: 168
diff changeset
588 :language: algpseudocode
3c517c22df9c Much more details and refinements in the docs
Franz Glasner <fzglas.hg@dom66.de>
parents: 168
diff changeset
589 :lines: 2-
3c517c22df9c Much more details and refinements in the docs
Franz Glasner <fzglas.hg@dom66.de>
parents: 168
diff changeset
590
3c517c22df9c Much more details and refinements in the docs
Franz Glasner <fzglas.hg@dom66.de>
parents: 168
diff changeset
591 With a customized `AlgPseudocodeLexer` and its `no_end`
172
ad80fcbf7b47 Docs formatting
Franz Glasner <fzglas.hg@dom66.de>
parents: 169
diff changeset
592 option set to :py:obj:`True`.
169
3c517c22df9c Much more details and refinements in the docs
Franz Glasner <fzglas.hg@dom66.de>
parents: 168
diff changeset
593
3c517c22df9c Much more details and refinements in the docs
Franz Glasner <fzglas.hg@dom66.de>
parents: 168
diff changeset
594 .. literalinclude:: examples/example-1.pseudocode
3c517c22df9c Much more details and refinements in the docs
Franz Glasner <fzglas.hg@dom66.de>
parents: 168
diff changeset
595 :language: NoEndAlgPseudocode
3c517c22df9c Much more details and refinements in the docs
Franz Glasner <fzglas.hg@dom66.de>
parents: 168
diff changeset
596 :lines: 2-
3c517c22df9c Much more details and refinements in the docs
Franz Glasner <fzglas.hg@dom66.de>
parents: 168
diff changeset
597
186
95754197f5b3 Link to some source code of example pseudocode files
Franz Glasner <fzglas.hg@dom66.de>
parents: 172
diff changeset
598 The second example is Wikipedia's description of *Dinic's Algorithm*
95754197f5b3 Link to some source code of example pseudocode files
Franz Glasner <fzglas.hg@dom66.de>
parents: 172
diff changeset
599 (see https://en.wikipedia.org/wiki/Dinic%27s_algorithm).
187
418846a2623c Also link to exampled from the PDF properly
Franz Glasner <fzglas.hg@dom66.de>
parents: 186
diff changeset
600
418846a2623c Also link to exampled from the PDF properly
Franz Glasner <fzglas.hg@dom66.de>
parents: 186
diff changeset
601 .. only:: builder_html
418846a2623c Also link to exampled from the PDF properly
Franz Glasner <fzglas.hg@dom66.de>
parents: 186
diff changeset
602
418846a2623c Also link to exampled from the PDF properly
Franz Glasner <fzglas.hg@dom66.de>
parents: 186
diff changeset
603 Its source code is in :download:`examples/algorithm-dinic.pseudocode`.
169
3c517c22df9c Much more details and refinements in the docs
Franz Glasner <fzglas.hg@dom66.de>
parents: 168
diff changeset
604
187
418846a2623c Also link to exampled from the PDF properly
Franz Glasner <fzglas.hg@dom66.de>
parents: 186
diff changeset
605 .. raw:: latex
418846a2623c Also link to exampled from the PDF properly
Franz Glasner <fzglas.hg@dom66.de>
parents: 186
diff changeset
606
418846a2623c Also link to exampled from the PDF properly
Franz Glasner <fzglas.hg@dom66.de>
parents: 186
diff changeset
607 Its source code can be found at \url{algorithm-dinic.pseudocode}
418846a2623c Also link to exampled from the PDF properly
Franz Glasner <fzglas.hg@dom66.de>
parents: 186
diff changeset
608
418846a2623c Also link to exampled from the PDF properly
Franz Glasner <fzglas.hg@dom66.de>
parents: 186
diff changeset
609 .. literalinclude:: examples/algorithm-dinic.pseudocode
169
3c517c22df9c Much more details and refinements in the docs
Franz Glasner <fzglas.hg@dom66.de>
parents: 168
diff changeset
610 :language: algpseudocode
3c517c22df9c Much more details and refinements in the docs
Franz Glasner <fzglas.hg@dom66.de>
parents: 168
diff changeset
611 :lines: 2-
3c517c22df9c Much more details and refinements in the docs
Franz Glasner <fzglas.hg@dom66.de>
parents: 168
diff changeset
612
186
95754197f5b3 Link to some source code of example pseudocode files
Franz Glasner <fzglas.hg@dom66.de>
parents: 172
diff changeset
613 The third example is Wikipedia's pseudocode of the *Ford–Fulkerson Algorithm*
95754197f5b3 Link to some source code of example pseudocode files
Franz Glasner <fzglas.hg@dom66.de>
parents: 172
diff changeset
614 (see https://en.wikipedia.org/wiki/Ford%E2%80%93Fulkerson_algorithm).
187
418846a2623c Also link to exampled from the PDF properly
Franz Glasner <fzglas.hg@dom66.de>
parents: 186
diff changeset
615
418846a2623c Also link to exampled from the PDF properly
Franz Glasner <fzglas.hg@dom66.de>
parents: 186
diff changeset
616 .. only:: builder_html
418846a2623c Also link to exampled from the PDF properly
Franz Glasner <fzglas.hg@dom66.de>
parents: 186
diff changeset
617
418846a2623c Also link to exampled from the PDF properly
Franz Glasner <fzglas.hg@dom66.de>
parents: 186
diff changeset
618 Its source code is in
418846a2623c Also link to exampled from the PDF properly
Franz Glasner <fzglas.hg@dom66.de>
parents: 186
diff changeset
619 :download:`examples/algorithm-ford-fulkerson.pseudocode`.
418846a2623c Also link to exampled from the PDF properly
Franz Glasner <fzglas.hg@dom66.de>
parents: 186
diff changeset
620
418846a2623c Also link to exampled from the PDF properly
Franz Glasner <fzglas.hg@dom66.de>
parents: 186
diff changeset
621 .. raw:: latex
418846a2623c Also link to exampled from the PDF properly
Franz Glasner <fzglas.hg@dom66.de>
parents: 186
diff changeset
622
418846a2623c Also link to exampled from the PDF properly
Franz Glasner <fzglas.hg@dom66.de>
parents: 186
diff changeset
623 Its source code can be found at \url{algorithm-ford-fulkerson.pseudocode}.
169
3c517c22df9c Much more details and refinements in the docs
Franz Glasner <fzglas.hg@dom66.de>
parents: 168
diff changeset
624
3c517c22df9c Much more details and refinements in the docs
Franz Glasner <fzglas.hg@dom66.de>
parents: 168
diff changeset
625 .. literalinclude:: examples/algorithm-ford-fulkerson.pseudocode
3c517c22df9c Much more details and refinements in the docs
Franz Glasner <fzglas.hg@dom66.de>
parents: 168
diff changeset
626 :language: algpseudocode
3c517c22df9c Much more details and refinements in the docs
Franz Glasner <fzglas.hg@dom66.de>
parents: 168
diff changeset
627 :lines: 2-
3c517c22df9c Much more details and refinements in the docs
Franz Glasner <fzglas.hg@dom66.de>
parents: 168
diff changeset
628
186
95754197f5b3 Link to some source code of example pseudocode files
Franz Glasner <fzglas.hg@dom66.de>
parents: 172
diff changeset
629 The fourth example is Wikipedia's pseudocode of the *Edmonds–Karp Algorithm*
169
3c517c22df9c Much more details and refinements in the docs
Franz Glasner <fzglas.hg@dom66.de>
parents: 168
diff changeset
630 (see https://en.wikipedia.org/wiki/Edmonds%E2%80%93Karp_algorithm)
194
403b500e0ed4 FIX: Syntax
Franz Glasner <fzglas.hg@dom66.de>
parents: 193
diff changeset
631 with a custom lexer which skips all ``ENDxxx`` keywords.
187
418846a2623c Also link to exampled from the PDF properly
Franz Glasner <fzglas.hg@dom66.de>
parents: 186
diff changeset
632
418846a2623c Also link to exampled from the PDF properly
Franz Glasner <fzglas.hg@dom66.de>
parents: 186
diff changeset
633 .. only:: builder_html
418846a2623c Also link to exampled from the PDF properly
Franz Glasner <fzglas.hg@dom66.de>
parents: 186
diff changeset
634
418846a2623c Also link to exampled from the PDF properly
Franz Glasner <fzglas.hg@dom66.de>
parents: 186
diff changeset
635 Its source code is in
418846a2623c Also link to exampled from the PDF properly
Franz Glasner <fzglas.hg@dom66.de>
parents: 186
diff changeset
636 :download:`examples/algorithm-edmonds-karp.pseudocode`.
418846a2623c Also link to exampled from the PDF properly
Franz Glasner <fzglas.hg@dom66.de>
parents: 186
diff changeset
637
418846a2623c Also link to exampled from the PDF properly
Franz Glasner <fzglas.hg@dom66.de>
parents: 186
diff changeset
638 .. raw:: latex
418846a2623c Also link to exampled from the PDF properly
Franz Glasner <fzglas.hg@dom66.de>
parents: 186
diff changeset
639
418846a2623c Also link to exampled from the PDF properly
Franz Glasner <fzglas.hg@dom66.de>
parents: 186
diff changeset
640 Its source code can be found at \url{algorithm-edmonds-karp.pseudocode}.
169
3c517c22df9c Much more details and refinements in the docs
Franz Glasner <fzglas.hg@dom66.de>
parents: 168
diff changeset
641
3c517c22df9c Much more details and refinements in the docs
Franz Glasner <fzglas.hg@dom66.de>
parents: 168
diff changeset
642 .. literalinclude:: examples/algorithm-edmonds-karp.pseudocode
3c517c22df9c Much more details and refinements in the docs
Franz Glasner <fzglas.hg@dom66.de>
parents: 168
diff changeset
643 :language: NoEndAlgPseudocode
3c517c22df9c Much more details and refinements in the docs
Franz Glasner <fzglas.hg@dom66.de>
parents: 168
diff changeset
644 :lines: 2-
3c517c22df9c Much more details and refinements in the docs
Franz Glasner <fzglas.hg@dom66.de>
parents: 168
diff changeset
645
186
95754197f5b3 Link to some source code of example pseudocode files
Franz Glasner <fzglas.hg@dom66.de>
parents: 172
diff changeset
646 And now the *Edmonds–Karp Algorithm* with **french** keywords:
169
3c517c22df9c Much more details and refinements in the docs
Franz Glasner <fzglas.hg@dom66.de>
parents: 168
diff changeset
647
3c517c22df9c Much more details and refinements in the docs
Franz Glasner <fzglas.hg@dom66.de>
parents: 168
diff changeset
648 .. literalinclude:: examples/algorithm-edmonds-karp.pseudocode
3c517c22df9c Much more details and refinements in the docs
Franz Glasner <fzglas.hg@dom66.de>
parents: 168
diff changeset
649 :language: algpseudocode-fr
3c517c22df9c Much more details and refinements in the docs
Franz Glasner <fzglas.hg@dom66.de>
parents: 168
diff changeset
650 :lines: 2-
3c517c22df9c Much more details and refinements in the docs
Franz Glasner <fzglas.hg@dom66.de>
parents: 168
diff changeset
651
186
95754197f5b3 Link to some source code of example pseudocode files
Franz Glasner <fzglas.hg@dom66.de>
parents: 172
diff changeset
652 And again the *Edmonds–Karp Algorithm* with **german** keywords:
169
3c517c22df9c Much more details and refinements in the docs
Franz Glasner <fzglas.hg@dom66.de>
parents: 168
diff changeset
653
3c517c22df9c Much more details and refinements in the docs
Franz Glasner <fzglas.hg@dom66.de>
parents: 168
diff changeset
654 .. literalinclude:: examples/algorithm-edmonds-karp.pseudocode
3c517c22df9c Much more details and refinements in the docs
Franz Glasner <fzglas.hg@dom66.de>
parents: 168
diff changeset
655 :language: algpseudocode-de
3c517c22df9c Much more details and refinements in the docs
Franz Glasner <fzglas.hg@dom66.de>
parents: 168
diff changeset
656 :lines: 2-