fz/botforth.h

60 lines
1.7 KiB
C
Raw Permalink Normal View History

2021-11-03 04:29:33 +01:00
#ifndef BOTFORTH_H
#define BOTFORTH_H
#include <stdint.h>
#include "def.h"
#include "vector.h"
#include "node.h"
// einige globale Variablen
struct node *pc; // Program Counter - Zeiger auf den n<>chsten Befehl
struct vector *cword; // pointer to the actual running word
int accesslevel;
int interpretcounter;
int runlimit;
// stacks
struct vector *rstack; // Return Stack, h<>lt R<>cksprungadressen
struct vector *dstack; // Data Stack
struct vector *cstack; // Compiler Stack
struct vector *estack; // Environment Stack for the Compiler
struct vector *lexicon; // In which directories will words be searched
struct vector *var; // Variable stack, for storing variables
struct vector *lstack; // loop-stack
// help stacks
struct vector *zstack;
// speicher fuer fertig kompilierte Worte
struct vector *words;
// irc-kram
int ircsocket;
// botforth functions
struct vector *botforth_compile(struct vector *word);
struct vector *botforth_parse(char *progstring);
int get_stringtype(char *s);
void botforth_interpreter(struct vector *program, int withinfoblock);
void botforth_call(struct vector *program);
void botforth_return();
// getintcommand
void *getintcommand(char *command);
char *getintcommandname(void *p);
// file
struct vector *load_file(char *name);
struct vector *load_rand_file();
struct vector *load_rand_single_cmd();
struct vector *load_rand_cmd();
int iterate(int (*action) (int n, struct vector * content));
extern struct vector *word_load(char *name, char *ns);
extern void infoblock_set_accesslevel(struct vector *word, int al);
extern void infoblock_set_name(struct vector *word, char *name);
extern char *infoblock_get_name(struct vector *word);
#endif