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