globus_rsl 11.3
Loading...
Searching...
No Matches
globus_i_rsl_parser.h
1/*
2 * Copyright 1999-2006 University of Chicago
3 *
4 * Licensed under the Apache License, Version 2.0 (the "License");
5 * you may not use this file except in compliance with the License.
6 * You may obtain a copy of the License at
7 *
8 * http://www.apache.org/licenses/LICENSE-2.0
9 *
10 * Unless required by applicable law or agreed to in writing, software
11 * distributed under the License is distributed on an "AS IS" BASIS,
12 * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
13 * See the License for the specific language governing permissions and
14 * limitations under the License.
15 */
16
17#ifndef GLOBUS_I_RSL_PARSER_H
18#define GLOBUS_I_RSL_PARSER_H
19
20#include "globus_common.h"
21
22/* the scanner matches left and right-parens by
23 * introducing a new counter at the beginning of each
24 * variable reference expression. this allows it to
25 * detect the terminating right-paren of the variable reference
26 * and check whether the enjambed implicit-concatenation
27 * syntax is being used. it then restores the previous
28 * paren counter and keeps going (to recognize the end
29 * of any enclosing variable reference expression).
30 */
31typedef struct paren_count_stack_elem_s
32{
33 int count;
34}
35paren_count_stack_elem_t;
36
37typedef struct
38globus_parse_state_s
39{
40 char *myinput;
41 char *myinputptr;
42 char *myinputlim;
43 globus_rsl_t *rsl_spec;
44 globus_rsl_parse_error_t *error_structure;
45 int globus_parse_error_flag;
46 int calling_state;
47 char quote_delimiter;
48 globus_fifo_t *quote_text_fifo;
49/* manipulate this list as stack...
50 * introduced as a list rather than an abstract-data-type
51 * so we can simply init it here as the constant NULL. */
52 globus_list_t *paren_count_stack;
53} globus_parse_state_t;
54
55extern
56int
57globus_i_rsl_yyinput(globus_parse_state_t *parse_state, char *buf, yy_size_t *num_read, int max_size);
58
59#endif /* GLOBUS_I_RSL_PARSER_H */