OpenVAS Scanner  22.7.9
nasl_lex_ctxt.h
Go to the documentation of this file.
1 /* SPDX-FileCopyrightText: 2023 Greenbone AG
2  * SPDX-FileCopyrightText: 2002-2003 Michel Arboi
3  * SPDX-FileCopyrightText: 2002-2003 Renaud Deraison
4  *
5  * SPDX-License-Identifier: GPL-2.0-only
6  */
7 
8 #ifndef NASL_NASL_LEX_CTXT_H
9 #define NASL_NASL_LEX_CTXT_H
10 
11 #include <glib.h>
12 
13 /* for tree_cell */
14 #include "nasl_tree.h"
15 
16 /* for nasl_array */
17 #include "nasl_var.h"
18 
19 /* for nasl_func */
20 #include "nasl_func.h"
21 
22 typedef struct struct_lex_ctxt
23 {
25  tree_cell *ret_val; /* return value or exit flag */
26  unsigned fct_ctxt : 1; /* This is a function context */
27  unsigned break_flag : 1; /* Break from loop */
28  unsigned cont_flag : 1; /* Next iteration in loop */
29  unsigned always_signed : 1;
31  const char *oid;
33  int line_nb;
34  /* Named variables hash set + anonymous variables array */
36  /* Functions hash table */
37  GHashTable *functions;
39 
40 #define NASL_COMPAT_LEX_CTXT "NASL compat lex context"
41 
42 lex_ctxt *
43 init_empty_lex_ctxt (void);
44 
45 void
47 
48 void
50 
51 nasl_func *
52 get_func_ref_by_name (lex_ctxt *, const char *);
53 
54 tree_cell *
56 
57 nasl_func *
58 insert_nasl_func (lex_ctxt *, const char *, tree_cell *, int);
59 
60 tree_cell *
62 
63 tree_cell *
64 get_variable_by_name (lex_ctxt *, const char *);
65 
66 tree_cell *
67 get_array_elem (lex_ctxt *, const char * /*array name */, tree_cell *);
68 
71 
73 add_named_var_to_ctxt (lex_ctxt *, const char *, tree_cell *);
74 
75 tree_cell *
77 
78 tree_cell *
79 nasl_incr_variable (lex_ctxt *, tree_cell *, int, int);
80 
81 tree_cell *
83 
84 tree_cell *
86 
87 tree_cell *
89 
90 tree_cell *
92 
93 long int
94 get_int_var_by_num (lex_ctxt *, int, int);
95 
96 char *
98 
99 long int
100 get_int_var_by_name (lex_ctxt *, const char *, int);
101 
102 char *
103 get_str_var_by_name (lex_ctxt *, const char *);
104 
105 int
106 get_var_size_by_name (lex_ctxt *, const char *);
107 
108 int
109 get_var_type_by_name (lex_ctxt *, const char *);
110 
111 int
113 
114 int
116 
117 #endif
get_func_ref_by_name
nasl_func * get_func_ref_by_name(lex_ctxt *, const char *)
Definition: nasl_func.c:82
struct_lex_ctxt::always_signed
unsigned always_signed
Definition: nasl_lex_ctxt.h:29
st_a_nasl_var
Definition: nasl_var.h:40
nasl_return
tree_cell * nasl_return(lex_ctxt *, tree_cell *)
Definition: nasl_func.c:236
struct_lex_ctxt::ctx_vars
nasl_array ctx_vars
Definition: nasl_lex_ctxt.h:35
script_infos
Definition: scanneraux.h:29
struct_lex_ctxt::line_nb
int line_nb
Definition: nasl_lex_ctxt.h:33
get_var_size_by_name
int get_var_size_by_name(lex_ctxt *, const char *)
Definition: nasl_var.c:1138
add_named_var_to_ctxt
named_nasl_var * add_named_var_to_ctxt(lex_ctxt *, const char *, tree_cell *)
Definition: nasl_var.c:813
add_numbered_var_to_ctxt
anon_nasl_var * add_numbered_var_to_ctxt(lex_ctxt *, int, tree_cell *)
Definition: nasl_var.c:784
insert_nasl_func
nasl_func * insert_nasl_func(lex_ctxt *, const char *, tree_cell *, int)
Definition: nasl_func.c:41
struct_lex_ctxt::cont_flag
unsigned cont_flag
Definition: nasl_lex_ctxt.h:28
st_n_nasl_var
Definition: nasl_var.h:55
struct_lex_ctxt::functions
GHashTable * functions
Definition: nasl_lex_ctxt.h:37
st_nasl_func
Definition: nasl_func.h:15
decl_global_variables
tree_cell * decl_global_variables(lex_ctxt *, tree_cell *)
Definition: nasl_var.c:774
decl_nasl_func
tree_cell * decl_nasl_func(lex_ctxt *, tree_cell *, int)
Definition: nasl_func.c:66
nasl_read_var_ref
tree_cell * nasl_read_var_ref(lex_ctxt *, tree_cell *)
Definition: nasl_var.c:835
dump_ctxt
void dump_ctxt(lex_ctxt *)
Definition: nasl_lex_ctxt.c:52
get_str_var_by_name
char * get_str_var_by_name(lex_ctxt *, const char *)
Definition: nasl_var.c:1118
nasl_func_call
tree_cell * nasl_func_call(lex_ctxt *, const nasl_func *, tree_cell *)
Definition: nasl_func.c:95
st_nasl_array
Definition: nasl_var.h:33
struct_lex_ctxt::up_ctxt
struct struct_lex_ctxt * up_ctxt
Definition: nasl_lex_ctxt.h:24
get_var_type_by_name
int get_var_type_by_name(lex_ctxt *, const char *)
Definition: nasl_var.c:1162
struct_lex_ctxt::break_flag
unsigned break_flag
Definition: nasl_lex_ctxt.h:27
struct_lex_ctxt::oid
const char * oid
Definition: nasl_lex_ctxt.h:31
get_int_var_by_name
long int get_int_var_by_name(lex_ctxt *, const char *, int)
Definition: nasl_var.c:1104
struct_lex_ctxt::fct_ctxt
unsigned fct_ctxt
Definition: nasl_lex_ctxt.h:26
nasl_func.h
get_int_var_by_num
long int get_int_var_by_num(lex_ctxt *, int, int)
Definition: nasl_var.c:1097
get_str_var_by_num
char * get_str_var_by_num(lex_ctxt *, int)
Definition: nasl_var.c:1111
struct_lex_ctxt::script_infos
struct script_infos * script_infos
Definition: nasl_lex_ctxt.h:30
get_array_elem
tree_cell * get_array_elem(lex_ctxt *, const char *, tree_cell *)
Definition: nasl_var.c:211
TC
Definition: nasl_tree.h:94
struct_lex_ctxt
Definition: nasl_lex_ctxt.h:23
nasl_var.h
get_var_size_by_num
int get_var_size_by_num(lex_ctxt *, int)
Definition: nasl_var.c:1145
struct_lex_ctxt::recv_timeout
int recv_timeout
Definition: nasl_lex_ctxt.h:32
get_var_type_by_num
int get_var_type_by_num(lex_ctxt *, int)
Returns NASL variable/cell type, VAR2_UNDEF if value is NULL.
Definition: nasl_var.c:1155
nasl_incr_variable
tree_cell * nasl_incr_variable(lex_ctxt *, tree_cell *, int, int)
Definition: nasl_var.c:922
get_variable_by_name
tree_cell * get_variable_by_name(lex_ctxt *, const char *)
Definition: nasl_var.c:179
nasl_tree.h
decl_local_variables
tree_cell * decl_local_variables(lex_ctxt *, tree_cell *)
Definition: nasl_var.c:761
init_empty_lex_ctxt
lex_ctxt * init_empty_lex_ctxt(void)
Definition: nasl_lex_ctxt.c:20
free_lex_ctxt
void free_lex_ctxt(lex_ctxt *)
Definition: nasl_lex_ctxt.c:43
cell2atom
tree_cell * cell2atom(lex_ctxt *, tree_cell *)
Definition: exec.c:194
lex_ctxt
struct struct_lex_ctxt lex_ctxt
struct_lex_ctxt::ret_val
tree_cell * ret_val
Definition: nasl_lex_ctxt.h:25