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