Better ANSI C compatibility and portability - part 1:
authorcarl <cecodere@yahoo.ca>
Mon, 18 Feb 2019 16:37:52 +0000 (00:37 +0800)
committercarl <cecodere@yahoo.ca>
Mon, 18 Feb 2019 16:54:23 +0000 (00:54 +0800)
+ Addition of function prototypes.
+ Change function definitions to ANSI C style.

util/LLgen/lib/incl
util/LLgen/lib/nc_rec
util/LLgen/lib/rec

index fc6250e..05b443c 100644 (file)
@@ -2,6 +2,7 @@
 #ifdef LL_DEBUG
 #include <assert.h>
 #include <stdio.h>
+#include <stdlib.h>
 #define LL_assert(x)   assert(x)
 #else
 #define LL_assert(x)   /* nothing */
@@ -30,7 +31,6 @@ extern int LLstartsymb;
 #define LLsincr(d)     LLscnt[d]++
 #define LLtincr(d)     LLtcnt[d]++
 
-#if LL_ANSI_C
 extern int LL_LEXI(void);
 extern void LLread(void);
 extern int LLskip(void);
@@ -48,21 +48,3 @@ extern int LLfirst(int, int);
 #if LL_NON_CORR
 extern void LLnc_recover(void);
 #endif
-#else /* not LL_ANSI_C */
-extern LLread();
-extern int LLskip();
-extern int LLnext();
-extern LLerror();
-extern LLsafeerror();
-extern LLnewlevel();
-extern LLoldlevel();
-#ifndef LL_FASTER
-extern LLscan();
-#endif
-#ifndef LLNOFIRSTS
-extern int LLfirst();
-#endif
-#if LL_NON_CORR
-extern LLnc_recover();
-#endif
-#endif /* not LL_ANSI_C */
index 98c0d32..491252c 100644 (file)
@@ -1,5 +1,6 @@
 #include <stdio.h>
 #include <stdlib.h>
+#include <string.h>
 
 /*
        compile with -DNOFIRST to disable firstset optimization
@@ -12,9 +13,7 @@
 extern int     LLsymb;
 extern int     LLstartsymb;
 
-#if LL_ANSI_C
 void           LLmessage(int);
-#endif
 
 
 struct stacks {
@@ -119,37 +118,21 @@ static struct nonterminal *nonterminals;
 /* These functions must be called instead of the original functions in
  * 'malloc.h'. They offer a checking allocation mechanism.
 */
-#if LL_ANSI_C
 static char *Malloc(unsigned);
 static char *Realloc(char*, unsigned);
 
-#else
-
-static char *Malloc();
-static char *Realloc();
-#endif
 
 
 /* These functions build the grammar */
-#if LL_ANSI_C
 static void init_grammar(void);
 static void build_grammar(void);
 static struct lhs *build_rule(void);
 static struct symbol *build_rhs(struct lhs*);
 static struct symbol *make_link(struct symbol*);
 
-#else
-
-static init_grammar();
-static build_grammar();
-static struct lhs *build_rule();
-static struct symbol *build_rhs();
-static struct symbol *make_link();
-#endif
 
 
 /* These functions operate on the stacks */
-#if LL_ANSI_C
 static int optimize(struct stacks*, struct symbol*, int);
 static void read_token(void);
 static void start_stack(struct stacks*, int, int);
@@ -179,43 +162,9 @@ static void calculate(struct stacks*, int);
 static void kill_stack(struct stacks *stack);
 void LLnc_recover(void);
 
-#else
-
-static int optimize();
-static read_token();
-static start_stack();
-static continuation();
-static struct stack_elt *push_rule();
-static new_head();
-static to_delete();
-static substitute();
-static int join();
-static int path();
-static int part_of_loop();
-static generate_heads();
-static delete();
-static hyp_run();
-static check_run();
-static struct stack_elt *split();
-static test();
-static dump_stack();
-static clear_flags();
-static clear_gen_flags();
-static match_heads();
-static cleanup();
-static initialize();
-static calculate();
-static kill_stack();
-LLnc_recover();
-#endif
 
 
-#if LL_ANSI_C
 static char *Malloc(unsigned size)
