mirror of
https://github.com/zeek/zeek.git
synced 2025-10-08 17:48:21 +00:00
Adapt BiF & Bro parser to handle opaque types.
This commit is contained in:
parent
622190b4ef
commit
23ca1c90ef
4 changed files with 22 additions and 21 deletions
|
@ -74,6 +74,8 @@ HEX [0-9a-fA-F]+
|
|||
"set" return check_c_mode(TOK_SET);
|
||||
"table" return check_c_mode(TOK_TABLE);
|
||||
"vector" return check_c_mode(TOK_VECTOR);
|
||||
"of" return check_c_mode(TOK_OF);
|
||||
"opaque" return check_c_mode(TOK_OPAQUE);
|
||||
"module" return check_c_mode(TOK_MODULE);
|
||||
|
||||
"@ARG@" return TOK_ARG;
|
||||
|
|
|
@ -269,15 +269,15 @@ void print_event_c_body(FILE *fp)
|
|||
|
||||
%token TOK_LPP TOK_RPP TOK_LPB TOK_RPB TOK_LPPB TOK_RPPB TOK_VAR_ARG
|
||||
%token TOK_BOOL
|
||||
%token TOK_FUNCTION TOK_EVENT TOK_CONST TOK_ENUM
|
||||
%token TOK_TYPE TOK_RECORD TOK_SET TOK_VECTOR TOK_TABLE TOK_MODULE
|
||||
%token TOK_FUNCTION TOK_EVENT TOK_CONST TOK_ENUM TOK_OF
|
||||
%token TOK_TYPE TOK_RECORD TOK_SET TOK_VECTOR TOK_OPAQUE TOK_TABLE TOK_MODULE
|
||||
%token TOK_ARGS TOK_ARG TOK_ARGC
|
||||
%token TOK_ID TOK_ATTR TOK_CSTR TOK_LF TOK_WS TOK_COMMENT
|
||||
%token TOK_ATOM TOK_INT TOK_C_TOKEN
|
||||
|
||||
%left ',' ':'
|
||||
|
||||
%type <str> TOK_C_TOKEN TOK_ID TOK_CSTR TOK_WS TOK_COMMENT TOK_ATTR TOK_INT opt_ws
|
||||
%type <str> TOK_C_TOKEN TOK_ID TOK_CSTR TOK_WS TOK_COMMENT TOK_ATTR TOK_INT opt_ws type
|
||||
%type <val> TOK_ATOM TOK_BOOL
|
||||
|
||||
%union {
|
||||
|
@ -584,7 +584,17 @@ args_1: args_1 ',' opt_ws arg opt_ws
|
|||
{ /* empty */ }
|
||||
;
|
||||
|
||||
arg: TOK_ID opt_ws ':' opt_ws TOK_ID
|
||||
// TODO: Migrate all other compound types to this rule. Once the BiF language
|
||||
// can parse all regular Bro types, we can throw out the unnecessary
|
||||
// boilerplate typedefs for addr_set, string_set, etc.
|
||||
type:
|
||||
TOK_OPAQUE opt_ws TOK_OF opt_ws TOK_ID
|
||||
{ $$ = concat("opaque of ", $5); }
|
||||
| TOK_ID
|
||||
{ $$ = $1; }
|
||||
;
|
||||
|
||||
arg: TOK_ID opt_ws ':' opt_ws type
|
||||
{ args.push_back(new BuiltinFuncArg($1, $5)); }
|
||||
| TOK_VAR_ARG
|
||||
{
|
||||
|
@ -594,7 +604,7 @@ arg: TOK_ID opt_ws ':' opt_ws TOK_ID
|
|||
}
|
||||
;
|
||||
|
||||
return_type: ':' opt_ws TOK_ID opt_ws
|
||||
return_type: ':' opt_ws type opt_ws
|
||||
{
|
||||
BuiltinFuncArg* ret = new BuiltinFuncArg("", $3);
|
||||
ret->PrintBro(fp_bro_init);
|
||||
|
|
16
src/parse.y
16
src/parse.y
|
@ -11,12 +11,11 @@
|
|||
%token TOK_DOUBLE TOK_ELSE TOK_ENUM TOK_EVENT TOK_EXPORT TOK_FILE TOK_FOR
|
||||
%token TOK_FUNCTION TOK_GLOBAL TOK_HOOK TOK_ID TOK_IF TOK_INT
|
||||
%token TOK_INTERVAL TOK_LIST TOK_LOCAL TOK_MODULE
|
||||
%token TOK_NEXT TOK_OF TOK_PATTERN TOK_PATTERN_TEXT
|
||||
%token TOK_NEXT TOK_OF TOK_OPAQUE TOK_PATTERN TOK_PATTERN_TEXT
|
||||
%token TOK_PORT TOK_PRINT TOK_RECORD TOK_REDEF
|
||||
%token TOK_REMOVE_FROM TOK_RETURN TOK_SCHEDULE TOK_SET
|
||||
%token TOK_STRING TOK_SUBNET TOK_SWITCH TOK_TABLE
|
||||
%token TOK_TIME TOK_TIMEOUT TOK_TIMER TOK_TYPE TOK_UNION TOK_VECTOR TOK_WHEN
|
||||
%token TOK_OPAQUE TOK_OPAQUE_MD5 TOK_OPAQUE_HYPERLOGLOG
|
||||
|
||||
%token TOK_ATTR_ADD_FUNC TOK_ATTR_ATTR TOK_ATTR_ENCRYPT TOK_ATTR_DEFAULT
|
||||
%token TOK_ATTR_OPTIONAL TOK_ATTR_REDEF TOK_ATTR_ROTATE_INTERVAL
|
||||
|
@ -47,7 +46,7 @@
|
|||
%left '$' '[' ']' '(' ')' TOK_HAS_FIELD TOK_HAS_ATTR
|
||||
|
||||
%type <b> opt_no_test opt_no_test_block
|
||||
%type <str> TOK_ID TOK_PATTERN_TEXT single_pattern TOK_DOC TOK_POST_DOC opaque_id
|
||||
%type <str> TOK_ID TOK_PATTERN_TEXT single_pattern TOK_DOC TOK_POST_DOC
|
||||
%type <str_l> opt_doc_list opt_post_doc_list
|
||||
%type <id> local_id global_id def_global_id event_id global_or_event_id resolve_id begin_func
|
||||
%type <id_l> local_id_list
|
||||
|
@ -890,10 +889,10 @@ type:
|
|||
$$ = new FileType(base_type(TYPE_STRING));
|
||||
}
|
||||
|
||||
| TOK_OPAQUE TOK_OF opaque_id
|
||||
| TOK_OPAQUE TOK_OF TOK_ID
|
||||
{
|
||||
set_location(@1, @3);
|
||||
$$ = new OpaqueType(@3);
|
||||
$$ = new OpaqueType($3);
|
||||
}
|
||||
|
||||
| resolve_id
|
||||
|
@ -910,13 +909,6 @@ type:
|
|||
}
|
||||
;
|
||||
|
||||
opaque_id:
|
||||
TOK_OPAQUE_MD5
|
||||
{ }
|
||||
| TOK_OPAQUE_HYPERLOGLOG
|
||||
{ }
|
||||
;
|
||||
|
||||
type_list:
|
||||
type_list ',' type
|
||||
{ $1->AppendEvenIfNotPure($3); }
|
||||
|
|
|
@ -298,6 +298,7 @@ local return TOK_LOCAL;
|
|||
module return TOK_MODULE;
|
||||
next return TOK_NEXT;
|
||||
of return TOK_OF;
|
||||
opaque return TOK_OPAQUE;
|
||||
pattern return TOK_PATTERN;
|
||||
port return TOK_PORT;
|
||||
print return TOK_PRINT;
|
||||
|
@ -318,10 +319,6 @@ union return TOK_UNION;
|
|||
vector return TOK_VECTOR;
|
||||
when return TOK_WHEN;
|
||||
|
||||
opaque return TOK_OPAQUE;
|
||||
md5 return TOK_OPAQUE_MD5;
|
||||
hyper-log-log return TOK_OPAQUE_HYPERLOGLOG;
|
||||
|
||||
&add_func return TOK_ATTR_ADD_FUNC;
|
||||
&attr return TOK_ATTR_ATTR;
|
||||
&create_expire return TOK_ATTR_EXPIRE_CREATE;
|
||||
|
|
Loading…
Add table
Add a link
Reference in a new issue