view anagram/agcore/stacks.h @ 21:1c9dac05d040

Add lint-style FALLTHROUGH annotations to fallthrough cases. (in the parse engine and thus the output code) Document this, because the old output causes warnings with gcc10.
author David A. Holland
date Mon, 13 Jun 2022 00:04:38 -0400
parents 13d2b8934445
children
line wrap: on
line source

/*
 * AnaGram, A System for Syntax Directed Programming
 * Copyright 1993-2002 Parsifal Software. All Rights Reserved.
 * See the file COPYING for license and usage terms.
 *
 * stacks.h - old stacks
 */

#ifndef STACKS_H
#define STACKS_H

#include <stdio.h>
#include "port.h"

class AgString; // from agstring.h
struct list_dict; // from dict.h
#include "agarray.h"

extern unsigned nc, nw;
extern unsigned int_stack_top;

extern char *string_base;
extern int *list_base;

void           init_stk(void);
void           reset_stk(void);

int            apprintf(const char *fs, ...) PRINTFFY(1,2);
int           *build_list(void);
char          *build_string(void);
AgString       buildAgString(void);
AgArray<int>   buildStaticList(void);
void           concat_list(void);
void           concat_string(void);
int           *list_space(int n);
int            ssprintf(const char *fs, ...) PRINTFFY(1,2);
char          *string_space(int n);

/*
 * These names are all acronyms. Sometime, someone ought to sort out
 * what they stand for and/or what they do and pick clearer names.
 */
void           acs(int c);
void           ass(const char *s);
void           aws(int c);
int            fis(void);
int            fps(FILE *f);
int            fws(void);
void           fdl(list_dict *d, unsigned k);
void           ics(void);
int            idl(list_dict *d);
int            isws(int);
void           iws(void);
int            rcs(void);
int            rps(void);
int            rws(void);
void           scs(int c);
void           sis(int i);
void           sps(int c1, int c2);
void           sss(const char *s);
void           sws(int c);
int            tis(void);
void           tss(void);
int            xws(int c);
int            xps(int c1, int c2);

//void         ast(void);
//void         dcs(int n);                    /* delete char from string */
//void         delete_stack(void);
//int          ids(string_dict *d);
//void         ist(void);
//void         its(char c, int n);
//void         slide_stack(void);
//void         slns(const char *s);           /* extract line from string */

#endif /* STACKS_H */