-### Reporting non-final left-recursive symbols.
-
-Left recursive symbols are a problem for parses that honour indentation
-when they appear other than at the end of the production. So we need to
-report these when asked.
-
-###### functions
-
- static int report_left_recursive(struct grammar *g)
- {
- int p;
- int bad_left_recursive = 0;
-
- for (p = 0; p < g->production_count; p++) {
- struct production *pr = g->productions[p];
- int sn;
-
- for (sn = 0; sn < pr->body_size - 1; sn++) {
- struct symbol *s = pr->body[sn];
-
- if (s->left_recursive == 1 &&
- s != pr->head) {
- if (!bad_left_recursive) {
- bad_left_recursive = 1;
- printf("Misplaced left recursive symbols.\n");
- }
- printf(" ");
- prtxt(s->name);
- printf(" in production [%d]\n", p);
- s->left_recursive = 2;
- }
- }
- }
- return bad_left_recursive;
- }
-