S T R U C T O R I Z E R - User Guide
Preferences > Parser

Preferences menu with parser item selected

In this dialog you specify (customize) the keywords / syntax you want to use in your structograms. Generally, structograms are free of any syntax, but if you want to use certain advanced features of Structorizer, you need to define keywords and stick to them. For instance, the correct detection and semantical distinction of FOR loops depends on the keywords specified here.

Parser Preferences menu version 3.25

For versions > 3.28-12, there will be some more customisable key words (for EXIT elements):

Parser Preferences dialog after version 3.28-12

For most control structures, you can define a leading "Pre" and trailing "Post" keyword, where "Pre" and "Post" refers to the characteristical text content of an element (e.g. the condition of an alternative or loop). Some control structures like FOR loops and EXIT instructions, however, require more keywords or separator strings. Depending on what module uses the diagram parser (see below), these keywords are being filtered out or replaced.

The toggle item "Ignore case" (introduced with version 3.24-06) controls whether the parser keywords configured here are to be matched in a case-sensitive or case-ignorant (or say tolerant) way, the latter being the default, e.g. it wouldn't make a difference whether you write "INPUT", "input", or "Input" (or even "iNpUt") in your diagrams; Structorizer would recognise it while option "Ignore case" is active. Be aware, however, that this case tolerance only applies to the keywords configured here, not to variable names.

The parser preferences are consulted by the following features:

If you need none of them, then for you there may be no use adjusting the parser preferences.

In most cases, however, you may want input and output instructions detected, FOR loops properly interpreted etc. In this case, the adaptation of parser preferences to the keywords used in the diagram may get to work the mechanisms listed above.

On the other hand, a "working" diagram might get stale if you alter some of the parser keywords. Therefore Structorizer offers a helpful service: Refactoring parser keywords in diagrams. If you changed one or more of the keywords in this dialog, and the currently edited diagram isn't empty or there are diagrams parked in the Arranger, then you will be asked, whether:

  • no diagram,
  • the diagram currently edited, or
  • all open diagrams (i. e. including those that are parked in an attached Arranger)

be automatically adapted to the new parser preferences - as far as they had matched the previous ones. This way, you can refactor an entire set of diagrams to use e.g. French keywords like "pour", "à", and ", pas = " in FOR loops instead of the English ones ("for", "to", "step") shown in the screenshot above. The translation of the diagrams induced by pressing the "OK" button is individually undoable for every affected diagram.
Also see Import options and loading preferences for other aspects of diagram refactoring.


  1. Parser settings are technically independent of the "structures" preferences. (Though it makes sense, of course, to configure e.g. the "Pre" condition keyword of a Repeat loop as "until" if you had decided to specify the default text for the Repeat loop as e.g. "until EXIT_CONDITION" in the "structures" preferences.) With FOR and FOR-In loops, however, the default phrase in the "structures" preferences is split by the element editor based on the "Pre" and "Post" keywords configured here in order to decide the style and the parameters of the loop.
  2. The "Pre" keyword of the FOR-In loop is not required to differ from that of the FOR loop. It may also be empty - in this case the "Pre" keyword of the FOR loop is automatically accepted as well. The "Post" keyword of the FOR-IN loop, however, must neither be empty nor be equal to any other keyword of the parser preferences (this is to ensure that Structorizer is able to tell a FOR-IN loop from a FOR loop).
  3. The keywords for the EXIT statement and for input and output instructions must mutually differ.