[Top][All Lists]
[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]
04-state-new.patch
From: |
Akim Demaille |
Subject: |
04-state-new.patch |
Date: |
Sun, 30 Jun 2002 19:26:43 +0200 |
Index: ChangeLog
from Akim Demaille <address@hidden>
* src/state.h, src/state.c (state_new): New, extracted from...
* src/LR0.c (new_state): here.
* src/state.h (STATE_ALLOC): Move to...
* src/state.c: here.
* src/LR0.h, src/LR0.c (nstates, final_state): Move to...
* src/state.h, src/state.c: here.
Index: src/LR0.c
--- src/LR0.c Sat, 29 Jun 2002 10:18:41 +0200 akim
+++ src/LR0.c Sat, 29 Jun 2002 10:49:47 +0200 akim
@@ -37,10 +37,6 @@
#include "lalr.h"
#include "reduce.h"
-state_number_t nstates = 0;
-/* FINAL_STATE is properly set by new_state when it recognizes its
- accessing symbol: EOF. */
-state_t *final_state = NULL;
static state_t *first_state = NULL;
static state_t *this_state = NULL;
@@ -182,37 +178,26 @@
static state_t *
new_state (symbol_number_t symbol, size_t core_size, item_number_t *core)
{
- state_t *p;
+ state_t *res;
if (trace_flag)
fprintf (stderr, "Entering new_state, state = %d, symbol = %d (%s)\n",
nstates, symbol, symbol_tag_get (symbols[symbol]));
- if (nstates >= STATE_NUMBER_MAX)
- fatal (_("too many states (max %d)"), STATE_NUMBER_MAX);
-
- p = STATE_ALLOC (core_size);
- p->accessing_symbol = symbol;
- p->number = nstates;
- p->solved_conflicts = NULL;
-
- p->nitems = core_size;
- memcpy (p->items, core, core_size * sizeof (core[0]));
+ res = state_new (symbol, core_size, core);
/* If this is the eoftoken, and this is not the initial state, then
this is the final state. */
if (symbol == 0 && first_state)
- final_state = p;
+ final_state = res;
if (!first_state)
- first_state = p;
+ first_state = res;
if (last_state)
- last_state->next = p;
- last_state = p;
-
- nstates++;
+ last_state->next = res;
+ last_state = res;
- return p;
+ return res;
}
Index: src/LR0.h
--- src/LR0.h Sat, 29 Jun 2002 10:18:41 +0200 akim
+++ src/LR0.h Sat, 29 Jun 2002 10:54:08 +0200 akim
@@ -25,7 +25,4 @@
void generate_states PARAMS ((void));
-extern state_number_t nstates;
-extern state_t *final_state;
-
#endif /* !LR0_H_ */
Index: src/state.c
--- src/state.c Sat, 15 Jun 2002 18:47:13 +0200 akim
+++ src/state.c Sat, 29 Jun 2002 10:56:58 +0200 akim
@@ -23,6 +23,12 @@
#include "gram.h"
#include "state.h"
+
+ /*-------------------.
+ | Shifts and Gotos. |
+ `-------------------*/
+
+
/*---------------------------------.
| Create a new array of N shitfs. |
`---------------------------------*/
@@ -40,6 +46,13 @@
}
+
+
+ /*--------------------.
+ | Error transitions. |
+ `--------------------*/
+
+
/*-------------------------------.
| Create a new array of N errs. |
`-------------------------------*/
@@ -66,6 +79,14 @@
return res;
}
+
+
+
+ /*-------------.
+ | Reductions. |
+ `-------------*/
+
+
/*-------------------------------------.
| Create a new array of N reductions. |
`-------------------------------------*/
@@ -79,6 +100,47 @@
{
reductions *res = REDUCTIONS_ALLOC (n);
res->nreds = n;
+ return res;
+}
+
+
+
+ /*---------.
+ | States. |
+ `---------*/
+
+
+state_number_t nstates = 0;
+/* FINAL_STATE is properly set by new_state when it recognizes its
+ accessing symbol: EOF. */
+state_t *final_state = NULL;
+
+/*------------------------------------------------------------.
+| Create a new state with ACCESSING_SYMBOL, for those items. |
+`------------------------------------------------------------*/
+
+state_t *
+state_new (symbol_number_t accessing_symbol,
+ size_t core_size, item_number_t *core)
+{
+ state_t *res;
+
+ if (nstates >= STATE_NUMBER_MAX)
+ fatal (_("too many states (max %d)"), STATE_NUMBER_MAX);
+
+#define STATE_ALLOC(Nitems) \
+ (state_t *) xcalloc ((unsigned) (sizeof (state_t) \
+ + (Nitems - 1) * sizeof (item_number_t)), 1)
+
+ res = STATE_ALLOC (core_size);
+ res->accessing_symbol = accessing_symbol;
+ res->number = nstates;
+ ++nstates;
+ res->solved_conflicts = NULL;
+
+ res->nitems = core_size;
+ memcpy (res->items, core, core_size * sizeof (core[0]));
+
return res;
}
Index: src/state.h
--- src/state.h Sat, 29 Jun 2002 10:18:41 +0200 akim
+++ src/state.h Sat, 29 Jun 2002 10:53:09 +0200 akim
@@ -206,9 +206,13 @@
item_number_t items[1];
} state_t;
-#define STATE_ALLOC(Nitems) \
- (state_t *) xcalloc ((unsigned) (sizeof (state_t) \
- + (Nitems - 1) * sizeof (item_number_t)), 1)
+extern state_number_t nstates;
+extern state_t *final_state;
+
+/* Create a new state with ACCESSING_SYMBOL for those items. */
+
+state_t *state_new PARAMS ((symbol_number_t accessing_symbol,
+ size_t core_size, item_number_t *core));
/* Print on OUT all the lookaheads such that this STATE wants to
reduce this RULE. */
[Prev in Thread] |
Current Thread |
[Next in Thread] |
- 04-state-new.patch,
Akim Demaille <=