18e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project/* scan.l - scanner for flex input */
28e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project
38e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project%{
48e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project/*-
58e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project * Copyright (c) 1990 The Regents of the University of California.
68e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project * All rights reserved.
78e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project *
88e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project * This code is derived from software contributed to Berkeley by
98e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project * Vern Paxson.
108e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project *
118e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project * The United States Government has rights in this work pursuant
128e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project * to contract no. DE-AC03-76SF00098 between the United States
138e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project * Department of Energy and the University of California.
148e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project *
158e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project * Redistribution and use in source and binary forms with or without
168e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project * modification are permitted provided that: (1) source distributions retain
178e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project * this entire copyright notice and comment, and (2) distributions including
188e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project * binaries display the following acknowledgement:  ``This product includes
198e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project * software developed by the University of California, Berkeley and its
208e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project * contributors'' in the documentation or other materials provided with the
218e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project * distribution and in all advertising materials mentioning features or use
228e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project * of this software.  Neither the name of the University nor the names of
238e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project * its contributors may be used to endorse or promote products derived from
248e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project * this software without specific prior written permission.
258e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project * THIS SOFTWARE IS PROVIDED ``AS IS'' AND WITHOUT ANY EXPRESS OR IMPLIED
268e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project * WARRANTIES, INCLUDING, WITHOUT LIMITATION, THE IMPLIED WARRANTIES OF
278e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project * MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE.
288e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project */
298e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project
308e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project/* $Header: /home/daffy/u0/vern/flex/RCS/scan.l,v 2.56 95/04/24 12:17:19 vern Exp $ */
318e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project
328e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project#include "flexdef.h"
338e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project#include "parse.h"
348e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project
358e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project#define ACTION_ECHO add_action( yytext )
368e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project#define ACTION_IFDEF(def, should_define) \
378e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project	{ \
388e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project	if ( should_define ) \
398e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project		action_define( def, 1 ); \
408e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project	}
418e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project
428e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project#define MARK_END_OF_PROLOG mark_prolog();
438e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project
448e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project#define YY_DECL \
458e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project	int flexscan()
468e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project
478e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project#define RETURNCHAR \
488e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project	yylval = (unsigned char) yytext[0]; \
498e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project	return CHAR;
508e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project
518e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project#define RETURNNAME \
528e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project	strcpy( nmstr, yytext ); \
538e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project	return NAME;
548e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project
558e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project#define PUT_BACK_STRING(str, start) \
568e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project	for ( i = strlen( str ) - 1; i >= start; --i ) \
578e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project		unput((str)[i])
588e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project
598e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project#define CHECK_REJECT(str) \
608e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project	if ( all_upper( str ) ) \
618e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project		reject = true;
628e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project
638e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project#define CHECK_YYMORE(str) \
648e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project	if ( all_lower( str ) ) \
658e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project		yymore_used = true;
668e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project%}
678e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project
688e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project%option caseless nodefault outfile="scan.c" stack noyy_top_state
698e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project%option nostdinit
708e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project
718e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project%x SECT2 SECT2PROLOG SECT3 CODEBLOCK PICKUPDEF SC CARETISBOL NUM QUOTE
728e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project%x FIRSTCCL CCL ACTION RECOVER COMMENT ACTION_STRING PERCENT_BRACE_ACTION
738e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project%x OPTION LINEDIR
748e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project
758e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source ProjectWS		[[:blank:]]+
768e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source ProjectOPTWS		[[:blank:]]*
778e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source ProjectNOT_WS		[^[:blank:]\n]
788e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project
798e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source ProjectNL		\r?\n
808e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project
818e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source ProjectNAME		([[:alpha:]_][[:alnum:]_-]*)
828e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source ProjectNOT_NAME	[^[:alpha:]_*\n]+
838e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project
848e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source ProjectSCNAME		{NAME}
858e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project
868e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source ProjectESCSEQ		(\\([^\n]|[0-7]{1,3}|x[[:xdigit:]]{1,2}))
878e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project
888e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source ProjectFIRST_CCL_CHAR	([^\\\n]|{ESCSEQ})
898e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source ProjectCCL_CHAR	([^\\\n\]]|{ESCSEQ})
908e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source ProjectCCL_EXPR	("[:"[[:alpha:]]+":]")
918e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project
928e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source ProjectLEXOPT		[aceknopr]
938e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project
948e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project%%
958e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project	static int bracelevel, didadef, indented_code;
968e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project	static int doing_rule_action = false;
978e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project	static int option_sense;
988e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project
998e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project	int doing_codeblock = false;
1008e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project	int i;
1018e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project	Char nmdef[MAXLINE], myesc();
1028e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project
1038e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project
1048e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project<INITIAL>{
1058e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project	^{WS}		indented_code = true; BEGIN(CODEBLOCK);
1068e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project	^"/*"		ACTION_ECHO; yy_push_state( COMMENT );
1078e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project	^#{OPTWS}line{WS}	yy_push_state( LINEDIR );
1088e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project	^"%s"{NAME}?	return SCDECL;
1098e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project	^"%x"{NAME}?	return XSCDECL;
1108e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project	^"%{".*{NL}	{
1118e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project			++linenum;
1128e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project			line_directive_out( (FILE *) 0, 1 );
1138e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project			indented_code = false;
1148e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project			BEGIN(CODEBLOCK);
1158e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project			}
1168e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project
1178e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project	{WS}		/* discard */
1188e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project
1198e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project	^"%%".*		{
1208e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project			sectnum = 2;
1218e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project			bracelevel = 0;
1228e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project			mark_defs1();
1238e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project			line_directive_out( (FILE *) 0, 1 );
1248e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project			BEGIN(SECT2PROLOG);
1258e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project			return SECTEND;
1268e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project			}
1278e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project
1288e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project	^"%pointer".*{NL}	yytext_is_array = false; ++linenum;
1298e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project	^"%array".*{NL}		yytext_is_array = true; ++linenum;
1308e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project
1318e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project	^"%option"	BEGIN(OPTION); return OPTION_OP;
1328e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project
1338e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project	^"%"{LEXOPT}{OPTWS}[[:digit:]]*{OPTWS}{NL}	++linenum; /* ignore */
1348e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project	^"%"{LEXOPT}{WS}.*{NL}	++linenum;	/* ignore */
1358e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project
1368e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project	^"%"[^sxaceknopr{}].*	synerr( _( "unrecognized '%' directive" ) );
1378e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project
1388e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project	^{NAME}		{
1398e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project			strcpy( nmstr, yytext );
1408e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project			didadef = false;
1418e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project			BEGIN(PICKUPDEF);
1428e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project			}
1438e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project
1448e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project	{SCNAME}	RETURNNAME;
1458e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project	^{OPTWS}{NL}	++linenum; /* allows blank lines in section 1 */
1468e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project	{OPTWS}{NL}	ACTION_ECHO; ++linenum; /* maybe end of comment line */
1478e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project}
1488e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project
1498e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project
1508e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project<COMMENT>{
1518e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project	"*/"		ACTION_ECHO; yy_pop_state();
1528e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project	"*"		ACTION_ECHO;
1538e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project	[^*\n]+		ACTION_ECHO;
1548e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project	[^*\n]*{NL}	++linenum; ACTION_ECHO;
1558e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project}
1568e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project
1578e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project<LINEDIR>{
1588e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project	\n		yy_pop_state();
1598e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project	[[:digit:]]+	linenum = myctoi( yytext );
1608e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project
1618e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project	\"[^"\n]*\"	{
1628e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project			flex_free( (void *) infilename );
1638e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project			infilename = copy_string( yytext + 1 );
1648e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project			infilename[strlen( infilename ) - 1] = '\0';
1658e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project			}
1668e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project	.		/* ignore spurious characters */
1678e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project}
1688e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project
1698e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project<CODEBLOCK>{
1708e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project	^"%}".*{NL}	++linenum; BEGIN(INITIAL);
1718e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project
1728e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project	{NAME}|{NOT_NAME}|.	ACTION_ECHO;
1738e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project
1748e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project	{NL}		{
1758e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project			++linenum;
1768e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project			ACTION_ECHO;
1778e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project			if ( indented_code )
1788e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project				BEGIN(INITIAL);
1798e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project			}
1808e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project}
1818e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project
1828e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project
1838e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project<PICKUPDEF>{
1848e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project	{WS}		/* separates name and definition */
1858e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project
1868e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project	{NOT_WS}.*	{
1878e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project			strcpy( (char *) nmdef, yytext );
1888e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project
1898e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project			/* Skip trailing whitespace. */
1908e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project			for ( i = strlen( (char *) nmdef ) - 1;
1918e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project			      i >= 0 && (nmdef[i] == ' ' || nmdef[i] == '\t');
1928e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project			      --i )
1938e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project				;
1948e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project
1958e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project			nmdef[i + 1] = '\0';
1968e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project
1978e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project			ndinstal( nmstr, nmdef );
1988e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project			didadef = true;
1998e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project			}
2008e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project
2018e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project	{NL}		{
2028e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project			if ( ! didadef )
2038e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project				synerr( _( "incomplete name definition" ) );
2048e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project			BEGIN(INITIAL);
2058e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project			++linenum;
2068e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project			}
2078e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project}
2088e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project
2098e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project
2108e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project<OPTION>{
2118e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project	{NL}		++linenum; BEGIN(INITIAL);
2128e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project	{WS}		option_sense = true;
2138e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project
2148e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project	"="		return '=';
2158e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project
2168e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project	no		option_sense = ! option_sense;
2178e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project
2188e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project	7bit		csize = option_sense ? 128 : 256;
2198e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project	8bit		csize = option_sense ? 256 : 128;
2208e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project
2218e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project	align		long_align = option_sense;
2228e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project	always-interactive	{
2238e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project			action_define( "YY_ALWAYS_INTERACTIVE", option_sense );
2248e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project			}
2258e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project	array		yytext_is_array = option_sense;
2268e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project	backup		backing_up_report = option_sense;
2278e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project	batch		interactive = ! option_sense;
2288e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project	"c++"		C_plus_plus = option_sense;
2298e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project	caseful|case-sensitive		caseins = ! option_sense;
2308e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project	caseless|case-insensitive	caseins = option_sense;
2318e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project	debug		ddebug = option_sense;
2328e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project	default		spprdflt = ! option_sense;
2338e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project	ecs		useecs = option_sense;
2348e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project	fast		{
2358e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project			useecs = usemecs = false;
2368e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project			use_read = fullspd = true;
2378e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project			}
2388e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project	full		{
2398e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project			useecs = usemecs = false;
2408e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project			use_read = fulltbl = true;
2418e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project			}
2428e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project	input		ACTION_IFDEF("YY_NO_INPUT", ! option_sense);
2438e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project	interactive	interactive = option_sense;
2448e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project	lex-compat	lex_compat = option_sense;
2458e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project	main		{
2468e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project			action_define( "YY_MAIN", option_sense );
2478e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project			do_yywrap = ! option_sense;
2488e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project			}
2498e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project	meta-ecs	usemecs = option_sense;
2508e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project	never-interactive	{
2518e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project			action_define( "YY_NEVER_INTERACTIVE", option_sense );
2528e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project			}
2538e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project	perf-report	performance_report += option_sense ? 1 : -1;
2548e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project	pointer		yytext_is_array = ! option_sense;
2558e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project	read		use_read = option_sense;
2568e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project	reject		reject_really_used = option_sense;
2578e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project	stack		action_define( "YY_STACK_USED", option_sense );
2588e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project	stdinit		do_stdinit = option_sense;
2598e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project	stdout		use_stdout = option_sense;
2608e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project	unput		ACTION_IFDEF("YY_NO_UNPUT", ! option_sense);
2618e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project	verbose		printstats = option_sense;
2628e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project	warn		nowarn = ! option_sense;
2638e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project	yylineno	do_yylineno = option_sense;
2648e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project	yymore		yymore_really_used = option_sense;
2658e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project	yywrap		do_yywrap = option_sense;
2668e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project
2678e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project	yy_push_state	ACTION_IFDEF("YY_NO_PUSH_STATE", ! option_sense);
2688e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project	yy_pop_state	ACTION_IFDEF("YY_NO_POP_STATE", ! option_sense);
2698e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project	yy_top_state	ACTION_IFDEF("YY_NO_TOP_STATE", ! option_sense);
2708e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project
2718e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project	yy_scan_buffer	ACTION_IFDEF("YY_NO_SCAN_BUFFER", ! option_sense);
2728e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project	yy_scan_bytes	ACTION_IFDEF("YY_NO_SCAN_BYTES", ! option_sense);
2738e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project	yy_scan_string	ACTION_IFDEF("YY_NO_SCAN_STRING", ! option_sense);
2748e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project
2758e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project	outfile		return OPT_OUTFILE;
2768e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project	prefix		return OPT_PREFIX;
2778e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project	yyclass		return OPT_YYCLASS;
2788e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project
2798e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project	\"[^"\n]*\"	{
2808e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project			strcpy( nmstr, yytext + 1 );
2818e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project			nmstr[strlen( nmstr ) - 1] = '\0';
2828e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project			return NAME;
2838e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project			}
2848e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project
2858e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project	(([a-mo-z]|n[a-np-z])[[:alpha:]\-+]*)|.	{
2868e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project			format_synerr( _( "unrecognized %%option: %s" ),
2878e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project				yytext );
2888e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project			BEGIN(RECOVER);
2898e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project			}
2908e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project}
2918e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project
2928e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project<RECOVER>.*{NL}		++linenum; BEGIN(INITIAL);
2938e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project
2948e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project
2958e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project<SECT2PROLOG>{
2968e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project	^"%{".*	++bracelevel; yyless( 2 );	/* eat only %{ */
2978e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project	^"%}".*	--bracelevel; yyless( 2 );	/* eat only %} */
2988e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project
2998e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project	^{WS}.*	ACTION_ECHO;	/* indented code in prolog */
3008e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project
3018e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project	^{NOT_WS}.*	{	/* non-indented code */
3028e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project			if ( bracelevel <= 0 )
3038e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project				{ /* not in %{ ... %} */
3048e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project				yyless( 0 );	/* put it all back */
3058e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project				yy_set_bol( 1 );
3068e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project				mark_prolog();
3078e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project				BEGIN(SECT2);
3088e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project				}
3098e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project			else
3108e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project				ACTION_ECHO;
3118e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project			}
3128e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project
3138e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project	.*		ACTION_ECHO;
3148e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project	{NL}	++linenum; ACTION_ECHO;
3158e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project
3168e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project	<<EOF>>		{
3178e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project			mark_prolog();
3188e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project			sectnum = 0;
3198e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project			yyterminate(); /* to stop the parser */
3208e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project			}
3218e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project}
3228e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project
3238e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project<SECT2>{
3248e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project	^{OPTWS}{NL}	++linenum; /* allow blank lines in section 2 */
3258e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project
3268e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project	^{OPTWS}"%{"	{
3278e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project			indented_code = false;
3288e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project			doing_codeblock = true;
3298e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project			bracelevel = 1;
3308e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project			BEGIN(PERCENT_BRACE_ACTION);
3318e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project			}
3328e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project
3338e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project	^{OPTWS}"<"	BEGIN(SC); return '<';
3348e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project	^{OPTWS}"^"	return '^';
3358e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project	\"		BEGIN(QUOTE); return '"';
3368e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project	"{"/[[:digit:]]	BEGIN(NUM); return '{';
3378e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project	"$"/([[:blank:]]|{NL})	return '$';
3388e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project
3398e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project	{WS}"%{"		{
3408e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project			bracelevel = 1;
3418e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project			BEGIN(PERCENT_BRACE_ACTION);
3428e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project
3438e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project			if ( in_rule )
3448e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project				{
3458e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project				doing_rule_action = true;
3468e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project				in_rule = false;
3478e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project				return '\n';
3488e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project				}
3498e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project			}
3508e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project	{WS}"|".*{NL}	continued_action = true; ++linenum; return '\n';
3518e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project
3528e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project	^{WS}"/*"	{
3538e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project			yyless( yyleng - 2 );	/* put back '/', '*' */
3548e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project			bracelevel = 0;
3558e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project			continued_action = false;
3568e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project			BEGIN(ACTION);
3578e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project			}
3588e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project
3598e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project	^{WS}		/* allow indented rules */
3608e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project
3618e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project	{WS}		{
3628e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project			/* This rule is separate from the one below because
3638e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project			 * otherwise we get variable trailing context, so
3648e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project			 * we can't build the scanner using -{f,F}.
3658e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project			 */
3668e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project			bracelevel = 0;
3678e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project			continued_action = false;
3688e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project			BEGIN(ACTION);
3698e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project
3708e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project			if ( in_rule )
3718e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project				{
3728e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project				doing_rule_action = true;
3738e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project				in_rule = false;
3748e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project				return '\n';
3758e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project				}
3768e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project			}
3778e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project
3788e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project	{OPTWS}{NL}	{
3798e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project			bracelevel = 0;
3808e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project			continued_action = false;
3818e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project			BEGIN(ACTION);
3828e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project			unput( '\n' );	/* so <ACTION> sees it */
3838e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project
3848e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project			if ( in_rule )
3858e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project				{
3868e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project				doing_rule_action = true;
3878e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project				in_rule = false;
3888e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project				return '\n';
3898e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project				}
3908e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project			}
3918e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project
3928e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project	^{OPTWS}"<<EOF>>"	|
3938e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project	"<<EOF>>"	return EOF_OP;
3948e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project
3958e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project	^"%%".*		{
3968e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project			sectnum = 3;
3978e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project			BEGIN(SECT3);
3988e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project			yyterminate(); /* to stop the parser */
3998e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project			}
4008e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project
4018e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project	"["({FIRST_CCL_CHAR}|{CCL_EXPR})({CCL_CHAR}|{CCL_EXPR})*	{
4028e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project			int cclval;
4038e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project
4048e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project			strcpy( nmstr, yytext );
4058e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project
4068e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project			/* Check to see if we've already encountered this
4078e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project			 * ccl.
4088e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project			 */
4098e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project			if ( (cclval = ccllookup( (Char *) nmstr )) != 0 )
4108e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project				{
4118e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project				if ( input() != ']' )
4128e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project					synerr( _( "bad character class" ) );
4138e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project
4148e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project				yylval = cclval;
4158e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project				++cclreuse;
4168e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project				return PREVCCL;
4178e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project				}
4188e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project			else
4198e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project				{
4208e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project				/* We fudge a bit.  We know that this ccl will
4218e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project				 * soon be numbered as lastccl + 1 by cclinit.
4228e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project				 */
4238e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project				cclinstal( (Char *) nmstr, lastccl + 1 );
4248e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project
4258e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project				/* Push back everything but the leading bracket
4268e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project				 * so the ccl can be rescanned.
4278e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project				 */
4288e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project				yyless( 1 );
4298e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project
4308e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project				BEGIN(FIRSTCCL);
4318e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project				return '[';
4328e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project				}
4338e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project			}
4348e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project
4358e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project	"{"{NAME}"}"	{
4368e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project			register Char *nmdefptr;
4378e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project			Char *ndlookup();
4388e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project
4398e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project			strcpy( nmstr, yytext + 1 );
4408e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project			nmstr[yyleng - 2] = '\0';  /* chop trailing brace */
4418e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project
4428e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project			if ( (nmdefptr = ndlookup( nmstr )) == 0 )
4438e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project				format_synerr(
4448e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project					_( "undefined definition {%s}" ),
4458e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project						nmstr );
4468e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project
4478e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project			else
4488e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project				{ /* push back name surrounded by ()'s */
4498e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project				int len = strlen( (char *) nmdefptr );
4508e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project
4518e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project				if ( lex_compat || nmdefptr[0] == '^' ||
4528e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project				     (len > 0 && nmdefptr[len - 1] == '$') )
4538e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project					{ /* don't use ()'s after all */
4548e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project					PUT_BACK_STRING((char *) nmdefptr, 0);
4558e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project
4568e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project					if ( nmdefptr[0] == '^' )
4578e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project						BEGIN(CARETISBOL);
4588e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project					}
4598e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project
4608e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project				else
4618e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project					{
4628e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project					unput(')');
4638e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project					PUT_BACK_STRING((char *) nmdefptr, 0);
4648e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project					unput('(');
4658e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project					}
4668e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project				}
4678e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project			}
4688e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project
4698e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project	[/|*+?.(){}]	return (unsigned char) yytext[0];
4708e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project	.		RETURNCHAR;
4718e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project}
4728e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project
4738e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project
4748e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project<SC>{
4758e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project	[,*]		return (unsigned char) yytext[0];
4768e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project	">"		BEGIN(SECT2); return '>';
4778e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project	">"/^		BEGIN(CARETISBOL); return '>';
4788e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project	{SCNAME}	RETURNNAME;
4798e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project	.		{
4808e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project			format_synerr( _( "bad <start condition>: %s" ),
4818e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project				yytext );
4828e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project			}
4838e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project}
4848e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project
4858e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project<CARETISBOL>"^"		BEGIN(SECT2); return '^';
4868e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project
4878e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project
4888e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project<QUOTE>{
4898e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project	[^"\n]		RETURNCHAR;
4908e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project	\"		BEGIN(SECT2); return '"';
4918e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project
4928e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project	{NL}		{
4938e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project			synerr( _( "missing quote" ) );
4948e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project			BEGIN(SECT2);
4958e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project			++linenum;
4968e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project			return '"';
4978e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project			}
4988e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project}
4998e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project
5008e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project
5018e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project<FIRSTCCL>{
5028e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project	"^"/[^-\]\n]	BEGIN(CCL); return '^';
5038e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project	"^"/("-"|"]")	return '^';
5048e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project	.		BEGIN(CCL); RETURNCHAR;
5058e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project}
5068e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project
5078e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project<CCL>{
5088e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project	-/[^\]\n]	return '-';
5098e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project	[^\]\n]		RETURNCHAR;
5108e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project	"]"		BEGIN(SECT2); return ']';
5118e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project	.|{NL}		{
5128e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project			synerr( _( "bad character class" ) );
5138e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project			BEGIN(SECT2);
5148e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project			return ']';
5158e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project			}
5168e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project}
5178e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project
5188e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project<FIRSTCCL,CCL>{
5198e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project	"[:alnum:]"	BEGIN(CCL); return CCE_ALNUM;
5208e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project	"[:alpha:]"	BEGIN(CCL); return CCE_ALPHA;
5218e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project	"[:blank:]"	BEGIN(CCL); return CCE_BLANK;
5228e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project	"[:cntrl:]"	BEGIN(CCL); return CCE_CNTRL;
5238e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project	"[:digit:]"	BEGIN(CCL); return CCE_DIGIT;
5248e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project	"[:graph:]"	BEGIN(CCL); return CCE_GRAPH;
5258e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project	"[:lower:]"	BEGIN(CCL); return CCE_LOWER;
5268e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project	"[:print:]"	BEGIN(CCL); return CCE_PRINT;
5278e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project	"[:punct:]"	BEGIN(CCL); return CCE_PUNCT;
5288e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project	"[:space:]"	BEGIN(CCL); return CCE_SPACE;
5298e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project	"[:upper:]"	BEGIN(CCL); return CCE_UPPER;
5308e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project	"[:xdigit:]"	BEGIN(CCL); return CCE_XDIGIT;
5318e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project	{CCL_EXPR}	{
5328e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project			format_synerr(
5338e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project				_( "bad character class expression: %s" ),
5348e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project					yytext );
5358e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project			BEGIN(CCL); return CCE_ALNUM;
5368e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project			}
5378e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project}
5388e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project
5398e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project<NUM>{
5408e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project	[[:digit:]]+	{
5418e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project			yylval = myctoi( yytext );
5428e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project			return NUMBER;
5438e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project			}
5448e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project
5458e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project	","		return ',';
5468e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project	"}"		BEGIN(SECT2); return '}';
5478e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project
5488e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project	.		{
5498e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project			synerr( _( "bad character inside {}'s" ) );
5508e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project			BEGIN(SECT2);
5518e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project			return '}';
5528e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project			}
5538e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project
5548e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project	{NL}		{
5558e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project			synerr( _( "missing }" ) );
5568e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project			BEGIN(SECT2);
5578e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project			++linenum;
5588e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project			return '}';
5598e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project			}
5608e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project}
5618e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project
5628e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project
5638e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project<PERCENT_BRACE_ACTION>{
5648e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project	{OPTWS}"%}".*		bracelevel = 0;
5658e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project
5668e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project	<ACTION>"/*"		ACTION_ECHO; yy_push_state( COMMENT );
5678e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project
5688e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project	<CODEBLOCK,ACTION>{
5698e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project		"reject"	{
5708e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project			ACTION_ECHO;
5718e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project			CHECK_REJECT(yytext);
5728e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project			}
5738e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project		"yymore"	{
5748e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project			ACTION_ECHO;
5758e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project			CHECK_YYMORE(yytext);
5768e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project			}
5778e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project	}
5788e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project
5798e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project	{NAME}|{NOT_NAME}|.	ACTION_ECHO;
5808e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project	{NL}		{
5818e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project			++linenum;
5828e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project			ACTION_ECHO;
5838e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project			if ( bracelevel == 0 ||
5848e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project			     (doing_codeblock && indented_code) )
5858e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project				{
5868e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project				if ( doing_rule_action )
5878e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project					add_action( "\tYY_BREAK\n" );
5888e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project
5898e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project				doing_rule_action = doing_codeblock = false;
5908e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project				BEGIN(SECT2);
5918e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project				}
5928e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project			}
5938e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project}
5948e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project
5958e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project
5968e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project	/* Reject and YYmore() are checked for above, in PERCENT_BRACE_ACTION */
5978e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project<ACTION>{
5988e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project	"{"		ACTION_ECHO; ++bracelevel;
5998e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project	"}"		ACTION_ECHO; --bracelevel;
6008e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project	[^[:alpha:]_{}"'/\n]+	ACTION_ECHO;
6018e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project	{NAME}		ACTION_ECHO;
6028e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project	"'"([^'\\\n]|\\.)*"'"	ACTION_ECHO; /* character constant */
6038e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project	\"		ACTION_ECHO; BEGIN(ACTION_STRING);
6048e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project	{NL}		{
6058e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project			++linenum;
6068e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project			ACTION_ECHO;
6078e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project			if ( bracelevel == 0 )
6088e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project				{
6098e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project				if ( doing_rule_action )
6108e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project					add_action( "\tYY_BREAK\n" );
6118e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project
6128e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project				doing_rule_action = false;
6138e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project				BEGIN(SECT2);
6148e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project				}
6158e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project			}
6168e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project	.		ACTION_ECHO;
6178e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project}
6188e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project
6198e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project<ACTION_STRING>{
6208e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project	[^"\\\n]+	ACTION_ECHO;
6218e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project	\\.		ACTION_ECHO;
6228e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project	{NL}		++linenum; ACTION_ECHO;
6238e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project	\"		ACTION_ECHO; BEGIN(ACTION);
6248e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project	.		ACTION_ECHO;
6258e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project}
6268e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project
6278e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project<COMMENT,ACTION,ACTION_STRING><<EOF>>	{
6288e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project			synerr( _( "EOF encountered inside an action" ) );
6298e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project			yyterminate();
6308e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project			}
6318e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project
6328e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project
6338e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project<SECT2,QUOTE,FIRSTCCL,CCL>{ESCSEQ}	{
6348e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project			yylval = myesc( (Char *) yytext );
6358e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project
6368e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project			if ( YY_START == FIRSTCCL )
6378e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project				BEGIN(CCL);
6388e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project
6398e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project			return CHAR;
6408e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project			}
6418e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project
6428e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project
6438e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project<SECT3>{
6448e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project	.*(\n?)		ECHO;
6458e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project	<<EOF>>		sectnum = 0; yyterminate();
6468e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project}
6478e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project
6488e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project<*>.|\n			format_synerr( _( "bad character: %s" ), yytext );
6498e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project
6508e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project%%
6518e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project
6528e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project
6538e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Projectint yywrap()
6548e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project	{
6558e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project	if ( --num_input_files > 0 )
6568e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project		{
6578e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project		set_input_file( *++input_files );
6588e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project		return 0;
6598e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project		}
6608e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project
6618e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project	else
6628e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project		return 1;
6638e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project	}
6648e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project
6658e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project
6668e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project/* set_input_file - open the given file (if NULL, stdin) for scanning */
6678e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project
6688e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Projectvoid set_input_file( file )
6698e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Projectchar *file;
6708e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project	{
6718e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project	if ( file && strcmp( file, "-" ) )
6728e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project		{
6738e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project		infilename = copy_string( file );
6748e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project		yyin = fopen( infilename, "r" );
6758e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project
6768e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project		if ( yyin == NULL )
6778e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project			lerrsf( _( "can't open %s" ), file );
6788e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project		}
6798e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project
6808e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project	else
6818e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project		{
6828e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project		yyin = stdin;
6838e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project		infilename = copy_string( "<stdin>" );
6848e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project		}
6858e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project
6868e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project	linenum = 1;
6878e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project	}
6888e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project
6898e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project
6908e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project/* Wrapper routines for accessing the scanner's malloc routines. */
6918e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project
6928e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Projectvoid *flex_alloc( size )
6938e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Projectsize_t size;
6948e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project	{
6958e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project	return (void *) malloc( size );
6968e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project	}
6978e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project
6988e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Projectvoid *flex_realloc( ptr, size )
6998e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Projectvoid *ptr;
7008e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Projectsize_t size;
7018e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project	{
7028e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project	return (void *) realloc( ptr, size );
7038e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project	}
7048e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project
7058e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Projectvoid flex_free( ptr )
7068e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Projectvoid *ptr;
7078e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project	{
7088e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project	if ( ptr )
7098e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project		free( ptr );
7108e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project	}
711