This is the short version of the paper: Prokhorov, V.V. Pi-charts: The Language for Graphic Representation of Algorithms and Syntactic Descriptions. Cybernetics and Systems Analysis, 1992, N2, p.93-117.
Vladimir V. Prokhorov
Institute of Math and Mechanics, Russian Academy of Sciences/Ural Branch
GSP-384 Yekaterinburg, 620219 RUSSIA
Fax: (7 343) 244-2581. Email:firstname.lastname@example.org Abstract
Keywords:Algorithmic Languages, Knowledge Representation, Visual Programming
1. Description of the Language
Nowadays, there are used some visual languages algorithmic knowledge representation . The most popular is the flow chart (ISO DIS 5807.2). Idea of flow chart is based on the algorithms idea as a flow of commands, while in textual algorithmic languages the technology of structural representation is much popular. The simplest text-graphic form of algorithms representation is writing in such a manner, that a structural hierarchy is shown by indents of text lines. Among graphic structural languages, the most common is the structure grams by Nessie and Shneiderman (DIN 65261 HCN 1422). HIPO-charts are also in use, but the degree of their graphicity may be doubted.
Our visual language (see also ) in its idea is similar to Nessie-Shneidermans structure grams, but, apparently, seems to be more convenient for of algorithms writing. The p-charts algorithmic language is oriented exclusively to the structural approach to algorithmization (the nonstructural one becoming impossible), and to the top-down technology of algorithm's development. We look at the language from micro-language  viewpoint, as element of layered language. Therefore, we consider neither languages sublanguages-clients, nor languages host (for example, constructions of object-oriented programming). A first description of the language was given in . The language is similar to the syntactical p-charts language  in its idea.
We give main elements description using a certain version of Backus-Naur syntactic formulas.
<Statement>::= <Terminal> | <Series> |
<Parallel> | <Case statement> |
<Loop statement> | <Multiplier statement> | <Block> | <Control element>
<Terminal>::= <Atom> | <Embedded object>
Here <Atom> is an elementary command that may be considered as not requiring further fragmentation into the smaller elements in terms of the language. <Atom> is an element of set of primitive actions. <Embedded object> is a complex object, constructed in another language.
<Case statement>::= <Logical case statement> | <Switch case statement>
<Selector>::= <Value> | <Set of values>
<Multiplier statement> is intended to use in parallel algorithms (as reduced form of <Parallel>).
Block is a statement having a name and/or local data and/or comment.
<Loop statement termination> | <Procedure body statement termination>
<Substitution> denotes equivalence if circle-marked field to the <Statement>.
From the given definitions, the p-chart is a tree-like graph. Each of its sub-trees is called a statement. The non-terminal nods of the graph correspond to the various algorithmic language constructions, and the terminal ones to executed actions. In addition, two algorithmic elements termination of loop statement, and termination of procedure body may be used as terminal nodes. So, the language is based on graph of algorithms structure. They are two-dimensional: the top-bottom direction reveals the degree of structure elaboration, and the left-to-right direction represents a proceeding sequence in the <Series> construction, and conditions priority in the <Case statement>. Note, that the flowchart is based upon an algorithm proceeding graph where the time axis is represented by the arcs (hence, flow chart is one-dimensional diagram).