aboutsummaryrefslogtreecommitdiffstats
path: root/dfilter-grammar.y
diff options
context:
space:
mode:
Diffstat (limited to 'dfilter-grammar.y')
-rw-r--r--dfilter-grammar.y51
1 files changed, 22 insertions, 29 deletions
diff --git a/dfilter-grammar.y b/dfilter-grammar.y
index 52f83e0c3f..cb9444ee8f 100644
--- a/dfilter-grammar.y
+++ b/dfilter-grammar.y
@@ -3,7 +3,7 @@
/* dfilter-grammar.y
* Parser for display filters
*
- * $Id: dfilter-grammar.y,v 1.4 1999/08/02 06:34:23 gram Exp $
+ * $Id: dfilter-grammar.y,v 1.5 1999/08/03 15:04:25 gram Exp $
*
* Ethereal - Network traffic analyzer
* By Gerald Combs <gerald@zing.org>
@@ -112,7 +112,7 @@ GSList *dfilter_list_byte_arrays = NULL;
%type <node> ether_value ether_variable
%type <node> ipxnet_value ipxnet_variable
%type <node> ipv4_value ipv4_variable
-%type <node> protocol_name
+%type <node> variable_name
%type <node> bytes_value bytes_variable
%type <node> boolean_value boolean_variable
@@ -121,7 +121,6 @@ GSList *dfilter_list_byte_arrays = NULL;
%type <operand> bytes_relation
%type <variable> any_variable_type
-%type <operand> exists_operand
%token <variable> T_FT_UINT8
%token <variable> T_FT_UINT16
@@ -134,14 +133,13 @@ GSList *dfilter_list_byte_arrays = NULL;
%token <variable> T_FT_STRING
%token <variable> T_FT_IPXNET
-%token <id> T_VAL_ID
+%token <id> T_VAL_UNQUOTED_STRING
%token <ether> T_VAL_ETHER
%token <bytes> T_VAL_BYTES
%token <byte_range> T_VAL_BYTE_RANGE
%token <operand> TOK_AND TOK_OR TOK_NOT TOK_XOR
%token <operand> TOK_EQ TOK_NE TOK_GT TOK_GE TOK_LT TOK_LE
-%token <operand> TOK_EXIST
%token <operand> TOK_TRUE TOK_FALSE
%left TOK_AND
@@ -161,9 +159,10 @@ statement: expression
expression: '(' expression ')' { $$ = $2; }
| expression TOK_AND expression { $$ = dfilter_mknode_join($1, logical, $2, $3); }
| expression TOK_OR expression { $$ = dfilter_mknode_join($1, logical, $2, $3); }
+ | expression TOK_XOR expression { $$ = dfilter_mknode_join($1, logical, $2, $3); }
| TOK_NOT expression { $$ = dfilter_mknode_unary(TOK_NOT, $2); }
| relation { $$ = $1; }
- | protocol_name { $$ = $1; }
+ | variable_name { $$ = $1; }
;
relation: numeric_variable numeric_relation numeric_value
@@ -221,12 +220,10 @@ relation: numeric_variable numeric_relation numeric_value
$$ = dfilter_mknode_join($1, relation, $2, $3);
}
- | exists_operand any_variable_type { $$ = dfilter_mknode_existence($2); }
-
;
-numeric_value: T_VAL_ID
+numeric_value: T_VAL_UNQUOTED_STRING
{
$$ = dfilter_mknode_numeric_value(string_to_value($1));
g_free($1);
@@ -239,13 +236,13 @@ ether_value: T_VAL_ETHER
}
;
-ipxnet_value: T_VAL_ID
+ipxnet_value: T_VAL_UNQUOTED_STRING
{
$$ = dfilter_mknode_ipxnet_value(string_to_value($1));
}
;
-ipv4_value: T_VAL_ID
+ipv4_value: T_VAL_UNQUOTED_STRING
{
$$ = dfilter_mknode_ipv4_value($1);
g_free($1);
@@ -257,7 +254,7 @@ bytes_value: T_VAL_BYTES
$$ = dfilter_mknode_bytes_value($1);
}
- | T_VAL_ID
+ | T_VAL_UNQUOTED_STRING
{ /* one byte */
GByteArray *barray = g_byte_array_new();
guint8 val;
@@ -300,7 +297,7 @@ ipxnet_variable: T_FT_IPXNET { $$ = dfilter_mknode_ipxnet_variable($1); }
ipv4_variable: T_FT_IPv4 { $$ = dfilter_mknode_ipv4_variable($1); }
;
-protocol_name: T_FT_NONE { $$ = dfilter_mknode_existence($1); }
+variable_name: any_variable_type { $$ = dfilter_mknode_existence($1); }
;
bytes_variable: any_variable_type T_VAL_BYTE_RANGE
@@ -323,26 +320,22 @@ any_variable_type: T_FT_UINT8 { $$ = $1; }
| T_FT_STRING { $$ = $1; }
;
-numeric_relation: TOK_EQ { $$ = $1; }
- | TOK_NE { $$ = $1; }
- | TOK_GT { $$ = $1; }
- | TOK_GE { $$ = $1; }
- | TOK_LT { $$ = $1; }
- | TOK_LE { $$ = $1; }
- ;
-
-equality_relation: TOK_EQ { $$ = $1; }
- | TOK_NE { $$ = $1; }
+numeric_relation: TOK_EQ { $$ = TOK_EQ; }
+ | TOK_NE { $$ = TOK_NE; }
+ | TOK_GT { $$ = TOK_GT; }
+ | TOK_GE { $$ = TOK_GE; }
+ | TOK_LT { $$ = TOK_LT; }
+ | TOK_LE { $$ = TOK_LE; }
;
-bytes_relation: TOK_EQ { $$ = $1; }
- | TOK_NE { $$ = $1; }
- | TOK_GT { $$ = $1; }
- | TOK_LT { $$ = $1; }
+equality_relation: TOK_EQ { $$ = TOK_EQ; }
+ | TOK_NE { $$ = TOK_NE; }
;
-exists_operand: TOK_EXIST { $$ = $1; }
- | '?' { $$ = TOK_EXIST; }
+bytes_relation: TOK_EQ { $$ = TOK_EQ; }
+ | TOK_NE { $$ = TOK_NE; }
+ | TOK_GT { $$ = TOK_GT; }
+ | TOK_LT { $$ = TOK_LT; }
;
%%