Next: CCL Statements, Up: CCL [Contents][Index]
The full syntax of a CCL program in BNF notation:
CCL_PROGRAM :=
(BUFFER_MAGNIFICATION
CCL_MAIN_BLOCK
[ CCL_EOF_BLOCK ])
BUFFER_MAGNIFICATION := integer
CCL_MAIN_BLOCK := CCL_BLOCK
CCL_EOF_BLOCK := CCL_BLOCK
CCL_BLOCK :=
STATEMENT | (STATEMENT [STATEMENT ...])
STATEMENT :=
SET | IF | BRANCH | LOOP | REPEAT | BREAK | READ | WRITE
| CALL | END
SET :=
(REG = EXPRESSION)
| (REG ASSIGNMENT_OPERATOR EXPRESSION)
| integer
EXPRESSION := ARG | (EXPRESSION OPERATOR ARG)
IF := (if EXPRESSION CCL_BLOCK [CCL_BLOCK])
BRANCH := (branch EXPRESSION CCL_BLOCK [CCL_BLOCK ...])
LOOP := (loop STATEMENT [STATEMENT ...])
BREAK := (break)
REPEAT :=
(repeat)
| (write-repeat [REG | integer | string])
| (write-read-repeat REG [integer | ARRAY])
READ :=
(read REG ...)
| (read-if (REG OPERATOR ARG) CCL_BLOCK CCL_BLOCK)
| (read-branch REG CCL_BLOCK [CCL_BLOCK ...])
WRITE :=
(write REG ...)
| (write EXPRESSION)
| (write integer) | (write string) | (write REG ARRAY)
| string
CALL := (call ccl-program-name)
END := (end)
REG := r0 | r1 | r2 | r3 | r4 | r5 | r6 | r7
ARG := REG | integer
OPERATOR :=
+ | - | * | / | % | & | ’|’ | ^ | << | >> | <8 | >8 | //
| < | > | == | <= | >= | != | de-sjis | en-sjis
ASSIGNMENT_OPERATOR :=
+= | -= | *= | /= | %= | &= | ’|=’ | ^= | <<= | >>=
ARRAY := ’[’ integer ... ’]’