FORCAL is the programming language well known to programmers who are interested in compiler construction and especially to students attending Dr. C. Ompiler class. The FORCAL syntax is defined as follows:
Assignment:
identifier := expression
where expressions are constructed from identifiers, literals, operators +, -,
and parentheses as follows:
1) all identifiers and literals are expressions,
2) if a, b are expressions then a + b, a - b, +a, -a, (a) are expressions.
Input/Output:
read(List of identifiers);
write(List of expressions)
(Items in the list are separated by comma)
FORCAL tokens are defined to be: the identifiers or the literals or the symbols + - ( ) := ; , or the reserved words.
NOTES:
Help the students of Dr. C. Ompiler to write a program which reads lines of text an recognizes the FORCAL tokens in them.
The input file consists of several blocks of lines. Each block contains lines of text and is terminated by one empty line.
The output file consists of blocks corresponding to the blocks in the input file. In the lines of each block there are successively stored the FORCAL tokens recognized by the program (just one token on each line). Each token must be written on the output line in exactly the same form as it appears in the input text. If the program encounters a string that is neither a FORCAL token, nor comment, nor space, tab, end-of-line, it is to write the string TOKEN ERROR on a new line and continues by processing the next block in the input file. The program writes one empty line after each block of the output file.