mirror of
https://git.proxmox.com/git/mirror_frr
synced 2025-08-14 16:04:49 +00:00
lib: parser: reorder bison incarnations
This shuffles the code blocks in command_parser.y to match file output order, then adjusts things to make the include handling less messy. (also dropped unused DECIMAL_STRLEN_MAX define.) This should hopefully fix the build on NetBSD 6. Signed-off-by: David Lamparter <equinox@opensourcerouting.org>
This commit is contained in:
parent
4a06690fca
commit
afc3a6ceb6
@ -24,7 +24,6 @@
|
|||||||
|
|
||||||
%{
|
%{
|
||||||
#include "command_parse.h"
|
#include "command_parse.h"
|
||||||
#define YYSTYPE CMD_YYSTYPE
|
|
||||||
%}
|
%}
|
||||||
|
|
||||||
WORD (\-|\+)?[a-z\*][-+_a-zA-Z0-9\*]*
|
WORD (\-|\+)?[a-z\*][-+_a-zA-Z0-9\*]*
|
||||||
|
@ -23,11 +23,6 @@
|
|||||||
*/
|
*/
|
||||||
|
|
||||||
%{
|
%{
|
||||||
|
|
||||||
typedef union CMD_YYSTYPE CMD_YYSTYPE;
|
|
||||||
#define YYSTYPE CMD_YYSTYPE
|
|
||||||
#include "command_lex.h"
|
|
||||||
|
|
||||||
// compile with debugging facilities
|
// compile with debugging facilities
|
||||||
#define YYDEBUG 1
|
#define YYDEBUG 1
|
||||||
%}
|
%}
|
||||||
@ -39,7 +34,13 @@ typedef union CMD_YYSTYPE CMD_YYSTYPE;
|
|||||||
%defines "command_parse.h"
|
%defines "command_parse.h"
|
||||||
%output "command_parse.c"
|
%output "command_parse.c"
|
||||||
|
|
||||||
/* required external units */
|
/* note: code blocks are output in order, to both .c and .h:
|
||||||
|
* 1. %code requires
|
||||||
|
* 2. %union + bison forward decls
|
||||||
|
* 3. %code provides
|
||||||
|
* command_lex.h needs to be included at 3.; it needs the union and YYSTYPE.
|
||||||
|
* struct parser_ctx is needed for the bison forward decls.
|
||||||
|
*/
|
||||||
%code requires {
|
%code requires {
|
||||||
#include "stdlib.h"
|
#include "stdlib.h"
|
||||||
#include "string.h"
|
#include "string.h"
|
||||||
@ -47,6 +48,25 @@ typedef union CMD_YYSTYPE CMD_YYSTYPE;
|
|||||||
#include "log.h"
|
#include "log.h"
|
||||||
#include "graph.h"
|
#include "graph.h"
|
||||||
|
|
||||||
|
#define YYSTYPE CMD_YYSTYPE
|
||||||
|
struct parser_ctx;
|
||||||
|
}
|
||||||
|
|
||||||
|
%union {
|
||||||
|
long long number;
|
||||||
|
char *string;
|
||||||
|
struct graph_node *node;
|
||||||
|
struct subgraph *subgraph;
|
||||||
|
}
|
||||||
|
|
||||||
|
%code provides {
|
||||||
|
#ifndef FLEX_SCANNER
|
||||||
|
#include "command_lex.h"
|
||||||
|
#endif
|
||||||
|
|
||||||
|
extern void set_lexer_string (yyscan_t *scn, const char *string);
|
||||||
|
extern void cleanup_lexer (yyscan_t *scn);
|
||||||
|
|
||||||
struct parser_ctx {
|
struct parser_ctx {
|
||||||
yyscan_t scanner;
|
yyscan_t scanner;
|
||||||
|
|
||||||
@ -58,23 +78,6 @@ typedef union CMD_YYSTYPE CMD_YYSTYPE;
|
|||||||
/* pointers to copy of command docstring */
|
/* pointers to copy of command docstring */
|
||||||
char *docstr_start, *docstr;
|
char *docstr_start, *docstr;
|
||||||
};
|
};
|
||||||
|
|
||||||
extern void set_lexer_string (yyscan_t *scn, const char *string);
|
|
||||||
extern void cleanup_lexer (yyscan_t *scn);
|
|
||||||
}
|
|
||||||
|
|
||||||
/* functionality this unit exports */
|
|
||||||
%code provides {
|
|
||||||
/* maximum length of a number, lexer will not match anything longer */
|
|
||||||
#define DECIMAL_STRLEN_MAX 20
|
|
||||||
}
|
|
||||||
|
|
||||||
/* valid semantic types for tokens and rules */
|
|
||||||
%union {
|
|
||||||
long long number;
|
|
||||||
char *string;
|
|
||||||
struct graph_node *node;
|
|
||||||
struct subgraph *subgraph;
|
|
||||||
}
|
}
|
||||||
|
|
||||||
/* union types for lexed tokens */
|
/* union types for lexed tokens */
|
||||||
|
Loading…
Reference in New Issue
Block a user