-#else
-static char *Malloc(size)
-unsigned size;
-#endif
 {
        char *p;
 
@@ -227,13 +176,7 @@ unsigned size;
 }
 
 
-#if LL_ANSI_C
 static char *Realloc(char *ptr, unsigned size)
-#else
-static char *Realloc(ptr, size)
-char *ptr;
-unsigned size;
-#endif
 {
        char *p;
 
@@ -245,11 +188,7 @@ unsigned size;
 }
 
 
-#if LL_ANSI_C
 static void init_grammar(void)
-#else
-static init_grammar()
-#endif
 {
 /* Allocate and initialize an array for terminals and nonterminals */
 
@@ -270,11 +209,7 @@ static init_grammar()
 }
 
 
-#if LL_ANSI_C
 static void build_grammar(void)
-#else
-static build_grammar()
-#endif
 {
 /* Build a rule for every nonterminal. The LHS must be saved first because
  * of the fact that the right side of an assignment statement (in C) will
@@ -290,11 +225,7 @@ static build_grammar()
 }
 
 
-#if LL_ANSI_C
 static struct lhs *build_rule(void)
-#else
-static struct lhs *build_rule()
-#endif
 {
 /* Build LHS and call a funcion to create RHS */
 
@@ -322,12 +253,7 @@ static struct lhs *build_rule()
 }
 
 
-#if LL_ANSI_C
 static struct symbol *build_rhs(struct lhs *l)
-#else
-static struct symbol *build_rhs(l)
-struct lhs *l;
-#endif
 {
 /* Build RHS by creating structs for all symbols including ALT and
  * EORULE. Also call a function for linking same terminals and
@@ -371,12 +297,7 @@ struct lhs *l;
 }
 
 
-#if LL_ANSI_C
 static struct symbol *make_link(struct symbol *r)
-#else
-static struct symbol *make_link(r)
-struct symbol *r;
-#endif
 {
 /* Link same terminals and nonterminals. Every new symbol is appended
  * in front of the corresponding list for efficiency.
@@ -400,15 +321,7 @@ struct symbol *r;
 /*****************************************************************************/
 
 
-#if LL_ANSI_C
 static int optimize(struct stacks* stack, struct symbol *symb_ptr, int l_ahead)
-#else
-static int optimize(stack, symb_ptr, l_ahead)
-struct stacks *stack;
-struct symbol *symb_ptr;
-int l_ahead;
-#endif
-
 /* Return 1 if rule symb_ptr can start with terminal l_ahead, else return 0.
  * The array with expected terminals will also be filled in.
  */
@@ -463,12 +376,7 @@ int l_ahead;
 }
 
 
-#if LL_ANSI_C
 static void read_token(void)
-#else
-static read_token()
-#endif
-
 /* Read token and put it in global variable LLsymb, skipping
  * invalid tokens
  */
@@ -482,16 +390,8 @@ static read_token()
 }
 
 
-#if LL_ANSI_C
 static void start_stack(struct stacks *stack, int base, int l_ahead)
-#else
-static start_stack(stack, base, l_ahead)
-struct stacks *stack;
-int base, l_ahead;
-#endif
-
 /* Start stack on base symbol base with lookahead l_ahead */
-
 {
        struct stack_elt *bottom, *top;
        struct symbol *symb_ptr;
@@ -587,14 +487,7 @@ int base, l_ahead;
 }
 
 
-#if LL_ANSI_C
 static void continuation(struct stacks *stack, int nt, int l_ahead)
-#else
-static continuation(stack, nt, l_ahead)
-struct stacks *stack;
-int nt, l_ahead;
-#endif
-
 /* We have 'eaten' a whole stack, and think we recognized nt. Now
 look for rules that we can proceed with, ie containing nt in the RHS.
 Each rule found will be developed untill a terminal is at the top
@@ -680,15 +573,8 @@ of the stack.*/
 }
 
 
-#if LL_ANSI_C
 static struct stack_elt *push_rule(struct stack_elt *element,
                                        struct symbol *symb_ptr)
-#else
-static struct stack_elt *push_rule(element, symb_ptr)
-struct stack_elt *element;
-struct symbol *symb_ptr;
-#endif
-
 /* Append the rule symb_ptr to stack element 'element'. Return a
  * pointer to the new top of the stack
  */
