bug-bison
[Top][All Lists]
Advanced

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

Re: Bison/flex compatibility revisited


From: Bruce Lilly
Subject: Re: Bison/flex compatibility revisited
Date: Tue, 25 Feb 2003 12:07:47 -0500
User-agent: Mozilla/5.0 (X11; U; Linux i686; en-US; rv:1.2.1) Gecko/20021130

Paul Eggert wrote:

So, not only is Bison is within its rights to use local variables
beginning with yy, it's _required_ to use yy (or YY).

It is a tricky situation, since POSIX also places constraints on lex
about yy symbols.  Anyway, I've worked around this particular instance
of the problem by renaming yylineno to yylno in the Bison CVS.

Thanks.

Yes, it's indeed tricky.

OK, so for future use, how about something less likely to clash,
e.g. yy_bison_ as a prefix?

FYI, as of now the complete list (unless I missed some) of yy and
YY prefixed names used by the flex-generated header is:

YYFARGS0 YYFARGS1 YYFARGS2 YYFARGS3 YYLMAX YYLTYPE YYLTYPE_IS_DECLARED
YYSTATE YYSTYPE YY_ALWAYS_INTERACTIVE YY_AT_BOL YY_BISON_BRIDGE
YY_BREAK YY_BUFFER_EOF_PENDING YY_BUFFER_NEW YY_BUFFER_NORMAL
YY_BUFFER_STATE YY_BUF_SIZE YY_CALL_LAST_ARG YY_CALL_ONLY_ARG
YY_CURRENT_BUFFER YY_DECL YY_DECL_LAST_ARG YY_DEF_LAST_ARG YY_DEF_ONLY_ARG
YY_DO_BEFORE_ACTION YY_END_OF_BUFFER YY_END_OF_BUFFER_CHAR YY_EXIT_FAILURE
YY_HEADER_EXPORT_START_CONDITIONS YY_EXTRA_TYPE YY_FATAL_ERROR
YY_FLEX_DEFINED_ECHO YY_FLEX_LEX_COMPAT YY_FLEX_MAJOR_VERSION
YY_FLEX_MINOR_VERSION YY_FLEX_SUBMINOR_VERSION YY_FLUSH_BUFFER YY_G
YY_HEADER_NO_UNDEFS YY_INPUT YY_INTERACTIVE YY_INT_ALIGNED YY_LAST_ARG
YY_LESS_LINENO YY_LEX_ARGS YY_LEX_DECLARATION YY_LEX_PROTO YY_MAIN YY_MORE_ADJ
YY_NEED_STRLEN YY_NEW_FILE YY_NO_DESTROY YY_NO_FLEX_ALLOC YY_NO_FLEX_FREE
YY_NO_FLEX_REALLOC YY_NO_GET_DEBUG YY_NO_GET_EXTRA YY_NO_GET_IN YY_NO_GET_LENG
YY_NO_GET_LINENO YY_NO_GET_LLOC YY_NO_GET_LVAL YY_NO_GET_OUT YY_NO_GET_TEXT
YY_NO_INPUT YY_NO_POP_STATE YY_NO_PROTOS YY_NO_PUSH_STATE YY_NO_SCAN_BUFFER
YY_NO_SCAN_BYTES YY_NO_SCAN_STRING YY_NO_SET_DEBUG YY_NO_SET_EXTRA
YY_NO_SET_IN YY_NO_SET_LINENO YY_NO_SET_LLOC YY_NO_SET_LVAL YY_NO_SET_OUT
YY_NO_TOP_STATE YY_NO_UNISTD_H YY_NO_UNPUT YY_NULL YY_NUM_RULES YY_ONLY_ARG
YY_PARAMS YY_PROTO YY_PROTO_LAST_ARG YY_PROTO_ONLY_ARG YY_READ_BUF_SIZE
YY_REENTRANT YY_RESTORE_YY_MORE_OFFSET YY_RULE_SETUP YY_SC_TO_UI
YY_SKIP_YYWRAP YY_STACK_USED YY_START YY_START_STACK_INCR YY_STATE_EOF
YY_STDINIT YY_STRUCT_YY_BUFFER_STATE YY_TABLES_VERIFY YY_TEXT_IS_ARRAY
YY_TRADITIONAL_FUNC_DEFS YY_TRAILING_HEAD_MASK YY_TRAILING_MASK
YY_TYPEDEF_YY_BUFFER_STATE YY_TYPEDEF_YY_SIZE_T YY_USER_ACTION YY_USES_REJECT
YY_USE_CONST YY_USE_LINENO YY_USE_PROTOS yy_buffer_state yy_create_buffer
yy_current_buffer yy_delete_buffer yy_flex_debug yy_flex_strlen
yy_flex_strncpy yy_flush_buffer yy_init_buffer yy_load_buffer_state
yy_new_buffer yy_scan_buffer yy_scan_bytes yy_scan_string yy_set_bol
yy_set_interactive yy_size_t yy_switch_to_buffer yyalloc yyconst yyextra
yyfree yyget_debug yyget_extra yyget_in yyget_leng yyget_lineno yyget_lloc
yyget_lval yyget_out yyget_text yyin yyleng yyless yylex yylex_destroy
yylex_init yylineno yylloc yyllocp yylval yylvalp yymore yyout yyrealloc
yyrestart yyscan_t yyscanner yyset_debug yyset_extra yyset_in yyset_lineno
yyset_lloc yyset_lval yyset_out yyterminate yytext yytext_ptr yywrap

Of those, certainly the yylex prototype and yylex macro (in case
flex uses a prefix to change that to something like foolex) are
necessary since bison calls yylex (or whatever prefix-altered
name is used), and the others come along for the ride.

Best regards,
  Bruce Lilly





reply via email to

[Prev in Thread] Current Thread [Next in Thread]