diff options
Diffstat (limited to 'wiretap/ct-grammar.y')
-rw-r--r-- | wiretap/ct-grammar.y | 149 |
1 files changed, 0 insertions, 149 deletions
diff --git a/wiretap/ct-grammar.y b/wiretap/ct-grammar.y deleted file mode 100644 index 5841e5c737..0000000000 --- a/wiretap/ct-grammar.y +++ /dev/null @@ -1,149 +0,0 @@ -%{ - -#include <stdlib.h> -#include <stdio.h> -#include "ct-compile.h" - -#include "config.h" - -#ifdef HAVE_GLIB10 -#include "glib-new.h" -#endif - -struct field_info working_field; -gchar *current_protocol = NULL; -char *full_field_name = NULL; - -%} - -%union { - gint d; - GString *s; - GSList *a; -} - -%type <s> sentence protocol -%type <a> parents text_list - -%token <s> TEXT PROTOCOL PARENTS QUOTED -%token <d> NUMBER BOOLEAN ETHER UINT8 UINT16 UINT32 BYTE -%token FIELD ALIAS -%token AND_MASK BYTE_OFFSET EITHER_OF - -%% - -paragraph: /* EMPTY */ - | paragraph sentence - ; - -sentence: protocol -{ - if (current_protocol) - free(current_protocol); - current_protocol = g_strdup($1->str); -} - | parents -{ - g_print("sentence Got parents %d\n", g_slist_length($1)); -} - | alias { } - | field { } - ; - -protocol: PROTOCOL TEXT QUOTED ';' -{ - protocol_layer_add($2->str, $3->str); - $$ = $2; -} - ; - -parents: PARENTS text_list ';' -{ - $$ = $2; - g_slist_free($2); -} - ; - -alias: ALIAS TEXT text_list ';' -{ - full_field_name = g_strjoin(".", current_protocol, $2->str, NULL); - field_info_add_alias(full_field_name, $3); - g_free(full_field_name); -} - - -field: FIELD TEXT QUOTED ',' field_type ',' field_location ';' -{ - working_field.name = g_strjoin(".", current_protocol, $2->str, NULL); - working_field.short_name = g_strdup($2->str); - working_field.description = g_strdup($3->str); - - field_info_add(&working_field, current_protocol); - field_info_zero(&working_field); -} - - -field_type: BOOLEAN -{ - working_field.field_type = FTYPE_BOOLEAN; - working_field.length = FLEN_BOOLEAN; -} - | ETHER -{ - working_field.field_type = FTYPE_ETHER; - working_field.length = FLEN_ETHER; -} - | UINT8 -{ - working_field.field_type = FTYPE_UINT8; - working_field.length = FLEN_UINT8; -} - | UINT16 -{ - working_field.field_type = FTYPE_UINT16; - working_field.length = FLEN_UINT16; -} - | UINT32 -{ - working_field.field_type = FTYPE_UINT32; - working_field.length = FLEN_UINT32; -} - | BYTE '[' NUMBER ']' -{ - working_field.field_type = FTYPE_BYTE; - working_field.length = $3; -} - ; - -field_location: AND_MASK '(' NUMBER '@' NUMBER ')' -{ - working_field.computation_type = CTYPE_ANDMASK; - working_field.value = $3; - working_field.offset = $5; -} - | BYTE_OFFSET '(' NUMBER ')' -{ - working_field.computation_type = CTYPE_BYTECMP; - working_field.offset = $3; -} - | EITHER_OF '(' text_list ')' -{ - working_field.computation_type = CTYPE_EITHEROF; - working_field.many_list = field_info_list($3, current_protocol); - g_slist_free($3); -} - - ; - -text_list: TEXT -{ - $$ = g_slist_alloc(); - g_slist_append($$, $1); -} - | text_list ',' TEXT -{ - $$ = $1; - g_slist_append($$, $3); -} - - ; |