Modified YACC grammar to use non-yy symbols, to avoid conflicts with
libpcap's that were compiled with symbols beginning with 'yy'. svn path=/trunk/; revision=487
This commit is contained in:
parent
6572382f9a
commit
8030084e93
|
@ -4,7 +4,8 @@ man_MANS = ethereal.1
|
|||
|
||||
sysconf_DATA = manuf
|
||||
|
||||
YFLAGS=-d
|
||||
# Any POSIX-compatible YACC should honor the -p flag
|
||||
YFLAGS=-d -p dfilter_
|
||||
|
||||
ethereal_SOURCES = \
|
||||
alignment.h \
|
||||
|
|
|
@ -3,7 +3,7 @@
|
|||
/* dfilter-grammar.y
|
||||
* Parser for display filters
|
||||
*
|
||||
* $Id: dfilter-grammar.y,v 1.9 1999/08/13 23:47:39 gram Exp $
|
||||
* $Id: dfilter-grammar.y,v 1.10 1999/08/14 06:24:26 gram Exp $
|
||||
*
|
||||
* Ethereal - Network traffic analyzer
|
||||
* By Gerald Combs <gerald@zing.org>
|
||||
|
@ -25,8 +25,6 @@
|
|||
* Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA.
|
||||
*/
|
||||
|
||||
#define yylex dfilter_lex
|
||||
|
||||
#ifdef HAVE_CONFIG_H
|
||||
#include "config.h"
|
||||
#endif
|
||||
|
@ -43,7 +41,7 @@
|
|||
#include <glib.h>
|
||||
#endif
|
||||
|
||||
#include <string.h> /* during testing */
|
||||
#include <string.h>
|
||||
|
||||
#ifndef _STDLIB_H
|
||||
#include <stdlib.h>
|
||||
|
|
|
@ -3,7 +3,7 @@
|
|||
/* dfilter-scanner.l
|
||||
* Scanner for display filters
|
||||
*
|
||||
* $Id: dfilter-scanner.l,v 1.7 1999/08/13 23:47:40 gram Exp $
|
||||
* $Id: dfilter-scanner.l,v 1.8 1999/08/14 06:24:27 gram Exp $
|
||||
*
|
||||
* Ethereal - Network traffic analyzer
|
||||
* By Gerald Combs <gerald@zing.org>
|
||||
|
@ -96,19 +96,19 @@ hexsep [-:\.]
|
|||
[\t\n ]+ /* ignore whitespace */
|
||||
|
||||
|
||||
and|\&\& { yylval.operand = TOK_AND; return TOK_AND; }
|
||||
or|\|\| { yylval.operand = TOK_OR; return TOK_OR; }
|
||||
not|\! { yylval.operand = TOK_NOT; return TOK_NOT; }
|
||||
xor|\^\^ { yylval.operand = TOK_XOR; return TOK_XOR; }
|
||||
eq|\=\= { yylval.operand = TOK_EQ; return TOK_EQ; }
|
||||
ne|\!\= { yylval.operand = TOK_NE; return TOK_NE; }
|
||||
gt|\> { yylval.operand = TOK_GT; return TOK_GT; }
|
||||
ge|\>\= { yylval.operand = TOK_GE; return TOK_GE; }
|
||||
lt|\< { yylval.operand = TOK_LT; return TOK_LT; }
|
||||
le|\<\= { yylval.operand = TOK_LE; return TOK_LE; }
|
||||
and|\&\& { dfilter_lval.operand = TOK_AND; return TOK_AND; }
|
||||
or|\|\| { dfilter_lval.operand = TOK_OR; return TOK_OR; }
|
||||
not|\! { dfilter_lval.operand = TOK_NOT; return TOK_NOT; }
|
||||
xor|\^\^ { dfilter_lval.operand = TOK_XOR; return TOK_XOR; }
|
||||
eq|\=\= { dfilter_lval.operand = TOK_EQ; return TOK_EQ; }
|
||||
ne|\!\= { dfilter_lval.operand = TOK_NE; return TOK_NE; }
|
||||
gt|\> { dfilter_lval.operand = TOK_GT; return TOK_GT; }
|
||||
ge|\>\= { dfilter_lval.operand = TOK_GE; return TOK_GE; }
|
||||
lt|\< { dfilter_lval.operand = TOK_LT; return TOK_LT; }
|
||||
le|\<\= { dfilter_lval.operand = TOK_LE; return TOK_LE; }
|
||||
|
||||
true { yylval.operand = TOK_TRUE; return TOK_TRUE; }
|
||||
false { yylval.operand = TOK_FALSE; return TOK_FALSE; }
|
||||
true { dfilter_lval.operand = TOK_TRUE; return TOK_TRUE; }
|
||||
false { dfilter_lval.operand = TOK_FALSE; return TOK_FALSE; }
|
||||
|
||||
\[{whitespace}*-?[0-9]+{whitespace}*:{whitespace}*[0-9]+{whitespace}*\] { /* range [ x : y ] */
|
||||
|
||||
|
@ -118,7 +118,7 @@ false { yylval.operand = TOK_FALSE; return TOK_FALSE; }
|
|||
|
||||
/* Get the offset from the string */
|
||||
if ((p = strtok(s, ":"))) {
|
||||
yylval.byte_range.offset = strtol(p, NULL, 10);
|
||||
dfilter_lval.byte_range.offset = strtol(p, NULL, 10);
|
||||
}
|
||||
else {
|
||||
g_free(byterange_string);
|
||||
|
@ -127,7 +127,7 @@ false { yylval.operand = TOK_FALSE; return TOK_FALSE; }
|
|||
|
||||
/* Get the Length from the string */
|
||||
if ((p = strtok(NULL, "]"))) {
|
||||
yylval.byte_range.length = strtoul(p, NULL, 10);
|
||||
dfilter_lval.byte_range.length = strtoul(p, NULL, 10);
|
||||
}
|
||||
else {
|
||||
g_free(byterange_string);
|
||||
|
@ -140,38 +140,38 @@ false { yylval.operand = TOK_FALSE; return TOK_FALSE; }
|
|||
|
||||
({hex}{hexsep}){1,2}{hex} { /* small byte array */
|
||||
|
||||
yylval.bytes = byte_str_to_guint8_array(yytext);
|
||||
dfilter_lval.bytes = byte_str_to_guint8_array(yytext);
|
||||
return T_VAL_BYTES;
|
||||
}
|
||||
|
||||
({hex}{hexsep}){3}{hex} { /* possibly IPv4 address (e.g., 0.0.0.0) */
|
||||
|
||||
yylval.id = g_strdup(yytext);
|
||||
dfilter_lval.id = g_strdup(yytext);
|
||||
return T_VAL_UNQUOTED_STRING;
|
||||
}
|
||||
|
||||
({hex}{hexsep}){4}{hex} { /* small byte array */
|
||||
|
||||
yylval.bytes = byte_str_to_guint8_array(yytext);
|
||||
dfilter_lval.bytes = byte_str_to_guint8_array(yytext);
|
||||
return T_VAL_BYTES;
|
||||
}
|
||||
|
||||
({hex}{hexsep}){5}{hex} { /* possibly Ether Hardware Address */
|
||||
|
||||
/* it's faster to copy six bytes to yylval than to create a GByteArray
|
||||
/* it's faster to copy six bytes to dfilter_lval than to create a GByteArray
|
||||
* structure and append 6 bytes. That means I'll have to handle this
|
||||
* overloaded meaning of 6 bytes == 1 ether in the parser (what happens
|
||||
* when a T_VAL_ETHER is passed when an expression expects a T_VAL_BYTES?),
|
||||
* but the speed of processing T_VAL_ETHER's makes up for the added
|
||||
* complexity.
|
||||
*/
|
||||
ether_str_to_guint8_array(yytext, yylval.ether);
|
||||
ether_str_to_guint8_array(yytext, dfilter_lval.ether);
|
||||
return T_VAL_ETHER;
|
||||
}
|
||||
|
||||
({hex}{hexsep}){6,}{hex} { /* large byte array */
|
||||
|
||||
yylval.bytes = byte_str_to_guint8_array(yytext);
|
||||
dfilter_lval.bytes = byte_str_to_guint8_array(yytext);
|
||||
return T_VAL_BYTES;
|
||||
}
|
||||
|
||||
|
@ -179,13 +179,13 @@ false { yylval.operand = TOK_FALSE; return TOK_FALSE; }
|
|||
|
||||
int retval = 0;
|
||||
enum ftenum ftype;
|
||||
yylval.variable = dfilter_lookup_token(yytext);
|
||||
if (yylval.variable == 0) {
|
||||
yylval.id = g_strdup(yytext);
|
||||
dfilter_lval.variable = dfilter_lookup_token(yytext);
|
||||
if (dfilter_lval.variable == 0) {
|
||||
dfilter_lval.id = g_strdup(yytext);
|
||||
return T_VAL_UNQUOTED_STRING;
|
||||
}
|
||||
|
||||
ftype = proto_registrar_get_ftype(yylval.variable);
|
||||
ftype = proto_registrar_get_ftype(dfilter_lval.variable);
|
||||
switch (ftype) {
|
||||
case FT_UINT8:
|
||||
case FT_VALS_UINT8:
|
||||
|
@ -227,18 +227,18 @@ false { yylval.operand = TOK_FALSE; return TOK_FALSE; }
|
|||
}
|
||||
|
||||
[0-9]+ { /* decimal or octal values */
|
||||
yylval.id = g_strdup(yytext);
|
||||
dfilter_lval.id = g_strdup(yytext);
|
||||
return T_VAL_UNQUOTED_STRING;
|
||||
}
|
||||
|
||||
|
||||
0[xX][A-Fa-f0-9]+ { /* hex values */
|
||||
yylval.id = g_strdup(yytext);
|
||||
dfilter_lval.id = g_strdup(yytext);
|
||||
return T_VAL_UNQUOTED_STRING;
|
||||
}
|
||||
|
||||
[0-9\:\.]+ {
|
||||
yylval.id = g_strdup(yytext);
|
||||
dfilter_lval.id = g_strdup(yytext);
|
||||
return T_VAL_UNQUOTED_STRING;
|
||||
}
|
||||
|
||||
|
|
11
dfilter.c
11
dfilter.c
|
@ -1,7 +1,7 @@
|
|||
/* dfilter.c
|
||||
* Routines for display filters
|
||||
*
|
||||
* $Id: dfilter.c,v 1.9 1999/08/13 23:47:40 gram Exp $
|
||||
* $Id: dfilter.c,v 1.10 1999/08/14 06:24:27 gram Exp $
|
||||
*
|
||||
* Ethereal - Network traffic analyzer
|
||||
* By Gerald Combs <gerald@zing.org>
|
||||
|
@ -53,7 +53,7 @@
|
|||
#include "dfilter-int.h"
|
||||
#include "dfilter-grammar.h"
|
||||
|
||||
int yyparse(void); /* yacc entry-point */
|
||||
int dfilter_parse(void); /* yacc entry-point */
|
||||
|
||||
#define DFILTER_LEX_ABBREV_OFFSET 2000
|
||||
|
||||
|
@ -126,7 +126,7 @@ dfilter_compile(dfilter *df, gchar *dfilter_text)
|
|||
global_df = df;
|
||||
|
||||
/* The magic happens right here. */
|
||||
retval = yyparse();
|
||||
retval = dfilter_parse();
|
||||
|
||||
/* clean up lex */
|
||||
dfilter_scanner_cleanup();
|
||||
|
@ -209,7 +209,7 @@ clear_byte_array(gpointer data, gpointer user_data)
|
|||
}
|
||||
|
||||
void
|
||||
yyerror(char *s)
|
||||
dfilter_error(char *s)
|
||||
{
|
||||
/* fprintf(stderr, "%s\n", s);
|
||||
Do not report the error, just let yyparse() return 1 */
|
||||
|
@ -218,8 +218,9 @@ yyerror(char *s)
|
|||
void
|
||||
dfilter_yyerror(char *fmt, ...)
|
||||
{
|
||||
/* XXX - is this cool? check for mem leak */
|
||||
global_df->dftree = NULL;
|
||||
yyerror(fmt);
|
||||
dfilter_error(fmt);
|
||||
}
|
||||
|
||||
/* lookup an abbreviation in our token tree, returing the ID #
|
||||
|
|
Loading…
Reference in New Issue