64 lines
		
	
	
	
		
			1.5 KiB
		
	
	
	
		
			C
		
	
	
	
	
	
			
		
		
	
	
			64 lines
		
	
	
	
		
			1.5 KiB
		
	
	
	
		
			C
		
	
	
	
	
	
| /*  Copyright (c) 2019 ACK Project.
 | |
|  *  See the copyright notice in the ACK home directory,
 | |
|  *  in the file "Copyright".
 | |
|  *
 | |
|  */
 | |
| #ifndef __GENCODE_H_INCLUDED__
 | |
| #define __GENCODE_H_INCLUDED__
 | |
| 
 | |
| #include "symbols.h"
 | |
| 
 | |
| 
 | |
| /*--------------------------- Utilities -----------------------*/
 | |
| 
 | |
| /** Return a global value identifier used for code generation */
 | |
| extern int genlabel(void);
 | |
| 
 | |
| 
 | |
| /*-------------------------- Code generation ---------------------*/
 | |
| 
 | |
| /** Emit a label definition and return the label identifier generated. */
 | |
| extern int genemlabel(void);
 | |
| 
 | |
| 
 | |
| void newemblock(int nr);
 | |
| void newblock(int nr);
 | |
| void datastmt(void);
 | |
| void datatable(void);
 | |
| /* ERROR and exception handling */
 | |
| void exceptstmt(int lab);
 | |
| void errorstmt(int exprtype);
 | |
| /* BASIC IO */
 | |
| void openstmt(int recsize);
 | |
| void printstmt(int exprtype);
 | |
| void zone(int i);
 | |
| void writestmt(int exprtype, int comma);
 | |
| void restore(int lab);
 | |
| void prompt(int qst);
 | |
| void linestmt(int type);
 | |
| void readelm(int type);
 | |
| /* Swap exchanges the variable values */
 | |
| void swapstmt(int ltype,int rtype);
 | |
| void setchannel(int val);
 | |
| int ifstmt(int type);
 | |
| int thenpart(int elselab);
 | |
| void elsepart(int lab);
 | |
| void forinit(Symbol *s);
 | |
| void forexpr(int type);
 | |
| void forlimit(int type);
 | |
| void forstep(int type);
 | |
| void nextstmt(Symbol *s);
 | |
| void pokestmt(int type1,int type2);
 | |
| void whilestart(void);
 | |
| void whiletst(int exprtype);
 | |
| void wend(void);
 | |
| /* generate code for the final version */
 | |
| void prologcode(void);
 | |
| void prolog2(void);
 | |
| void gendata(void);
 | |
| void epilogcode(void);
 | |
| void setchannel(int val);
 | |
| void gendata(void);
 | |
| 
 | |
| 
 | |
| #endif /* __GENCODE_H_INCLUDED__ */
 |