pass-lang/src/bytecode.h

61 lines
1.3 KiB
C

#ifndef _BYTECODE_H
#define _BYTECODE_H
#include "format.h"
/// a * b <=> b * a
void comm(void);
/// a * (b * c) => (a * b) * c
void assocl(void);
/// (a * b) * c => a * (b * c)
void assocr(void);
/// a * (b + c) => (a * b) + (a * c)
void distr(void);
/// (a + b) * c => (a * c) + (b * c)
void distl(void);
/// (a * b) + (a * c) => a * (b + c)
void factr(void);
/// (a * c) + (b * c) => (a + b) * c
void factl(void);
/// (a => b) => (a * c => b * c)
void mapl_begin(void);
void mapl_end(void);
/// (b => c) => (a * b => a * c)
void mapr_begin(void);
void mapr_end(void);
/// a => a * 1
void unitir(void);
/// a => 1 * a
void unitil(void);
/// a * 1 => a
void uniter(void);
/// 1 * a => a
void unitel(void);
/// a + b <=> b + a
void comm_plus(void);
/// a + (b + c) => (a + b) + c
void assocl_plus(void);
/// (a + b) + c => a + (b + c)
void assocr_plus(void);
/// (a => b) => (a + c => b + c)
void mapl_plus_begin(void);
void mapl_plus_end(void);
/// (b => c) => (a + b => a + c)
void mapr_plus_begin(void);
void mapr_plus_end(void);
/// a => a + b
void inl(void);
/// b => a + b
void inr(void);
/// a + a => a
void out(void);
/// end the program
void halt(void);
symbol init_bytecode(void);
void finish_bytecode(void);
void jump(symbol sym);
void jump_if(symbol a, symbol b);
#endif