.. -*- coding: utf-8; indent-tabs-mode: nil; -*-


The Pygments Pseudocode Lexer
=============================

.. toctree::
   :maxdepth: 2
   :caption: Contents:

   readme	     
   details


.. list-table::
   :align: left
   :header-rows: 1

   * - Language Name
     - Description
     - Extension(s)
     - Aliases / Short Name(s)
     - Lexer Class

   * - AlgPseudocode
     - Pseudocode with inspirations from CTAN's "Algpseudocodex"
     - \*.algpseudocode, \*.algpseudo
     - algpseudocode, algpseudo
     - AlgPseudocodeLexer

   * - AlgPseudocodeFR
     - AlgPseudocode with french keyword expansion
     - \*.algpseudo-fr, \*.algpseudocode-fr
     - algpseudocode-fr, algpseudo-fr
     - AlgPseudocodeLexer_FR

   * - AlgPseudocodeDE
     - AlgPseudocode with german keyword expansion
     - \*.algpseudo-de, \*.algpseudocode-de
     - algpseudocode-de, algpseudo-de
     - AlgPseudocodeLexer_DE

   * - FrPseudocode
     - The original lexer (slightly changed) from `pygments-lexer-pseudocode`
     - \*.fr-algo, \*.fr-pseudocode
     - fr-pseudocode, fr-pseudo, fr-algorithm, fr-algo
     - FrPseudocodeLexer

To be used in Sphinx like this:

.. code-block:: none

   .. code-block:: algpseudocode

      \PROGRAM {The Pseudoprogram} \IS

      \END PROGRAM {The Pseudoprogram}

would be rendered as:

.. code-block:: algpseudocode

   \PROGRAM {The Pseudoprogram} \IS

   \END PROGRAM {The Pseudoprogram}

And the same with the german variant:

.. code-block:: algpseudocode-de

   \PROGRAM {The Pseudoprogram} \IS

   \END PROGRAM {The Pseudoprogram}

Expressions:

- Strings (single-quote, double-quote, triple-single-quote, triple-double-quote)
- Numbers (Python style)
- ``\TEXT{...}``

  The curly brace can be quoted with ``\}`` to not end the text mode

- Names (`Name.Entity`)

.. literalinclude:: example-1.pseudocode
   :language: algpseudocode
   :lines: 2-

With a customized `AlgPseudocodeLexer` and its `no_end`
option set to ``True``.

.. literalinclude:: example-1.pseudocode
   :language: NoEndAlgPseudocode
   :lines: 2-

Python:

.. code-block:: python

   class HUHU:

     # This is a comment
     @classmethod
     def method1(cls_, aparam1, param2):
       return aparam1 + param2


This is Wikipedia's description of *Dinic's Algorithm*
(see https://en.wikipedia.org/wiki/Dinic%27s_algorithm):

.. literalinclude:: algorithm-dinic.description
   :language: algpseudocode
   :lines: 2-

This is Wikipedia's pseudocode of the *Ford–Fulkerson Algorithm*
(see https://en.wikipedia.org/wiki/Ford%E2%80%93Fulkerson_algorithm):

.. literalinclude:: algorithm-ford-fulkerson.pseudocode
   :language: algpseudocode
   :lines: 2-

This is Wikipedia's pseudocode of the *Edmonds–Karp Algorithm*
(see https://en.wikipedia.org/wiki/Edmonds%E2%80%93Karp_algorithm):

.. literalinclude:: algorithm-edmonds-karp.pseudocode
   :language: NoEndAlgPseudocode
   :lines: 2-

And now the *Edmonds–Karp Algorithm* with french keywords:

.. literalinclude:: algorithm-edmonds-karp.pseudocode
   :language: algpseudocode-fr
   :lines: 2-


Indices and tables
==================

.. * :ref:`genindex`
.. * :ref:`modindex`

* :ref:`search`
