Лістинг програми
Головний модуль PAStoCPP.cpp
#include <iostream.h>
#include <fstream.h>
#include <conio.h>
#include <cach.cpp>
// перерахування
enum {
PROGRAM, USES, PROCEDURE, FUNCTION, INTEGER, SHORTINT,
SMALLINT, LONGINT, BYTE, WORD, REAL, SINGLE, DOUBLE, EXTENDED, PCHAR,
BOOLEAN, POINTER, CHAR, ARRAY, OF, STRINGIN, VAR, PRST, BEGIN, END, FOR,
TO, DO, THEN, AND, OR, IF, WHILE, CASE, ELSE, PRISVOIT,
REPEAT, UNTIL, RETURN, TRUE, FALSE, READLN, READ, WRITELN, WRITE, CLRSCR,
CONST, TYPE, IMPLEMENTATION, DIV, MOD, XOR, INC, DEC, COS, SIN, TAN, SQRT
};
// строковий масив ключових слів мови PASCAL
char* chg[] = {
"PROGRAM", "USES", "PROCEDURE", "FUNCTION", "INTEGER", "SHORTINT",
"SMALLINT", "LONGINT", "BYTE", "WORD", "REAL", "SINGLE", "DOUBLE",
"EXTENDED", "PCHAR", "BOOLEAN", "POINTER", "CHAR", "ARRAY",
"OF","STRING", "VAR", "..", "BEGIN", "END", "FOR", "TO",
"DO", "THEN", "AND", "OR", "IF", "WHILE", "CASE", "ELSE", ":=",
"REPEAT", "UNTIL", "RETURN", "TRUE", "FALSE", "READLN", "READ",
"WRITELN", "WRITE", "CLRSCR", "CONST", "TYPE", "IMPLEMENTATION",
"DIV", "MOD", "XOR", "INC", "DEC", "COS", "SIN", "TAN", "SQRT"
};
// функція заміни ключових слів, отримує в якості аргументу
// строку ісходного файлу і проводить обробку
string convertcpp(char *_buff)
{
// статичні змінні
static bool firstFlag = true, ElseInCase, InSwitch, InProcedure, InVar, InMain;
// логічні змінні
bool Var = false, finish, InFor = false, ItIsComents, finishk;
// внутрішні змінні