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 ... ’]’