diff interps/clc-intercal/CLC-INTERCAL-Base-1.-94.-2/INTERCAL/Include/iacc.iacc @ 996:859f9b4339e6

<Gregor> tar xf egobot.tar.xz
author HackBot
date Sun, 09 Dec 2012 19:30:08 +0000
parents
children
line wrap: on
line diff
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/interps/clc-intercal/CLC-INTERCAL-Base-1.-94.-2/INTERCAL/Include/iacc.iacc	Sun Dec 09 19:30:08 2012 +0000
@@ -0,0 +1,274 @@
+PLEASE NOTE THAT THIS PROGRAM IS A COMPILER GENERATOR
+(IACC - INTERCAL ADVANCED COMPILER COMPILER)
+
+Copyright (c) 2006-2008 Claudio Calvelli, all rights reserved.
+
+CLC-INTERCAL is copyrighted software. However, permission to use, modify,
+and distribute it is granted provided that the conditions set out in the
+licence agreement are met. See files README and COPYING in the distribution.
+
+TO COMPILE A COMPILER:
+
+    sick --preload=iacc --batch compiler.iacc
+
+TO USE A COMPILER COMPILED WITH IACC:
+
+    sick --preload=compiler --batch program.i
+
+THIS FILE IS ALSO AVAILABLE AS A PREBUILT COMPILER (iacc.io).
+TO REBUILD AFTER MODIFYING THIS FILE:
+
+    sick --preload=iacc --batch iacc.iacc
+
+END OF THE USAGE INSTRUCTIONS
+
+PERVERSION "CLC-INTERCAL INTERCAL/Include/iacc.iacc 1.-94.-2"
+
+PLEASE NOTE: INITIAL VALUES FOR REGISTERS
+	DO %PS <- ?PROGRAM
+	DO %IS <- #0
+	DO %FS <- ?CALC_FULL
+	DO %ES <- ?CALC_EXPR
+	DO %JS <- ?END_JUNK
+	DO %SS <- ?SPACE
+	DO %IO <- ?CLC
+	DO %CR <- ?ASCII
+	DO %CW <- ?ASCII
+	DO ?TYPE <- ?IACC
+
+PLEASE NOTE: DETERMINE WHERE JUNK ENDS
+	DO CREATE _2 ?END_JUNK ?DO_PLEASE AS ,,
+
+PLEASE NOTE: COMPILER COMPILER STARTS HERE
+	DO CREATE _2 ?BYTECODE ?SPECIAL_REGISTER=* AS ?SPECIAL_REGISTER
+	   #1
+
+	DO CREATE _2 ?BC_OR_CONST ?BYTECODE=* AS ?BYTECODE #1
+	DO CREATE _2 ?BC_OR_CONST ,#35, ?CONSTANT=1 AS ?CONSTANT #1
+
+	DO CREATE _2 ?BC_LIST ?BC_OR_CONST=* AS ?BC_OR_CONST #1
+	DO CREATE _2 ?BC_LIST ?BC_OR_CONST=* ,#43, ?BC_LIST=* AS
+	   ?BC_OR_CONST #1 + ?BC_LIST #1
+
+	DO CREATE _2 ?NONBINARY ,#35, ?CONSTANT AS ?CONSTANT #1
+	DO CREATE _2 ?NONBINARY ?SPECIAL_REGISTER AS ?SPECIAL_REGISTER
+	   #1
+	DO CREATE _2 ?NONBINARY ,#44, ,#63, ?E_LIST ,#44, AS MUL +
+	   !E_LIST #1 + ?E_LIST #1
+	DO CREATE _2 ?NONBINARY ,#63, ?SYMBOL AS ?SYMBOL #1
+	DO CREATE _2 ?NONBINARY ,#39, ?EXPRESSION ,#39, AS ?EXPRESSION
+	   #1
+	DO CREATE _2 ?NONBINARY ,#34, ?EXPRESSION ,#34, AS ?EXPRESSION
+	   #1
+	DO CREATE _2 ?EXPRESSION ?NONBINARY ?MAYBE_BINARY AS
+	   ?MAYBE_BINARY #1 + ?NONBINARY #1
+	DO CREATE _2 ?MAYBE_BINARY ,, AS ,,
+	DO CREATE _2 ?MAYBE_BINARY ?BINARY ?EXPRESSION AS ?BINARY #1 +
+	   ?EXPRESSION #1
+
+	DO CREATE _2 ?BINARY ,#162, AS RIN
+	DO CREATE _2 ?BINARY ,#126, AS RSE
+
+	DO CREATE _2 ?E_LIST ?EXPRESSION=1 AS ?EXPRESSION #1
+	DO CREATE _2 ?E_LIST ?EXPRESSION=1 ,#43, ?E_LIST=* AS
+	   ?EXPRESSION #1 + ?E_LIST #1
+
+	DO CREATE _2 ?CLEFT ?EXPRESSION AS #0 + ?EXPRESSION #1
+	DO CREATE _2 ?CLEFT ?TAILS AS #1 + ?TAILS #1
+	DO CREATE _2 ?CLEFT ,#44, ,#44, AS #1 + STR + #0
+	DO CREATE _2 ?LEFT ?CLEFT ?MAYBE_COUNT AS ?MAYBE_COUNT #1 +
+	   ?CLEFT #1
+	DO CREATE _2 ?MAYBE_COUNT ,, AS #0
+	DO CREATE _2 ?MAYBE_COUNT ,#61, ?CONSTANT AS ?CONSTANT #1
+	DO CREATE _2 ?MAYBE_COUNT ,#61, ?EXPRESSION AS ?EXPRESSION #1
+	DO CREATE _2 ?MAYBE_COUNT ,#61, ,#42, AS #65535
+	DO CREATE _2 ?LEFTS ?LEFT=1 AS ?LEFT #1
+	DO CREATE _2 ?LEFTS ?LEFT=1 ?LEFTS=* AS ?LEFT #1 + ?LEFTS #1
+
+	DO CREATE _2 ?RIGHT ?EXPRESSION ?EXPRESSION AS #0 + ?EXPRESSION
+	   #2 + ?EXPRESSION #1
+	DO CREATE _2 ?RIGHT ?TAILS ?EXPRESSION AS #1 + ?EXPRESSION #1 +
+	   ?TAILS #1
+	DO CREATE _2 ?RIGHT ,#44, ,#44, AS #4 + #0
+	DO CREATE _2 ?RIGHT ?BYTECODE AS #4 + !BYTECODE #1 + ?BYTECODE
+	   #1
+	DO CREATE _2 ?RIGHT ,#35, ?CONSTANT AS #4 + !CONSTANT #1 +
+	   ?CONSTANT #1
+	DO CREATE _2 ?RIGHT ,#33, ?EXPRESSION ?EXPRESSION AS #6 +
+	   ?EXPRESSION #2 + ?EXPRESSION #1
+	DO CREATE _2 ?RIGHT ,#33, ?SYMBOL ?EXPRESSION AS #6 +
+	   ?EXPRESSION #1 + ?SYMBOL #1
+	DO CREATE _2 ?RIGHT ,#42, AS #15
+	DO CREATE _2 ?RIGHTS ?RIGHT=1 AS ?RIGHT #1
+	DO CREATE _2 ?RIGHTS ?RIGHT=1 ,#43, ?RIGHTS=* AS ?RIGHT #1 +
+	   ?RIGHTS #1
+
+	DO CREATE _2 ?TAILS ,#44, ?E_LIST ,#44, AS MUL + !E_LIST #1 +
+	   ?E_LIST #1
+	DO CREATE _2 ?TAILS ,#44, ?SYMBOL ,#44, AS ?SYMBOL #1
+
+	DO CREATE _2 ?VERB ?SPECIAL_REGISTER ,#60, ,#45, ?EXPRESSION AS
+	   STO + ?EXPRESSION #1 + ?SPECIAL_REGISTER #1
+	DO CREATE _2 ?VERB ,STASH, ?SPECIAL_REGISTER AS STA + #1 +
+	   ?SPECIAL_REGISTER #1
+	DO CREATE _2 ?VERB ,RETRIEVE, ?SPECIAL_REGISTER AS RET + #1 +
+	   ?SPECIAL_REGISTER #1
+
+	DO CREATE _2 ?VERB ,INTERNAL, ?BC_LIST AS ?BC_LIST #1
+
+	DO CREATE _2 ?VERB ,CREATE, ?GRAMMAR ?EXPRESSION ?LEFTS ,AS,
+	   ?RIGHTS AS CRE + ?GRAMMAR #1 + ?EXPRESSION #1 + !LEFTS #1 +
+	   ?LEFTS #1 + !RIGHTS #1 + ?RIGHTS #1
+	DO CREATE _2 ?GRAMMAR ,, AS #2
+	DO CREATE _2 ?GRAMMAR ,_, ?CONSTANT AS ?CONSTANT #1
+
+	DO CREATE _2 ?VERB ,#63, ?SYMBOL ,#60, ,#45, ,#63, ?SYMBOL AS
+	   FLA + ?SYMBOL #1 + ?SYMBOL #2
+
+	DO CREATE _2 ?VERB ,MAKE, ,NEW, ,OPCODE, ?EXPRESSION ?TAILS
+	   ,AS, ?BC_LIST AS MKG + ?EXPRESSION #1 + ?TAILS #1 + !BC_LIST
+	   #1 + ?BC_LIST #1
+
+PLEASE NOTE: COMPILERS DON'T HAVE REINSTATE
+	DO CREATE _2 ?VERB ,NOT, ?JUNK AS ,,
+	DO CREATE _2 ?VERB ,N, ,#39, ,T, ?JUNK AS ,,
+
+PLEASE NOTE: THE VERY LAST FEW STATEMENTS IN A COMPILER
+	DO CREATE _2 ?VERB ,FREEZE, AS FRZ
+	DO CREATE _2 ?VERB ,GIVE, ,UP, AS GUP
+
+PLEASE NOTE: COMPILERS DON'T HAVE LABELS OR "%"
+	DO CREATE _2 ?STATEMENT ?DO_PLEASE ?VERB AS STS + * + ?VERB #1
+	DO CREATE _2 ?DO_PLEASE ,DO, AS ,,
+	DO CREATE _2 ?DO_PLEASE ,PLEASE, AS ,,
+
+PLEASE NOTE: THE WHOLE PROGRAM
+	DO CREATE _2 ?PROGRAM ?STATEMENT AS ?STATEMENT #1
+
+PLEASE NOTE: DEFINITIONS BORROWED FROM THE ASSEMBLER
+
+PLEASE NOTE: NAMES OF "%" REGISTERS
+	DO CREATE _2 ?SPECIAL_REGISTER ,#37, ?REG69=* AS ?REG69 #1
+	DO CREATE _2 ?REG69 ,WT,=2 AS %WT
+	DO CREATE _2 ?REG69 ,AR,=2 AS %AR
+	DO CREATE _2 ?REG69 ,AW,=2 AS %AW
+	DO CREATE _2 ?REG69 ,JS,=2 AS %JS
+	DO CREATE _2 ?REG69 ,SS,=2 AS %SS
+	DO CREATE _2 ?REG69 ,PS,=2 AS %PS
+	DO CREATE _2 ?REG69 ,FS,=2 AS %FS
+	DO CREATE _2 ?REG69 ,ES,=2 AS %ES
+	DO CREATE _2 ?REG69 ,IS,=2 AS %IS
+	DO CREATE _2 ?REG69 ,DM,=2 AS %DM
+	DO CREATE _2 ?REG69 ,SP,=2 AS %SP
+	DO CREATE _2 ?REG69 ,RT,=2 AS %RT
+	DO CREATE _2 ?REG69 ,TH,=2 AS %TH
+	DO CREATE _2 ?REG69 ,RM,=2 AS %RM
+	DO CREATE _2 ?REG69 ,IO,=2 AS %IO
+	DO CREATE _2 ?REG69 ,BA,=2 AS %BA
+	DO CREATE _2 ?REG69 ,CF,=2 AS %CF
+	DO CREATE _2 ?REG69 ,CR,=2 AS %CR
+	DO CREATE _2 ?REG69 ,CW,=2 AS %CW
+	DO CREATE _2 ?REG69 ,OS,=2 AS %OS
+	DO CREATE _2 ?REG69 ,TM,=2 AS %TM
+
+PLEASE NOTE: NAMES OF "@" REGISTERS
+	DO CREATE _2 ?SPECIAL_REGISTER ,#64, ?REG68=* AS ?REG68 #1
+	DO CREATE _2 ?REG68 ,OR,=2 AS @OR
+	DO CREATE _2 ?REG68 ,OWFH,=2 AS @OWFH
+	DO CREATE _2 ?REG68 ,ORFH,=2 AS @ORFH
+	DO CREATE _2 ?REG68 ,OSFH,=2 AS @OSFH
+	DO CREATE _2 ?REG68 ,SNFH,=2 AS @SNFH
+	DO CREATE _2 ?REG68 ,TRFH,=2 AS @TRFH
+
+PLEASE NOTE: NAMES OF "^" REGISTERS
+	DO CREATE _2 ?SPECIAL_REGISTER ,#94, ?REG70=* AS ?REG70 #1
+	DO CREATE _2 ?REG70 ,AV,=2 AS ^AV
+	DO CREATE _2 ?REG70 ,EV,=2 AS ^EV
+
+PLEASE NOTE: "BYTECODE" INSTRUCTION NAMES
+	DO CREATE _2 ?BYTECODE ,ABG,=1 AS ABG
+	DO CREATE _2 ?BYTECODE ,ABL,=1 AS ABL
+	DO CREATE _2 ?BYTECODE ,AWC,=1 AS AWC
+	DO CREATE _2 ?BYTECODE ,BAW,=1 AS BAW
+	DO CREATE _2 ?BYTECODE ,BBT,=1 AS BBT
+	DO CREATE _2 ?BYTECODE ,BSW,=1 AS BSW
+	DO CREATE _2 ?BYTECODE ,BUG,=1 AS BUG
+	DO CREATE _2 ?BYTECODE ,BUT,=1 AS BUT
+	DO CREATE _2 ?BYTECODE ,BWC,=1 AS BWC
+	DO CREATE _2 ?BYTECODE ,CFG,=1 AS CFG
+	DO CREATE _2 ?BYTECODE ,CFL,=1 AS CFL
+	DO CREATE _2 ?BYTECODE ,CHO,=1 AS CHO
+	DO CREATE _2 ?BYTECODE ,CON,=1 AS CON
+	DO CREATE _2 ?BYTECODE ,CRE,=1 AS CRE
+	DO CREATE _2 ?BYTECODE ,CSE,=1 AS CSE
+	DO CREATE _2 ?BYTECODE ,CWB,=1 AS CWB
+	DO CREATE _2 ?BYTECODE ,DES,=1 AS DES
+	DO CREATE _2 ?BYTECODE ,DOS,=1 AS DOS
+	DO CREATE _2 ?BYTECODE ,DSX,=1 AS DSX
+	DO CREATE _2 ?BYTECODE ,EBC,=1 AS EBC
+	DO CREATE _2 ?BYTECODE ,ECB,=1 AS ECB
+	DO CREATE _2 ?BYTECODE ,ENR,=1 AS ENR
+	DO CREATE _2 ?BYTECODE ,ENS,=1 AS ENS
+	DO CREATE _2 ?BYTECODE ,FIN,=1 AS FIN
+	DO CREATE _2 ?BYTECODE ,FLA,=1 AS FLA
+	DO CREATE _2 ?BYTECODE ,FOR,=1 AS FOR
+	DO CREATE _2 ?BYTECODE ,FRE,=1 AS FRE
+	DO CREATE _2 ?BYTECODE ,FRZ,=1 AS FRZ
+	DO CREATE _2 ?BYTECODE ,GRA,=1 AS GRA
+	DO CREATE _2 ?BYTECODE ,GUP,=1 AS GUP
+	DO CREATE _2 ?BYTECODE ,HSN,=1 AS HSN
+	DO CREATE _2 ?BYTECODE ,HYB,=1 AS HYB
+	DO CREATE _2 ?BYTECODE ,IGN,=1 AS IGN
+	DO CREATE _2 ?BYTECODE ,INT,=1 AS INT
+	DO CREATE _2 ?BYTECODE ,LAB,=1 AS LAB
+	DO CREATE _2 ?BYTECODE ,LEA,=1 AS LEA
+	DO CREATE _2 ?BYTECODE ,MKG,=1 AS MKG
+	DO CREATE _2 ?BYTECODE ,MSP,=1 AS MSP
+	DO CREATE _2 ?BYTECODE ,MUL,=1 AS MUL
+	DO CREATE _2 ?BYTECODE ,NOT,=1 AS NOT
+	DO CREATE _2 ?BYTECODE ,NUM,=1 AS NUM
+	DO CREATE _2 ?BYTECODE ,NXG,=1 AS NXG
+	DO CREATE _2 ?BYTECODE ,NXL,=1 AS NXL
+	DO CREATE _2 ?BYTECODE ,NXT,=1 AS NXT
+	DO CREATE _2 ?BYTECODE ,OPT,=1 AS OPT
+	DO CREATE _2 ?BYTECODE ,OSN,=1 AS OSN
+	DO CREATE _2 ?BYTECODE ,OVM,=1 AS OVM
+	DO CREATE _2 ?BYTECODE ,OVR,=1 AS OVR
+	DO CREATE _2 ?BYTECODE ,OWN,=1 AS OWN
+	DO CREATE _2 ?BYTECODE ,QUA,=1 AS QUA
+	DO CREATE _2 ?BYTECODE ,REG,=1 AS REG
+	DO CREATE _2 ?BYTECODE ,REL,=1 AS REL
+	DO CREATE _2 ?BYTECODE ,REM,=1 AS REM
+	DO CREATE _2 ?BYTECODE ,RES,=1 AS RES
+	DO CREATE _2 ?BYTECODE ,RET,=1 AS RET
+	DO CREATE _2 ?BYTECODE ,RIN,=1 AS RIN
+	DO CREATE _2 ?BYTECODE ,ROM,=1 AS ROM
+	DO CREATE _2 ?BYTECODE ,ROR,=1 AS ROR
+	DO CREATE _2 ?BYTECODE ,ROU,=1 AS ROU
+	DO CREATE _2 ?BYTECODE ,RSE,=1 AS RSE
+	DO CREATE _2 ?BYTECODE ,SEL,=1 AS SEL
+	DO CREATE _2 ?BYTECODE ,SHF,=1 AS SHF
+	DO CREATE _2 ?BYTECODE ,SMU,=1 AS SMU
+	DO CREATE _2 ?BYTECODE ,SPL,=1 AS SPL
+	DO CREATE _2 ?BYTECODE ,SPO,=1 AS SPO
+	DO CREATE _2 ?BYTECODE ,STA,=1 AS STA
+	DO CREATE _2 ?BYTECODE ,STE,=1 AS STE
+	DO CREATE _2 ?BYTECODE ,STO,=1 AS STO
+	DO CREATE _2 ?BYTECODE ,STR,=1 AS STR
+	DO CREATE _2 ?BYTECODE ,STS,=1 AS STS
+	DO CREATE _2 ?BYTECODE ,STU,=1 AS STU
+	DO CREATE _2 ?BYTECODE ,SUB,=1 AS SUB
+	DO CREATE _2 ?BYTECODE ,SWA,=1 AS SWA
+	DO CREATE _2 ?BYTECODE ,SWB,=1 AS SWB
+	DO CREATE _2 ?BYTECODE ,SYS,=1 AS SYS
+	DO CREATE _2 ?BYTECODE ,TAI,=1 AS TAI
+	DO CREATE _2 ?BYTECODE ,TSP,=1 AS TSP
+	DO CREATE _2 ?BYTECODE ,TYP,=1 AS TYP
+	DO CREATE _2 ?BYTECODE ,UDV,=1 AS UDV
+	DO CREATE _2 ?BYTECODE ,UNE,=1 AS UNE
+	DO CREATE _2 ?BYTECODE ,UNS,=1 AS UNS
+	DO CREATE _2 ?BYTECODE ,USG,=1 AS USG
+	DO CREATE _2 ?BYTECODE ,WHP,=1 AS WHP
+	DO CREATE _2 ?BYTECODE ,WIN,=1 AS WIN
+
+	DO GIVE UP