@@ -735,14 +621,7 @@ struct symbol *symb_ptr;
 }
 
 
-#if LL_ANSI_C
 static void new_head(struct stacks *stack, struct stack_elt *ptr)
-#else
-static new_head(stack, ptr)
-struct stacks *stack;
-struct stack_elt *ptr;
-#endif
-
 /* Make ptr a head of stack */
 {
 
@@ -773,14 +652,7 @@ struct stack_elt *ptr;
 }
 
 
-#if LL_ANSI_C
 static void to_delete(struct stacks *stack, struct stack_elt *ptr)
-#else
-static to_delete(stack, ptr)
-struct stacks *stack;
-struct stack_elt *ptr;
-#endif
-
 /* Remember that ptr has to be deleted */
 {
 
@@ -814,15 +686,7 @@ struct stack_elt *ptr;
 }
 
 
-#if LL_ANSI_C
 static void substitute(struct stacks *stack, struct stack_elt *top, int l_ahead)
-#else
-static substitute(stack, top, l_ahead)
-struct stacks *stack;
-struct stack_elt *top;
-int l_ahead;
-#endif
-
 /* This function substitutes the NT pointed to by 'top'. 'top' should be a top
  * of a stack
  */
@@ -900,15 +764,7 @@ int l_ahead;
 }
 
 
-#if LL_ANSI_C
 static int join(struct stacks *stack, struct stack_elt *top, int l_ahead)
-#else
-static int join(stack, top, l_ahead)
-struct stacks *stack;
-struct stack_elt *top;
-int l_ahead;
-#endif
-
 /* This function tries to connect a NT on top of a stack with another stack,
  * which has already substituted this NT
  */
@@ -977,13 +833,7 @@ int l_ahead;
 
 #ifndef NOLOOPS
 
-#if LL_ANSI_C
 static int path(struct stack_elt *se1, struct stack_elt *se2)
-#else
-static int path(se1, se2)
-struct stack_elt *se1, *se2;
-#endif /* LL_ANSI_C */
-
 /* If there is a path from se1 to se2 it returns 1 and marks all the paths
  * betweeen these two points, otherwise it returns 0. The flags LLYES and
  * LLNO are used for optimization. */
@@ -1014,13 +864,7 @@ struct stack_elt *se1, *se2;
 }
 
 
-#if LL_ANSI_C
 static int part_of_loop(struct stack_elt *se)
