본문 바로가기

카테고리 없음

#### `myboolh_core.h`
```c
#pragma once
#ifdef _DO_BARE_MATAL_
typedef unsigned char bool;
#define true 1
#define false 0
#else
#include <stdbool.h>
#endif
```

#### `mybool.h`
```c
#pragma once
#ifndef _mybool_h
#define _mybool_h
#include "myboolh_core.h"
#endif
```

#### `pyojualtree.h`
```c
#pragma once

#ifdef __cplusplus
extern "C" {
#endif

#ifndef _PYOJUALTREE_
#include "mybool.h"
#define BLOCK(T) typedef struct { void* cmd; T* agreement_block; T* disagreement_block; } T
#define _PYOJUALTREE_(cmd, compile_mode) inline bool alu(void* cmd, bool compile_mode)
#define _PYOJUALTREE_END_ pyojualtree_end()
#define _COMPILE_B_(L) ((L*3 + 1))
#define _COMPILE_I_(L) L - 1
#define EMPTY

BLOCK(code_block);
BLOCK(block_code);
typedef code_block* noncompiled_file;
typedef block_code* pyojualtree;

_PYOJUALTREE_(EMPTY, EMPTY);
inline pyojualtree cpu(pyojualtree cmd_reg) {
	cmd_reg = alu(cmd_reg->cmd, false)?cmd_reg->agreement_block:cmd_reg->disagreement_block;
	return cmd_reg;
}

inline void compile_pyojualtree_block(noncompiled_file* file_code, noncompiled_file* block) {
	block->cmd = alu(block->cmd, true);
	block->agreement_block = file_code[block->agreement_block];
	block->disagreement_block = file_code[block->disagreement_block];
}

inline void compile_pyojualtree(noncompiled_file* file_code, noncompiled_file* block) {
	for (compile_pyojualtree_block(block);block != file_code;compile_pyojualtree_block(--block));
}

_Noreturn inline void pyojualtree_end(void) {
	exit(0);
}

inline void pyojualtree_run(pyojualtree pyojualtree_point) {
	while (true) {
		pyojualtree_point = cpu(pyojualtree_point);
	}
}

#endif

#ifndef __cplusplus
}
#endif
```

#### `compile.h`
```cpp
#pragma once
#ifndef _COMPILE_H
#define _COMPILE_H
#include "pyojualtree.h"
#include "compinfo.h"
#define B _COMPILE_B_(L)
#define I _COMPILE_I_(L)

typedef const code_block code;

typedef struct {
	char s[B];
	code v[L];
} constexprement;

constexpr static inline void compile(constexprement constexpr_var) {
	compile_pyojualtree(&constexpr_var.v, &constexpr_var.v[I]);
}

constexpr constexprement constexpr_var = {.s=SRC};
compile(constexpr_var);

extern "C" const code source_code = constexpr_var.v;
#endif
```

#### `pyojualtree_code_header.h`
```c
#pragma once

#ifdef __cplusplus
extern "C" {
#endif

#ifndef _PYOJUALTREE_CODE_HEADER_H
#define _PYOJUALTREE_CODE_HEADER_H
#include "compile.h"
extern const code source_code;
#endif

#ifdef __cplusplus
}
#endif