view docs/example-1.pseudocode @ 123:4d96ace53ba1

Make it work on Python2 too with all tests by explicitely declaring some strings to be Unicode strings. No tests need to be skipped on Python2 now.
author Franz Glasner <fzglas.hg@dom66.de>
date Wed, 06 May 2026 15:53:24 +0200
parents 1c1985532139
children 4acf578ae93f
line wrap: on
line source

// -*- coding: utf-8; indent-tabs-mode: nil -*-
\PROGRAM {The Pseudocode Lexer} \IS

  /*
   * The program is here, but it also could be an \ALGORITHM
   *
   * /* YES! Nested multiline comments work! */
   */

  \PROC {A Procedure name} \IS
    \TBLOCK {A text block 1}
    \TBLOCK {A text block 2 with an expression: \expr{flag is FALSE}}
    \BLOCK {
        \REMARK  A remark on its own line within a "BLOCK"
    }
  \END-PROC {A Procedure name}

  \FUNCTION{A Function with {escaped\} text} \IS
    a and b xor (c in d)      \rem this is another remark
    \block {foo bar}

    \IF a is nil \THEN
      \text{Set something}
    \ELSEIF
      \text{Set some other thing}
    \END-IF
  \END FUNCTION{A Function with {escaped\} text}

  \CLASS{A Class} \IS
    // This is a one-line comment
    a and b xor (c in d)      \rem this is another remark

    # This is another one-line comment
    \block {foo
      bar}
    \block{a 1.2 {x in X\} c}
    \tstate{We will compute next \expr{a xor b or (\text{set} X is Empty)} \rem without c!
      or multiply it the other way round}

    \tstate{foo bar     \rem A remark within a text statement until LF!
      nextfoo nextbar
      nextnextfoo nextnextbar}
  \ENDCLASS{A Class}

  @A_XXX
  FOO BAR
\ENDPROG