-#else
-static int part_of_loop(se)
-struct stack_elt *se;
-#endif /* LL_ANSI_C */
-
 /* Checks if 'se' belongs to a loop */
 {
        int i;
@@ -1034,16 +878,8 @@ struct stack_elt *se;
 #endif /* NOLOOPS */
 
 
-#if LL_ANSI_C
 static void generate_heads(struct stacks *stack, struct stack_elt *se,
                                int l_ahead)
-#else
-static generate_heads(stack, se, l_ahead)
-struct stacks *stack;
-struct stack_elt *se;
-int l_ahead;
-#endif
-
 /* This funcion finds all heads starting at 'se'. */
 {
        int i;
@@ -1104,14 +940,7 @@ int l_ahead;
 }
 
 
-#if LL_ANSI_C
 static void delete(struct stacks *stack, struct stack_elt *se)
-#else
-static delete(stack, se)
-struct stacks *stack;
-struct stack_elt *se;
-#endif
-
 /* This function runs down the stack(s) deleting every element which cannot be
  * reached anymore. */
 {
@@ -1172,13 +1001,7 @@ struct stack_elt *se;
 
 #ifndef NOLOOPS
 
-#if LL_ANSI_C
 static void hyp_run(struct stack_elt *se)
-#else
-static hyp_run(se)
-struct stack_elt *se;
-#endif /* LL_ANSI_C */
-
 /* This function sets the 'hyp_ref_counts' of all elements of the loop that
  * 'se' belongs to to the value that 'ref_count' will get when 'se' is
  * deleted
@@ -1212,14 +1035,7 @@ struct stack_elt *se;
 }
 
 
-#if LL_ANSI_C
 static void check_run(struct stacks *stack, struct stack_elt *se)
-#else
-static check_run(stack, se)
-struct stacks *stack;
-struct stack_elt *se;
-#endif /* LL_ANSI_C */
-
 /* This function checks all 'hyp_ref_counts' that 'hyp_run()' has set.
  * If one of them is not 0, 'check_run_ok' will be set to 0 indicating
  * that 'se' cannot be deleted. 'check_run()' also resets all 'hyp_ref_counts'
@@ -1244,13 +1060,7 @@ struct stack_elt *se;
 #endif /* NOLOOPS */
 
 
-#if LL_ANSI_C
 static struct stack_elt *split(struct stack_elt *se)
-#else
-static struct stack_elt *split(se)
-struct stack_elt *se;
-#endif
-
 /* This function splits of a NT in de stack, and returns a pointer to it */
 {
        struct stack_elt *new_stack;
@@ -1296,12 +1106,7 @@ struct stack_elt *se;
 
 
 #ifdef DEBUG
-#if LL_ANSI_C
 static void test(struct stacks *stack)
-#else
-static test(stack)
-struct stacks *stack;
-#endif
 {
        struct stack_elt *se;
        int i;
@@ -1320,13 +1125,7 @@ struct stacks *stack;
 }
 
 
-#if LL_ANSI_C
 static void dump_stack(struct stack_elt *se, int level)
-#else
-static dump_stack(se, level)
-struct stack_elt *se;
-int level;
-#endif
 {
        int i, j;
 
@@ -1385,14 +1184,7 @@ int level;
 #endif
 
 
-#if LL_ANSI_C
 static void clear_flags(struct stack_elt *se, char flag)
-#else
-static clear_flags(se, flag)
-struct stack_elt *se;
-char flag;
-#endif
-
 /* Clears edge flag 'flag' */
 {
        int i;
@@ -1405,13 +1197,7 @@ char flag;
        }
 }
 
-#if LL_ANSI_C
 static void clear_gen_flags(struct stacks *stack)
-#else
-static clear_gen_flags(stack)
-struct stacks *stack;
-#endif
-
 {
        int i;
 
@@ -1423,14 +1209,7 @@ struct stacks *stack;
 }
 
 
-#if LL_ANSI_C
 static void match_heads(struct stacks *stack, int symb)
-#else
-static match_heads(stack, symb)
-struct stacks *stack;
-int symb;
-#endif
-
 /* Match heads_buf against symb, leaving only matching heads,
  * whilst deallocating the non-matching stacks
  */
@@ -1482,13 +1261,7 @@ int symb;
 }
 
 
-#if LL_ANSI_C
 static void cleanup(struct stacks *stack)
-#else
-static cleanup(stack)
-struct stacks *stack;
-#endif
-
 /* Deletes all elements in 'cleanup_buf()' */
 {
        int i;
@@ -1502,13 +1275,7 @@ struct stacks *stack;
 }
 
 
-#if LL_ANSI_C
 static void initialize(struct stacks *stack)
-#else
-static initialize(stack)
-struct stacks *stack;
-#endif
-
 /* Initializes some variables and arrays */
 {
        int j;
@@ -1541,14 +1308,7 @@ struct stacks *stack;
 }
 
 
-#if LL_ANSI_C
 static void calculate(struct stacks *stack, int l_ahead)
-#else
-static calculate(stack, l_ahead)
-struct stacks *stack;
-int l_ahead;
-#endif
-
 /* This function finds all new heads and deletes the old heads */
 {
        int i;
@@ -1592,12 +1352,7 @@ int l_ahead;
        }
 }
 
-#if LL_ANSI_C
 static void kill_stack(struct stacks *stack)
-#else
-static kill_stack(stack)
-struct stacks *stack;
-#endif
 {
        int i;
 
@@ -1609,12 +1364,7 @@ struct stacks *stack;
 
 
 
-#if LL_ANSI_C
 void LLnc_recover(void)
-#else
-LLnc_recover()
-#endif
-
 /* This function contains the main loop for non correcting syntax error
  * recovery
  */
index ae7d69e..2928d2c 100644 (file)
@@ -17,29 +17,15 @@ int         LLstartsymb;
 static int     fake_eof = 0;
 #endif
 
-#if LL_ANSI_C
 #define LL_VOIDCST (void)
 void   LLmessage(int);
-#else
-#define LL_VOIDCST
-#endif
 #ifdef LL_USERHOOK
-#if LL_ANSI_C
 static int     LLdoskip(int);
 static int     LLuserhook(int, int*);
-#else
-static int     LLdoskip();
-static int     LLuserhook();
-#endif
 #endif
 
 #ifndef LL_FASTER
-#if LL_ANSI_C
 void LLscan(int t)
-#else
-LLscan(t)
-       int     t;
-#endif
 {
        /*
         * Check if the next symbol is equal to the parameter
@@ -85,12 +71,7 @@ LLscan(t)
 }
 #endif
 
-#if LL_ANSI_C
 void LLread(void) {
-#else
-LLread() {
-#endif
-
 #if LL_NON_CORR
        /* Again, check if another parser has crashed,
         * in that case intercept and go to the
@@ -122,12 +103,7 @@ LLread() {
        /* NOTREACHED */
 }
 
-#if LL_ANSI_C
 void LLerror(int t)
-#else
-LLerror(t)
-       int     t;
-#endif
 {
        register int i;
 
@@ -189,12 +165,7 @@ LLerror(t)
        }
 }
 
-#if LL_ANSI_C
 void LLsafeerror(int t)
-#else
-LLsafeerror(t)
-       int     t;
-#endif
 {
        if (t == EOFILE && LLsymb <= 0) return;
 #ifdef LL_NEWMESS
@@ -237,11 +208,7 @@ LLsafeerror(t)
 }
 
 #ifndef LLNOFIRSTS
-#if LL_ANSI_C
 int LLfirst(int x, int d) {
-#else
-int LLfirst(x, d) {
-#endif
        register int i;
 
        return (i = LLindex[x]) >= 0 &&
@@ -249,12 +216,7 @@ int LLfirst(x, d) {
 }
 #endif
 
-#if LL_ANSI_C
 int LLnext(int n)
-#else
-int LLnext(n)
-       int     n;
-#endif
 {
        /*      returns: 0 if the current symbol is'nt skipped, and it
                         is'nt a member of "n",
@@ -275,11 +237,7 @@ int LLnext(n)
        return retval;
 }
 
-#if LL_ANSI_C
 int LLskip(void) {
-#else
-int LLskip() {
-#endif
        /*      returns 0 if the current symbol is'nt skipped, and
                1 if it is, t.i., we have a new symbol
        */
@@ -287,14 +245,8 @@ int LLskip() {
        return LLdoskip(0);
 }
 
-#if LL_ANSI_C
 extern void LL_USERHOOK(int, int *);
 static int LLuserhook(int e, int *list)
-#else
-static int LLuserhook(e, list)
-       int e;
-       int *list;
-#endif
 {
        int old = LLsymb;
        LL_USERHOOK(e, list);
@@ -302,12 +254,7 @@ static int LLuserhook(e, list)
        return LLsymb != old;
 }
 
-#if LL_ANSI_C
 static void LLmklist(register int *list)
-#else
-static LLmklist(list)
-       register int *list;
-#endif
 {
        char Xset[LL_SSIZE];
        register char *p;
@@ -331,12 +278,7 @@ static LLmklist(list)
        *list = 0;
 }
 
-#if LL_ANSI_C
 static int LLdoskip(int e)
-#else
-static int LLdoskip(e)
-       int     e;
-#endif
 {
        int LLx;
        int list[LL_NTERMINALS+1];
@@ -395,11 +337,7 @@ static int LLdoskip(e)
        /* NOTREACHED */
 }
 
-#if LL_ANSI_C
 void LLnewlevel(unsigned int *LLsinfo) {
-#else
-LLnewlevel(LLsinfo) unsigned int *LLsinfo; {
-#endif
        register int i;
 
        if (LLlevel++) {
@@ -417,11 +355,7 @@ LLnewlevel(LLsinfo) unsigned int *LLsinfo; {
        LLtincr(0);
 }
 
-#if LL_ANSI_C
 void LLoldlevel(unsigned int *LLsinfo) {
-#else
-LLoldlevel(LLsinfo) unsigned int *LLsinfo; {
-#endif
        register int i;
 
        LLtdecr(0);