18e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project/* flexdef - definitions file for flex */
28e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project
38e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project/*-
48e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project * Copyright (c) 1990 The Regents of the University of California.
58e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project * All rights reserved.
68e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project *
78e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project * This code is derived from software contributed to Berkeley by
88e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project * Vern Paxson.
98e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project *
108e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project * The United States Government has rights in this work pursuant
118e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project * to contract no. DE-AC03-76SF00098 between the United States
128e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project * Department of Energy and the University of California.
138e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project *
148e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project * Redistribution and use in source and binary forms with or without
158e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project * modification are permitted provided that: (1) source distributions retain
168e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project * this entire copyright notice and comment, and (2) distributions including
178e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project * binaries display the following acknowledgement:  ``This product includes
188e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project * software developed by the University of California, Berkeley and its
198e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project * contributors'' in the documentation or other materials provided with the
208e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project * distribution and in all advertising materials mentioning features or use
218e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project * of this software.  Neither the name of the University nor the names of
228e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project * its contributors may be used to endorse or promote products derived from
238e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project * this software without specific prior written permission.
248e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project * THIS SOFTWARE IS PROVIDED ``AS IS'' AND WITHOUT ANY EXPRESS OR IMPLIED
258e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project * WARRANTIES, INCLUDING, WITHOUT LIMITATION, THE IMPLIED WARRANTIES OF
268e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project * MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE.
278e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project */
288e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project
298e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project/* @(#) $Header: /home/daffy/u0/vern/flex/RCS/flexdef.h,v 2.53 95/04/20 11:17:36 vern Exp $ (LBL) */
308e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project
318e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project#include <stdio.h>
328e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project#include <ctype.h>
338e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project
348e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project#include "config.h"
358e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project
368e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project#ifdef __TURBOC__
378e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project#define HAVE_STRING_H 1
388e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project#define MS_DOS 1
398e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project#ifndef __STDC__
408e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project#define __STDC__ 1
418e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project#endif
428e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project #pragma warn -pro
438e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project #pragma warn -rch
448e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project #pragma warn -use
458e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project #pragma warn -aus
468e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project #pragma warn -par
478e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project #pragma warn -pia
488e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project#endif
498e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project
508e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project#ifdef HAVE_STRING_H
518e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project#include <string.h>
528e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project#else
538e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project#include <strings.h>
548e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project#endif
558e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project
568e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project#ifdef HAVE_SYS_TYPES_H
578e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project#include <sys/types.h>
588e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project#endif
598e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project
608e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project#ifdef HAVE_MALLOC_H
618e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project#include <malloc.h>
628e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project#endif
638e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project
648e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project#ifdef STDC_HEADERS
658e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project#include <stdlib.h>
668e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project#endif
678e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project
688e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project/* As an aid for the internationalization patch to flex, which
698e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project * is maintained outside this distribution for copyright reasons.
708e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project */
718e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project#define _(String) (String)
728e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project
738e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project/* Always be prepared to generate an 8-bit scanner. */
748e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project#define CSIZE 256
758e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project#define Char unsigned char
768e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project
778e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project/* Size of input alphabet - should be size of ASCII set. */
788e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project#ifndef DEFAULT_CSIZE
798e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project#define DEFAULT_CSIZE 128
808e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project#endif
818e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project
828e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project#ifndef PROTO
838e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project#if __STDC__
848e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project#define PROTO(proto) proto
858e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project#else
868e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project#define PROTO(proto) ()
878e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project#endif
888e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project#endif
898e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project
908e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project#ifdef VMS
918e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project#ifndef __VMS_POSIX
928e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project#define unlink remove
938e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project#define SHORT_FILE_NAMES
948e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project#endif
958e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project#endif
968e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project
978e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project#ifdef MS_DOS
988e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project#define SHORT_FILE_NAMES
998e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project#endif
1008e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project
1018e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project
1028e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project/* Maximum line length we'll have to deal with. */
1038e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project#define MAXLINE 2048
1048e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project
1058e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project#ifndef MIN
1068e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project#define MIN(x,y) ((x) < (y) ? (x) : (y))
1078e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project#endif
1088e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project#ifndef MAX
1098e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project#define MAX(x,y) ((x) > (y) ? (x) : (y))
1108e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project#endif
1118e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project#ifndef ABS
1128e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project#define ABS(x) ((x) < 0 ? -(x) : (x))
1138e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project#endif
1148e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project
1158e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project
1168e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project/* ANSI C does not guarantee that isascii() is defined */
1178e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project#ifndef isascii
1188e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project#define isascii(c) ((c) <= 0177)
1198e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project#endif
1208e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project
1218e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project
1228e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project#define true 1
1238e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project#define false 0
1248e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project#define unspecified -1
1258e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project
1268e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project
1278e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project/* Special chk[] values marking the slots taking by end-of-buffer and action
1288e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project * numbers.
1298e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project */
1308e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project#define EOB_POSITION -1
1318e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project#define ACTION_POSITION -2
1328e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project
1338e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project/* Number of data items per line for -f output. */
1348e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project#define NUMDATAITEMS 10
1358e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project
1368e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project/* Number of lines of data in -f output before inserting a blank line for
1378e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project * readability.
1388e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project */
1398e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project#define NUMDATALINES 10
1408e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project
1418e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project/* transition_struct_out() definitions. */
1428e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project#define TRANS_STRUCT_PRINT_LENGTH 14
1438e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project
1448e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project/* Returns true if an nfa state has an epsilon out-transition slot
1458e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project * that can be used.  This definition is currently not used.
1468e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project */
1478e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project#define FREE_EPSILON(state) \
1488e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project	(transchar[state] == SYM_EPSILON && \
1498e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project	 trans2[state] == NO_TRANSITION && \
1508e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project	 finalst[state] != state)
1518e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project
1528e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project/* Returns true if an nfa state has an epsilon out-transition character
1538e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project * and both slots are free
1548e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project */
1558e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project#define SUPER_FREE_EPSILON(state) \
1568e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project	(transchar[state] == SYM_EPSILON && \
1578e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project	 trans1[state] == NO_TRANSITION) \
1588e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project
1598e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project/* Maximum number of NFA states that can comprise a DFA state.  It's real
1608e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project * big because if there's a lot of rules, the initial state will have a
1618e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project * huge epsilon closure.
1628e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project */
1638e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project#define INITIAL_MAX_DFA_SIZE 750
1648e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project#define MAX_DFA_SIZE_INCREMENT 750
1658e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project
1668e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project
1678e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project/* A note on the following masks.  They are used to mark accepting numbers
1688e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project * as being special.  As such, they implicitly limit the number of accepting
1698e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project * numbers (i.e., rules) because if there are too many rules the rule numbers
1708e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project * will overload the mask bits.  Fortunately, this limit is \large/ (0x2000 ==
1718e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project * 8192) so unlikely to actually cause any problems.  A check is made in
1728e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project * new_rule() to ensure that this limit is not reached.
1738e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project */
1748e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project
1758e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project/* Mask to mark a trailing context accepting number. */
1768e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project#define YY_TRAILING_MASK 0x2000
1778e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project
1788e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project/* Mask to mark the accepting number of the "head" of a trailing context
1798e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project * rule.
1808e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project */
1818e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project#define YY_TRAILING_HEAD_MASK 0x4000
1828e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project
1838e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project/* Maximum number of rules, as outlined in the above note. */
1848e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project#define MAX_RULE (YY_TRAILING_MASK - 1)
1858e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project
1868e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project
1878e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project/* NIL must be 0.  If not, its special meaning when making equivalence classes
1888e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project * (it marks the representative of a given e.c.) will be unidentifiable.
1898e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project */
1908e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project#define NIL 0
1918e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project
1928e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project#define JAM -1	/* to mark a missing DFA transition */
1938e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project#define NO_TRANSITION NIL
1948e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project#define UNIQUE -1	/* marks a symbol as an e.c. representative */
1958e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project#define INFINITY -1	/* for x{5,} constructions */
1968e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project
1978e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project#define INITIAL_MAX_CCLS 100	/* max number of unique character classes */
1988e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project#define MAX_CCLS_INCREMENT 100
1998e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project
2008e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project/* Size of table holding members of character classes. */
2018e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project#define INITIAL_MAX_CCL_TBL_SIZE 500
2028e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project#define MAX_CCL_TBL_SIZE_INCREMENT 250
2038e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project
2048e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project#define INITIAL_MAX_RULES 100	/* default maximum number of rules */
2058e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project#define MAX_RULES_INCREMENT 100
2068e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project
2078e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project#define INITIAL_MNS 2000	/* default maximum number of nfa states */
2088e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project#define MNS_INCREMENT 1000	/* amount to bump above by if it's not enough */
2098e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project
2108e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project#define INITIAL_MAX_DFAS 1000	/* default maximum number of dfa states */
2118e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project#define MAX_DFAS_INCREMENT 1000
2128e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project
2138e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project#define JAMSTATE -32766	/* marks a reference to the state that always jams */
2148e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project
2158e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project/* Maximum number of NFA states. */
2168e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project#define MAXIMUM_MNS 31999
2178e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project
2188e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project/* Enough so that if it's subtracted from an NFA state number, the result
2198e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project * is guaranteed to be negative.
2208e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project */
2218e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project#define MARKER_DIFFERENCE (MAXIMUM_MNS+2)
2228e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project
2238e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project/* Maximum number of nxt/chk pairs for non-templates. */
2248e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project#define INITIAL_MAX_XPAIRS 2000
2258e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project#define MAX_XPAIRS_INCREMENT 2000
2268e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project
2278e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project/* Maximum number of nxt/chk pairs needed for templates. */
2288e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project#define INITIAL_MAX_TEMPLATE_XPAIRS 2500
2298e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project#define MAX_TEMPLATE_XPAIRS_INCREMENT 2500
2308e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project
2318e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project#define SYM_EPSILON (CSIZE + 1)	/* to mark transitions on the symbol epsilon */
2328e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project
2338e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project#define INITIAL_MAX_SCS 40	/* maximum number of start conditions */
2348e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project#define MAX_SCS_INCREMENT 40	/* amount to bump by if it's not enough */
2358e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project
2368e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project#define ONE_STACK_SIZE 500	/* stack of states with only one out-transition */
2378e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project#define SAME_TRANS -1	/* transition is the same as "default" entry for state */
2388e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project
2398e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project/* The following percentages are used to tune table compression:
2408e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project
2418e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project * The percentage the number of out-transitions a state must be of the
2428e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project * number of equivalence classes in order to be considered for table
2438e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project * compaction by using protos.
2448e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project */
2458e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project#define PROTO_SIZE_PERCENTAGE 15
2468e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project
2478e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project/* The percentage the number of homogeneous out-transitions of a state
2488e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project * must be of the number of total out-transitions of the state in order
2498e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project * that the state's transition table is first compared with a potential
2508e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project * template of the most common out-transition instead of with the first
2518e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project * proto in the proto queue.
2528e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project */
2538e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project#define CHECK_COM_PERCENTAGE 50
2548e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project
2558e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project/* The percentage the number of differences between a state's transition
2568e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project * table and the proto it was first compared with must be of the total
2578e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project * number of out-transitions of the state in order to keep the first
2588e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project * proto as a good match and not search any further.
2598e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project */
2608e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project#define FIRST_MATCH_DIFF_PERCENTAGE 10
2618e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project
2628e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project/* The percentage the number of differences between a state's transition
2638e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project * table and the most similar proto must be of the state's total number
2648e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project * of out-transitions to use the proto as an acceptable close match.
2658e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project */
2668e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project#define ACCEPTABLE_DIFF_PERCENTAGE 50
2678e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project
2688e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project/* The percentage the number of homogeneous out-transitions of a state
2698e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project * must be of the number of total out-transitions of the state in order
2708e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project * to consider making a template from the state.
2718e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project */
2728e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project#define TEMPLATE_SAME_PERCENTAGE 60
2738e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project
2748e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project/* The percentage the number of differences between a state's transition
2758e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project * table and the most similar proto must be of the state's total number
2768e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project * of out-transitions to create a new proto from the state.
2778e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project */
2788e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project#define NEW_PROTO_DIFF_PERCENTAGE 20
2798e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project
2808e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project/* The percentage the total number of out-transitions of a state must be
2818e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project * of the number of equivalence classes in order to consider trying to
2828e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project * fit the transition table into "holes" inside the nxt/chk table.
2838e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project */
2848e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project#define INTERIOR_FIT_PERCENTAGE 15
2858e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project
2868e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project/* Size of region set aside to cache the complete transition table of
2878e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project * protos on the proto queue to enable quick comparisons.
2888e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project */
2898e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project#define PROT_SAVE_SIZE 2000
2908e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project
2918e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project#define MSP 50	/* maximum number of saved protos (protos on the proto queue) */
2928e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project
2938e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project/* Maximum number of out-transitions a state can have that we'll rummage
2948e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project * around through the interior of the internal fast table looking for a
2958e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project * spot for it.
2968e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project */
2978e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project#define MAX_XTIONS_FULL_INTERIOR_FIT 4
2988e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project
2998e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project/* Maximum number of rules which will be reported as being associated
3008e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project * with a DFA state.
3018e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project */
3028e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project#define MAX_ASSOC_RULES 100
3038e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project
3048e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project/* Number that, if used to subscript an array, has a good chance of producing
3058e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project * an error; should be small enough to fit into a short.
3068e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project */
3078e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project#define BAD_SUBSCRIPT -32767
3088e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project
3098e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project/* Absolute value of largest number that can be stored in a short, with a
3108e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project * bit of slop thrown in for general paranoia.
3118e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project */
3128e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project#define MAX_SHORT 32700
3138e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project
3148e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project
3158e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project/* Declarations for global variables. */
3168e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project
3178e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project/* Variables for symbol tables:
3188e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project * sctbl - start-condition symbol table
3198e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project * ndtbl - name-definition symbol table
3208e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project * ccltab - character class text symbol table
3218e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project */
3228e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project
3238e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Projectstruct hash_entry
3248e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project	{
3258e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project	struct hash_entry *prev, *next;
3268e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project	char *name;
3278e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project	char *str_val;
3288e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project	int int_val;
3298e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project	} ;
3308e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project
3318e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Projecttypedef struct hash_entry **hash_table;
3328e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project
3338e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project#define NAME_TABLE_HASH_SIZE 101
3348e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project#define START_COND_HASH_SIZE 101
3358e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project#define CCL_HASH_SIZE 101
3368e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project
3378e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Projectextern struct hash_entry *ndtbl[NAME_TABLE_HASH_SIZE];
3388e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Projectextern struct hash_entry *sctbl[START_COND_HASH_SIZE];
3398e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Projectextern struct hash_entry *ccltab[CCL_HASH_SIZE];
3408e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project
3418e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project
3428e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project/* Variables for flags:
3438e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project * printstats - if true (-v), dump statistics
3448e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project * syntaxerror - true if a syntax error has been found
3458e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project * eofseen - true if we've seen an eof in the input file
3468e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project * ddebug - if true (-d), make a "debug" scanner
3478e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project * trace - if true (-T), trace processing
3488e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project * nowarn - if true (-w), do not generate warnings
3498e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project * spprdflt - if true (-s), suppress the default rule
3508e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project * interactive - if true (-I), generate an interactive scanner
3518e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project * caseins - if true (-i), generate a case-insensitive scanner
3528e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project * lex_compat - if true (-l), maximize compatibility with AT&T lex
3538e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project * do_yylineno - if true, generate code to maintain yylineno
3548e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project * useecs - if true (-Ce flag), use equivalence classes
3558e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project * fulltbl - if true (-Cf flag), don't compress the DFA state table
3568e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project * usemecs - if true (-Cm flag), use meta-equivalence classes
3578e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project * fullspd - if true (-F flag), use Jacobson method of table representation
3588e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project * gen_line_dirs - if true (i.e., no -L flag), generate #line directives
3598e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project * performance_report - if > 0 (i.e., -p flag), generate a report relating
3608e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project *   to scanner performance; if > 1 (-p -p), report on minor performance
3618e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project *   problems, too
3628e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project * backing_up_report - if true (i.e., -b flag), generate "lex.backup" file
3638e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project *   listing backing-up states
3648e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project * C_plus_plus - if true (i.e., -+ flag), generate a C++ scanner class;
3658e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project *   otherwise, a standard C scanner
3668e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project * long_align - if true (-Ca flag), favor long-word alignment.
3678e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project * use_read - if true (-f, -F, or -Cr) then use read() for scanner input;
3688e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project *   otherwise, use fread().
3698e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project * yytext_is_array - if true (i.e., %array directive), then declare
3708e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project *   yytext as a array instead of a character pointer.  Nice and inefficient.
3718e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project * do_yywrap - do yywrap() processing on EOF.  If false, EOF treated as
3728e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project *   "no more files".
3738e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project * csize - size of character set for the scanner we're generating;
3748e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project *   128 for 7-bit chars and 256 for 8-bit
3758e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project * yymore_used - if true, yymore() is used in input rules
3768e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project * reject - if true, generate back-up tables for REJECT macro
3778e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project * real_reject - if true, scanner really uses REJECT (as opposed to just
3788e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project *   having "reject" set for variable trailing context)
3798e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project * continued_action - true if this rule's action is to "fall through" to
3808e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project *   the next rule's action (i.e., the '|' action)
3818e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project * in_rule - true if we're inside an individual rule, false if not.
3828e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project * yymore_really_used - whether to treat yymore() as really used, regardless
3838e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project *   of what we think based on references to it in the user's actions.
3848e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project * reject_really_used - same for REJECT
3858e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project */
3868e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project
3878e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Projectextern int printstats, syntaxerror, eofseen, ddebug, trace, nowarn, spprdflt;
3888e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Projectextern int interactive, caseins, lex_compat, do_yylineno;
3898e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Projectextern int useecs, fulltbl, usemecs, fullspd;
3908e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Projectextern int gen_line_dirs, performance_report, backing_up_report;
3918e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Projectextern int C_plus_plus, long_align, use_read, yytext_is_array, do_yywrap;
3928e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Projectextern int csize;
3938e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Projectextern int yymore_used, reject, real_reject, continued_action, in_rule;
3948e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project
3958e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Projectextern int yymore_really_used, reject_really_used;
3968e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project
3978e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project
3988e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project/* Variables used in the flex input routines:
3998e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project * datapos - characters on current output line
4008e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project * dataline - number of contiguous lines of data in current data
4018e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project * 	statement.  Used to generate readable -f output
4028e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project * linenum - current input line number
4038e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project * out_linenum - current output line number
4048e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project * skelfile - the skeleton file
4058e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project * skel - compiled-in skeleton array
4068e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project * skel_ind - index into "skel" array, if skelfile is nil
4078e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project * yyin - input file
4088e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project * backing_up_file - file to summarize backing-up states to
4098e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project * infilename - name of input file
4108e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project * outfilename - name of output file
4118e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project * did_outfilename - whether outfilename was explicitly set
4128e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project * prefix - the prefix used for externally visible names ("yy" by default)
4138e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project * yyclass - yyFlexLexer subclass to use for YY_DECL
4148e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project * do_stdinit - whether to initialize yyin/yyout to stdin/stdout
4158e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project * use_stdout - the -t flag
4168e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project * input_files - array holding names of input files
4178e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project * num_input_files - size of input_files array
4188e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project * program_name - name with which program was invoked
4198e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project *
4208e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project * action_array - array to hold the rule actions
4218e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project * action_size - size of action_array
4228e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project * defs1_offset - index where the user's section 1 definitions start
4238e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project *	in action_array
4248e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project * prolog_offset - index where the prolog starts in action_array
4258e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project * action_offset - index where the non-prolog starts in action_array
4268e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project * action_index - index where the next action should go, with respect
4278e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project * 	to "action_array"
4288e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project */
4298e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project
4308e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Projectextern int datapos, dataline, linenum, out_linenum;
4318e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Projectextern FILE *skelfile, *yyin, *backing_up_file;
4328e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Projectextern const char *skel[];
4338e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Projectextern int skel_ind;
4348e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Projectextern char *infilename, *outfilename;
4358e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Projectextern int did_outfilename;
4368e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Projectextern char *prefix, *yyclass;
4378e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Projectextern int do_stdinit, use_stdout;
4388e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Projectextern char **input_files;
4398e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Projectextern int num_input_files;
4408e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Projectextern char *program_name;
4418e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project
4428e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Projectextern char *action_array;
4438e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Projectextern int action_size;
4448e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Projectextern int defs1_offset, prolog_offset, action_offset, action_index;
4458e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project
4468e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project
4478e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project/* Variables for stack of states having only one out-transition:
4488e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project * onestate - state number
4498e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project * onesym - transition symbol
4508e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project * onenext - target state
4518e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project * onedef - default base entry
4528e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project * onesp - stack pointer
4538e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project */
4548e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project
4558e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Projectextern int onestate[ONE_STACK_SIZE], onesym[ONE_STACK_SIZE];
4568e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Projectextern int onenext[ONE_STACK_SIZE], onedef[ONE_STACK_SIZE], onesp;
4578e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project
4588e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project
4598e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project/* Variables for nfa machine data:
4608e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project * current_mns - current maximum on number of NFA states
4618e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project * num_rules - number of the last accepting state; also is number of
4628e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project * 	rules created so far
4638e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project * num_eof_rules - number of <<EOF>> rules
4648e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project * default_rule - number of the default rule
4658e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project * current_max_rules - current maximum number of rules
4668e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project * lastnfa - last nfa state number created
4678e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project * firstst - physically the first state of a fragment
4688e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project * lastst - last physical state of fragment
4698e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project * finalst - last logical state of fragment
4708e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project * transchar - transition character
4718e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project * trans1 - transition state
4728e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project * trans2 - 2nd transition state for epsilons
4738e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project * accptnum - accepting number
4748e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project * assoc_rule - rule associated with this NFA state (or 0 if none)
4758e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project * state_type - a STATE_xxx type identifying whether the state is part
4768e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project * 	of a normal rule, the leading state in a trailing context
4778e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project * 	rule (i.e., the state which marks the transition from
4788e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project * 	recognizing the text-to-be-matched to the beginning of
4798e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project * 	the trailing context), or a subsequent state in a trailing
4808e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project * 	context rule
4818e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project * rule_type - a RULE_xxx type identifying whether this a ho-hum
4828e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project * 	normal rule or one which has variable head & trailing
4838e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project * 	context
4848e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project * rule_linenum - line number associated with rule
4858e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project * rule_useful - true if we've determined that the rule can be matched
4868e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project */
4878e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project
4888e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Projectextern int current_mns, current_max_rules;
4898e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Projectextern int num_rules, num_eof_rules, default_rule, lastnfa;
4908e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Projectextern int *firstst, *lastst, *finalst, *transchar, *trans1, *trans2;
4918e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Projectextern int *accptnum, *assoc_rule, *state_type;
4928e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Projectextern int *rule_type, *rule_linenum, *rule_useful;
4938e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project
4948e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project/* Different types of states; values are useful as masks, as well, for
4958e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project * routines like check_trailing_context().
4968e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project */
4978e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project#define STATE_NORMAL 0x1
4988e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project#define STATE_TRAILING_CONTEXT 0x2
4998e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project
5008e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project/* Global holding current type of state we're making. */
5018e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project
5028e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Projectextern int current_state_type;
5038e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project
5048e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project/* Different types of rules. */
5058e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project#define RULE_NORMAL 0
5068e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project#define RULE_VARIABLE 1
5078e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project
5088e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project/* True if the input rules include a rule with both variable-length head
5098e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project * and trailing context, false otherwise.
5108e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project */
5118e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Projectextern int variable_trailing_context_rules;
5128e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project
5138e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project
5148e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project/* Variables for protos:
5158e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project * numtemps - number of templates created
5168e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project * numprots - number of protos created
5178e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project * protprev - backlink to a more-recently used proto
5188e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project * protnext - forward link to a less-recently used proto
5198e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project * prottbl - base/def table entry for proto
5208e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project * protcomst - common state of proto
5218e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project * firstprot - number of the most recently used proto
5228e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project * lastprot - number of the least recently used proto
5238e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project * protsave contains the entire state array for protos
5248e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project */
5258e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project
5268e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Projectextern int numtemps, numprots, protprev[MSP], protnext[MSP], prottbl[MSP];
5278e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Projectextern int protcomst[MSP], firstprot, lastprot, protsave[PROT_SAVE_SIZE];
5288e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project
5298e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project
5308e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project/* Variables for managing equivalence classes:
5318e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project * numecs - number of equivalence classes
5328e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project * nextecm - forward link of Equivalence Class members
5338e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project * ecgroup - class number or backward link of EC members
5348e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project * nummecs - number of meta-equivalence classes (used to compress
5358e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project *   templates)
5368e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project * tecfwd - forward link of meta-equivalence classes members
5378e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project * tecbck - backward link of MEC's
5388e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project */
5398e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project
5408e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project/* Reserve enough room in the equivalence class arrays so that we
5418e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project * can use the CSIZE'th element to hold equivalence class information
5428e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project * for the NUL character.  Later we'll move this information into
5438e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project * the 0th element.
5448e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project */
5458e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Projectextern int numecs, nextecm[CSIZE + 1], ecgroup[CSIZE + 1], nummecs;
5468e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project
5478e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project/* Meta-equivalence classes are indexed starting at 1, so it's possible
5488e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project * that they will require positions from 1 .. CSIZE, i.e., CSIZE + 1
5498e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project * slots total (since the arrays are 0-based).  nextecm[] and ecgroup[]
5508e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project * don't require the extra position since they're indexed from 1 .. CSIZE - 1.
5518e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project */
5528e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Projectextern int tecfwd[CSIZE + 1], tecbck[CSIZE + 1];
5538e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project
5548e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project
5558e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project/* Variables for start conditions:
5568e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project * lastsc - last start condition created
5578e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project * current_max_scs - current limit on number of start conditions
5588e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project * scset - set of rules active in start condition
5598e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project * scbol - set of rules active only at the beginning of line in a s.c.
5608e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project * scxclu - true if start condition is exclusive
5618e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project * sceof - true if start condition has EOF rule
5628e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project * scname - start condition name
5638e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project */
5648e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project
5658e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Projectextern int lastsc, *scset, *scbol, *scxclu, *sceof;
5668e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Projectextern int current_max_scs;
5678e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Projectextern char **scname;
5688e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project
5698e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project
5708e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project/* Variables for dfa machine data:
5718e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project * current_max_dfa_size - current maximum number of NFA states in DFA
5728e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project * current_max_xpairs - current maximum number of non-template xtion pairs
5738e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project * current_max_template_xpairs - current maximum number of template pairs
5748e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project * current_max_dfas - current maximum number DFA states
5758e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project * lastdfa - last dfa state number created
5768e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project * nxt - state to enter upon reading character
5778e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project * chk - check value to see if "nxt" applies
5788e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project * tnxt - internal nxt table for templates
5798e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project * base - offset into "nxt" for given state
5808e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project * def - where to go if "chk" disallows "nxt" entry
5818e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project * nultrans - NUL transition for each state
5828e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project * NUL_ec - equivalence class of the NUL character
5838e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project * tblend - last "nxt/chk" table entry being used
5848e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project * firstfree - first empty entry in "nxt/chk" table
5858e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project * dss - nfa state set for each dfa
5868e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project * dfasiz - size of nfa state set for each dfa
5878e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project * dfaacc - accepting set for each dfa state (if using REJECT), or accepting
5888e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project *	number, if not
5898e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project * accsiz - size of accepting set for each dfa state
5908e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project * dhash - dfa state hash value
5918e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project * numas - number of DFA accepting states created; note that this
5928e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project *	is not necessarily the same value as num_rules, which is the analogous
5938e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project *	value for the NFA
5948e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project * numsnpairs - number of state/nextstate transition pairs
5958e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project * jambase - position in base/def where the default jam table starts
5968e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project * jamstate - state number corresponding to "jam" state
5978e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project * end_of_buffer_state - end-of-buffer dfa state number
5988e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project */
5998e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project
6008e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Projectextern int current_max_dfa_size, current_max_xpairs;
6018e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Projectextern int current_max_template_xpairs, current_max_dfas;
6028e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Projectextern int lastdfa, *nxt, *chk, *tnxt;
6038e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Projectextern int *base, *def, *nultrans, NUL_ec, tblend, firstfree, **dss, *dfasiz;
6048e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Projectextern union dfaacc_union
6058e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project	{
6068e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project	int *dfaacc_set;
6078e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project	int dfaacc_state;
6088e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project	} *dfaacc;
6098e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Projectextern int *accsiz, *dhash, numas;
6108e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Projectextern int numsnpairs, jambase, jamstate;
6118e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Projectextern int end_of_buffer_state;
6128e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project
6138e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project/* Variables for ccl information:
6148e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project * lastccl - ccl index of the last created ccl
6158e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project * current_maxccls - current limit on the maximum number of unique ccl's
6168e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project * cclmap - maps a ccl index to its set pointer
6178e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project * ccllen - gives the length of a ccl
6188e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project * cclng - true for a given ccl if the ccl is negated
6198e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project * cclreuse - counts how many times a ccl is re-used
6208e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project * current_max_ccl_tbl_size - current limit on number of characters needed
6218e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project *	to represent the unique ccl's
6228e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project * ccltbl - holds the characters in each ccl - indexed by cclmap
6238e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project */
6248e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project
6258e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Projectextern int lastccl, *cclmap, *ccllen, *cclng, cclreuse;
6268e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Projectextern int current_maxccls, current_max_ccl_tbl_size;
6278e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Projectextern Char *ccltbl;
6288e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project
6298e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project
6308e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project/* Variables for miscellaneous information:
6318e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project * nmstr - last NAME scanned by the scanner
6328e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project * sectnum - section number currently being parsed
6338e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project * nummt - number of empty nxt/chk table entries
6348e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project * hshcol - number of hash collisions detected by snstods
6358e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project * dfaeql - number of times a newly created dfa was equal to an old one
6368e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project * numeps - number of epsilon NFA states created
6378e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project * eps2 - number of epsilon states which have 2 out-transitions
6388e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project * num_reallocs - number of times it was necessary to realloc() a group
6398e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project *	  of arrays
6408e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project * tmpuses - number of DFA states that chain to templates
6418e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project * totnst - total number of NFA states used to make DFA states
6428e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project * peakpairs - peak number of transition pairs we had to store internally
6438e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project * numuniq - number of unique transitions
6448e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project * numdup - number of duplicate transitions
6458e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project * hshsave - number of hash collisions saved by checking number of states
6468e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project * num_backing_up - number of DFA states requiring backing up
6478e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project * bol_needed - whether scanner needs beginning-of-line recognition
6488e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project */
6498e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project
6508e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Projectextern char nmstr[MAXLINE];
6518e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Projectextern int sectnum, nummt, hshcol, dfaeql, numeps, eps2, num_reallocs;
6528e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Projectextern int tmpuses, totnst, peakpairs, numuniq, numdup, hshsave;
6538e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Projectextern int num_backing_up, bol_needed;
6548e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project
6558e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Projectvoid *allocate_array PROTO((int, size_t));
6568e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Projectvoid *reallocate_array PROTO((void*, int, size_t));
6578e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project
6588e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Projectvoid *flex_alloc PROTO((size_t));
6598e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Projectvoid *flex_realloc PROTO((void*, size_t));
6608e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Projectvoid flex_free PROTO((void*));
6618e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project
6628e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project#define allocate_integer_array(size) \
6638e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project	(int *) allocate_array( size, sizeof( int ) )
6648e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project
6658e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project#define reallocate_integer_array(array,size) \
6668e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project	(int *) reallocate_array( (void *) array, size, sizeof( int ) )
6678e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project
6688e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project#define allocate_int_ptr_array(size) \
6698e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project	(int **) allocate_array( size, sizeof( int * ) )
6708e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project
6718e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project#define allocate_char_ptr_array(size) \
6728e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project	(char **) allocate_array( size, sizeof( char * ) )
6738e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project
6748e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project#define allocate_dfaacc_union(size) \
6758e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project	(union dfaacc_union *) \
6768e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project		allocate_array( size, sizeof( union dfaacc_union ) )
6778e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project
6788e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project#define reallocate_int_ptr_array(array,size) \
6798e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project	(int **) reallocate_array( (void *) array, size, sizeof( int * ) )
6808e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project
6818e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project#define reallocate_char_ptr_array(array,size) \
6828e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project	(char **) reallocate_array( (void *) array, size, sizeof( char * ) )
6838e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project
6848e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project#define reallocate_dfaacc_union(array, size) \
6858e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project	(union dfaacc_union *) \
6868e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project	reallocate_array( (void *) array, size, sizeof( union dfaacc_union ) )
6878e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project
6888e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project#define allocate_character_array(size) \
6898e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project	(char *) allocate_array( size, sizeof( char ) )
6908e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project
6918e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project#define reallocate_character_array(array,size) \
6928e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project	(char *) reallocate_array( (void *) array, size, sizeof( char ) )
6938e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project
6948e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project#define allocate_Character_array(size) \
6958e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project	(Char *) allocate_array( size, sizeof( Char ) )
6968e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project
6978e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project#define reallocate_Character_array(array,size) \
6988e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project	(Char *) reallocate_array( (void *) array, size, sizeof( Char ) )
6998e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project
7008e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project
7018e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project/* Used to communicate between scanner and parser.  The type should really
7028e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project * be YYSTYPE, but we can't easily get our hands on it.
7038e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project */
7048e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Projectextern int yylval;
7058e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project
7068e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project
7078e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project/* External functions that are cross-referenced among the flex source files. */
7088e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project
7098e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project
7108e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project/* from file ccl.c */
7118e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project
7128e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Projectextern void ccladd PROTO((int, int));	/* add a single character to a ccl */
7138e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Projectextern int cclinit PROTO((void));	/* make an empty ccl */
7148e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Projectextern void cclnegate PROTO((int));	/* negate a ccl */
7158e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project
7168e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project/* List the members of a set of characters in CCL form. */
7178e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Projectextern void list_character_set PROTO((FILE*, int[]));
7188e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project
7198e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project
7208e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project/* from file dfa.c */
7218e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project
7228e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project/* Check a DFA state for backing up. */
7238e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Projectextern void check_for_backing_up PROTO((int, int[]));
7248e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project
7258e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project/* Check to see if NFA state set constitutes "dangerous" trailing context. */
7268e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Projectextern void check_trailing_context PROTO((int*, int, int*, int));
7278e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project
7288e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project/* Construct the epsilon closure of a set of ndfa states. */
7298e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Projectextern int *epsclosure PROTO((int*, int*, int[], int*, int*));
7308e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project
7318e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project/* Increase the maximum number of dfas. */
7328e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Projectextern void increase_max_dfas PROTO((void));
7338e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project
7348e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Projectextern void ntod PROTO((void));	/* convert a ndfa to a dfa */
7358e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project
7368e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project/* Converts a set of ndfa states into a dfa state. */
7378e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Projectextern int snstods PROTO((int[], int, int[], int, int, int*));
7388e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project
7398e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project
7408e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project/* from file ecs.c */
7418e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project
7428e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project/* Convert character classes to set of equivalence classes. */
7438e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Projectextern void ccl2ecl PROTO((void));
7448e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project
7458e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project/* Associate equivalence class numbers with class members. */
7468e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Projectextern int cre8ecs PROTO((int[], int[], int));
7478e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project
7488e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project/* Update equivalence classes based on character class transitions. */
7498e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Projectextern void mkeccl PROTO((Char[], int, int[], int[], int, int));
7508e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project
7518e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project/* Create equivalence class for single character. */
7528e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Projectextern void mkechar PROTO((int, int[], int[]));
7538e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project
7548e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project
7558e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project/* from file gen.c */
7568e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project
7578e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Projectextern void do_indent PROTO((void));	/* indent to the current level */
7588e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project
7598e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project/* Generate the code to keep backing-up information. */
7608e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Projectextern void gen_backing_up PROTO((void));
7618e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project
7628e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project/* Generate the code to perform the backing up. */
7638e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Projectextern void gen_bu_action PROTO((void));
7648e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project
7658e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project/* Generate full speed compressed transition table. */
7668e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Projectextern void genctbl PROTO((void));
7678e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project
7688e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project/* Generate the code to find the action number. */
7698e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Projectextern void gen_find_action PROTO((void));
7708e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project
7718e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Projectextern void genftbl PROTO((void));	/* generate full transition table */
7728e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project
7738e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project/* Generate the code to find the next compressed-table state. */
7748e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Projectextern void gen_next_compressed_state PROTO((char*));
7758e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project
7768e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project/* Generate the code to find the next match. */
7778e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Projectextern void gen_next_match PROTO((void));
7788e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project
7798e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project/* Generate the code to find the next state. */
7808e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Projectextern void gen_next_state PROTO((int));
7818e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project
7828e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project/* Generate the code to make a NUL transition. */
7838e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Projectextern void gen_NUL_trans PROTO((void));
7848e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project
7858e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project/* Generate the code to find the start state. */
7868e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Projectextern void gen_start_state PROTO((void));
7878e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project
7888e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project/* Generate data statements for the transition tables. */
7898e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Projectextern void gentabs PROTO((void));
7908e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project
7918e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project/* Write out a formatted string at the current indentation level. */
7928e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Projectextern void indent_put2s PROTO((char[], char[]));
7938e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project
7948e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project/* Write out a string + newline at the current indentation level. */
7958e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Projectextern void indent_puts PROTO((char[]));
7968e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project
7978e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Projectextern void make_tables PROTO((void));	/* generate transition tables */
7988e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project
7998e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project
8008e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project/* from file main.c */
8018e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project
8028e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Projectextern void check_options PROTO((void));
8038e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Projectextern void flexend PROTO((int));
8048e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Projectextern void usage PROTO((void));
8058e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project
8068e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project
8078e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project/* from file misc.c */
8088e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project
8098e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project/* Add a #define to the action file. */
8108e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Projectextern void action_define PROTO(( char *defname, int value ));
8118e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project
8128e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project/* Add the given text to the stored actions. */
8138e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Projectextern void add_action PROTO(( char *new_text ));
8148e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project
8158e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project/* True if a string is all lower case. */
8168e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Projectextern int all_lower PROTO((register char *));
8178e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project
8188e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project/* True if a string is all upper case. */
8198e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Projectextern int all_upper PROTO((register char *));
8208e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project
8218e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project/* Bubble sort an integer array. */
8228e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Projectextern void bubble PROTO((int [], int));
8238e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project
8248e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project/* Check a character to make sure it's in the expected range. */
8258e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Projectextern void check_char PROTO((int c));
8268e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project
8278e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project/* Replace upper-case letter to lower-case. */
8288e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Projectextern Char clower PROTO((int));
8298e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project
8308e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project/* Returns a dynamically allocated copy of a string. */
8318e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Projectextern char *copy_string PROTO((register const char *));
8328e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project
8338e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project/* Returns a dynamically allocated copy of a (potentially) unsigned string. */
8348e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Projectextern Char *copy_unsigned_string PROTO((register Char *));
8358e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project
8368e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project/* Shell sort a character array. */
8378e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Projectextern void cshell PROTO((Char [], int, int));
8388e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project
8398e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project/* Finish up a block of data declarations. */
8408e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Projectextern void dataend PROTO((void));
8418e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project
8428e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project/* Flush generated data statements. */
8438e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Projectextern void dataflush PROTO((void));
8448e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project
8458e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project/* Report an error message and terminate. */
8468e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Projectextern void flexerror PROTO((const char[]));
8478e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project
8488e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project/* Report a fatal error message and terminate. */
8498e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Projectextern void flexfatal PROTO((const char[]));
8508e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project
8518e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project/* Convert a hexadecimal digit string to an integer value. */
8528e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Projectextern int htoi PROTO((Char[]));
8538e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project
8548e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project/* Report an error message formatted with one integer argument. */
8558e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Projectextern void lerrif PROTO((const char[], int));
8568e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project
8578e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project/* Report an error message formatted with one string argument. */
8588e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Projectextern void lerrsf PROTO((const char[], const char[]));
8598e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project
8608e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project/* Spit out a "#line" statement. */
8618e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Projectextern void line_directive_out PROTO((FILE*, int));
8628e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project
8638e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project/* Mark the current position in the action array as the end of the section 1
8648e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project * user defs.
8658e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project */
8668e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Projectextern void mark_defs1 PROTO((void));
8678e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project
8688e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project/* Mark the current position in the action array as the end of the prolog. */
8698e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Projectextern void mark_prolog PROTO((void));
8708e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project
8718e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project/* Generate a data statment for a two-dimensional array. */
8728e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Projectextern void mk2data PROTO((int));
8738e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project
8748e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Projectextern void mkdata PROTO((int));	/* generate a data statement */
8758e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project
8768e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project/* Return the integer represented by a string of digits. */
8778e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Projectextern int myctoi PROTO((char []));
8788e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project
8798e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project/* Return character corresponding to escape sequence. */
8808e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Projectextern Char myesc PROTO((Char[]));
8818e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project
8828e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project/* Convert an octal digit string to an integer value. */
8838e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Projectextern int otoi PROTO((Char [] ));
8848e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project
8858e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project/* Output a (possibly-formatted) string to the generated scanner. */
8868e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Projectextern void out PROTO((const char []));
8878e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Projectextern void out_dec PROTO((const char [], int));
8888e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Projectextern void out_dec2 PROTO((const char [], int, int));
8898e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Projectextern void out_hex PROTO((const char [], unsigned int));
8908e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Projectextern void out_line_count PROTO((const char []));
8918e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Projectextern void out_str PROTO((const char [], const char []));
8928e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Projectextern void out_str3
8938e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project	PROTO((const char [], const char [], const char [], const char []));
8948e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Projectextern void out_str_dec PROTO((const char [], const char [], int));
8958e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Projectextern void outc PROTO((int));
8968e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Projectextern void outn PROTO((const char []));
8978e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project
8988e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project/* Return a printable version of the given character, which might be
8998e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project * 8-bit.
9008e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project */
9018e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Projectextern char *readable_form PROTO((int));
9028e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project
9038e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project/* Write out one section of the skeleton file. */
9048e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Projectextern void skelout PROTO((void));
9058e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project
9068e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project/* Output a yy_trans_info structure. */
9078e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Projectextern void transition_struct_out PROTO((int, int));
9088e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project
9098e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project/* Only needed when using certain broken versions of bison to build parse.c. */
9108e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Projectextern void *yy_flex_xmalloc PROTO(( int ));
9118e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project
9128e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project/* Set a region of memory to 0. */
9138e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Projectextern void zero_out PROTO((char *, size_t));
9148e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project
9158e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project
9168e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project/* from file nfa.c */
9178e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project
9188e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project/* Add an accepting state to a machine. */
9198e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Projectextern void add_accept PROTO((int, int));
9208e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project
9218e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project/* Make a given number of copies of a singleton machine. */
9228e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Projectextern int copysingl PROTO((int, int));
9238e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project
9248e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project/* Debugging routine to write out an nfa. */
9258e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Projectextern void dumpnfa PROTO((int));
9268e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project
9278e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project/* Finish up the processing for a rule. */
9288e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Projectextern void finish_rule PROTO((int, int, int, int));
9298e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project
9308e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project/* Connect two machines together. */
9318e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Projectextern int link_machines PROTO((int, int));
9328e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project
9338e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project/* Mark each "beginning" state in a machine as being a "normal" (i.e.,
9348e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project * not trailing context associated) state.
9358e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project */
9368e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Projectextern void mark_beginning_as_normal PROTO((register int));
9378e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project
9388e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project/* Make a machine that branches to two machines. */
9398e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Projectextern int mkbranch PROTO((int, int));
9408e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project
9418e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Projectextern int mkclos PROTO((int));	/* convert a machine into a closure */
9428e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Projectextern int mkopt PROTO((int));	/* make a machine optional */
9438e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project
9448e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project/* Make a machine that matches either one of two machines. */
9458e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Projectextern int mkor PROTO((int, int));
9468e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project
9478e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project/* Convert a machine into a positive closure. */
9488e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Projectextern int mkposcl PROTO((int));
9498e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project
9508e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Projectextern int mkrep PROTO((int, int, int));	/* make a replicated machine */
9518e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project
9528e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project/* Create a state with a transition on a given symbol. */
9538e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Projectextern int mkstate PROTO((int));
9548e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project
9558e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Projectextern void new_rule PROTO((void));	/* initialize for a new rule */
9568e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project
9578e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project
9588e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project/* from file parse.y */
9598e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project
9608e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project/* Build the "<<EOF>>" action for the active start conditions. */
9618e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Projectextern void build_eof_action PROTO((void));
9628e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project
9638e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project/* Write out a message formatted with one string, pinpointing its location. */
9648e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Projectextern void format_pinpoint_message PROTO((char[], char[]));
9658e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project
9668e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project/* Write out a message, pinpointing its location. */
9678e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Projectextern void pinpoint_message PROTO((char[]));
9688e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project
9698e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project/* Write out a warning, pinpointing it at the given line. */
9708e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Projectextern void line_warning PROTO(( char[], int ));
9718e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project
9728e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project/* Write out a message, pinpointing it at the given line. */
9738e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Projectextern void line_pinpoint PROTO(( char[], int ));
9748e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project
9758e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project/* Report a formatted syntax error. */
9768e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Projectextern void format_synerr PROTO((char [], char[]));
9778e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Projectextern void synerr PROTO((char []));	/* report a syntax error */
9788e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Projectextern void format_warn PROTO((char [], char[]));
9798e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Projectextern void warn PROTO((char []));	/* report a warning */
9808e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Projectextern void yyerror PROTO((char []));	/* report a parse error */
9818e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Projectextern int yyparse PROTO((void));	/* the YACC parser */
9828e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project
9838e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project
9848e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project/* from file scan.l */
9858e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project
9868e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project/* The Flex-generated scanner for flex. */
9878e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Projectextern int flexscan PROTO((void));
9888e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project
9898e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project/* Open the given file (if NULL, stdin) for scanning. */
9908e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Projectextern void set_input_file PROTO((char*));
9918e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project
9928e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project/* Wrapup a file in the lexical analyzer. */
9938e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Projectextern int yywrap PROTO((void));
9948e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project
9958e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project
9968e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project/* from file sym.c */
9978e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project
9988e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project/* Add symbol and definitions to symbol table. */
9998e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Projectextern int addsym PROTO((register char[], char*, int, hash_table, int));
10008e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project
10018e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project/* Save the text of a character class. */
10028e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Projectextern void cclinstal PROTO ((Char [], int));
10038e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project
10048e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project/* Lookup the number associated with character class. */
10058e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Projectextern int ccllookup PROTO((Char []));
10068e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project
10078e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project/* Find symbol in symbol table. */
10088e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Projectextern struct hash_entry *findsym PROTO((register char[], hash_table, int ));
10098e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project
10108e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Projectextern void ndinstal PROTO((char[], Char[]));	/* install a name definition */
10118e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Projectextern Char *ndlookup PROTO((char[]));	/* lookup a name definition */
10128e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project
10138e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project/* Increase maximum number of SC's. */
10148e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Projectextern void scextend PROTO((void));
10158e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Projectextern void scinstal PROTO((char[], int));	/* make a start condition */
10168e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project
10178e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project/* Lookup the number associated with a start condition. */
10188e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Projectextern int sclookup PROTO((char[]));
10198e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project
10208e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project
10218e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project/* from file tblcmp.c */
10228e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project
10238e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project/* Build table entries for dfa state. */
10248e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Projectextern void bldtbl PROTO((int[], int, int, int, int));
10258e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project
10268e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Projectextern void cmptmps PROTO((void));	/* compress template table entries */
10278e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Projectextern void expand_nxt_chk PROTO((void));	/* increase nxt/chk arrays */
10288e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project/* Finds a space in the table for a state to be placed. */
10298e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Projectextern int find_table_space PROTO((int*, int));
10308e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Projectextern void inittbl PROTO((void));	/* initialize transition tables */
10318e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project/* Make the default, "jam" table entries. */
10328e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Projectextern void mkdeftbl PROTO((void));
10338e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project
10348e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project/* Create table entries for a state (or state fragment) which has
10358e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project * only one out-transition.
10368e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project */
10378e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Projectextern void mk1tbl PROTO((int, int, int, int));
10388e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project
10398e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project/* Place a state into full speed transition table. */
10408e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Projectextern void place_state PROTO((int*, int, int));
10418e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project
10428e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project/* Save states with only one out-transition to be processed later. */
10438e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Projectextern void stack1 PROTO((int, int, int, int));
10448e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project
10458e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project
10468e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project/* from file yylex.c */
10478e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project
10488e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Projectextern int yylex PROTO((void));
1049