File: parser.ih

package info (click to toggle)
yodl 4.04.00-1
  • links: PTS, VCS
  • area: main
  • in suites: forky, sid, trixie
  • size: 4,720 kB
  • sloc: ansic: 7,803; perl: 683; cpp: 570; sh: 411; xml: 190; makefile: 164
file content (92 lines) | stat: -rw-r--r-- 3,337 bytes parent folder | download | duplicates (4)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
#include "parser.h"

#include <unistd.h>
#include <ctype.h>

#include "../config.h"

#include "../new/new.h"
#include "../builtin/builtin.h"
#include "../yodl/global.h"
#include "../args/args.h"
#include "../file/file.h"
#include "../counter/counter.h"
#include "../message/message.h"
#include "../macro/macro.h"
#include "../symbol/symbol.h"

typedef struct Term
{
    char const *text;
    int value;
    int binop;              // + or -
    Result result;
}
Term;    

bool    p_atexit(Parser *pp);
void    p_begin_nested(Parser *pp,  HANDLER_SET_ELEMENTS newSet);
void    p_compute(register Parser *pp, Term *term);
void    p_default_symbol(Parser *pp, bool plusPrefix, SymbolType notUsed);
char   *p_end_nested(Parser *pp,  HANDLER_SET_ELEMENTS newSet);
void    p_expand_macro(Parser *pp, HashItem *item);

bool    p_handle_insert(Parser *pp);                /* insert matched text  */

bool    p_handle_default_eof(Parser *pp);           /* return false       F */
bool    p_handle_default_newline(Parser *pp);       /* series of \n's       */
bool    p_handle_default_plus(Parser *pp);          /* handle + series      */
bool    p_handle_default_symbol(Parser *pp);        /* handle all symbols   */

bool    p_handle_ignore(Parser *pp);                /* ignores token        */
bool    p_handle_ignore_closepar(Parser *pp);       /* handle openpar       */
bool    p_handle_ignore_openpar(Parser *pp);        /* handle openpar       */

bool    p_handle_noexpand_plus(Parser *pp);         /* handle + series      */
bool    p_handle_noexpand_symbol(Parser *pp);       /* handle exec'ed       */
                                                    /* symbols in NOEXPAND  */

bool    p_handle_parlist_closepar(Parser *pp);      /* handle closepar      */
bool    p_handle_parlist_openpar(Parser *pp);       /* handle openpar       */

bool    p_handle_skipws_unget(Parser *pp);          /* unget rec'ved text F */

bool    p_handle_unexpected_eof(Parser *pp);        /* EMERG exit           */
bool    p_handle_unknown(Parser *pp);               /* emergency exit       */

void    p_insert_chartab_ostream(Parser *pp, char const *txt);
void    p_insert_chartab_string(Parser *pp, char const *txt);
void    p_insert_no_chartab_ostream(Parser *pp, char const *txt);
void    p_insert_no_chartab_string(Parser *pp, char const *txt);
void    p_insert_nothing(Parser *pp, char const *txt);

void    p_macro_args(Parser *pp, String *definition, size_t argc);

char const *p_handler(Parser *pp);                  /* active handler name */

void    p_no_user_macro(register Parser *pp);

void    p_paragraph(Parser *pp, String const *sp);
void    p_parlist_symbol(Parser *pp, bool plusPrefix, SymbolType mask);
void    p_parse(Parser *pp);

bool    p_plus_series(Parser *pp, void (*symbol)(Parser *, bool, SymbolType),
                        SymbolType mask);
void    p_setupHandlerSet(void);
void    p_value(register Parser *pp, Term *term);
bool    p_valueOf(Parser *pp, int *value, char const *txt);

extern bool
    (*ps_handlerSet[SIZEOF_HANDLER_SET_ELEMENTS][SIZEOF_TOKEN])(Parser *);


static inline char const *p_matched(register Parser *parserPtr)
{
    return lexer_text(&parserPtr->d_lexer);
}

static inline char const *p_fun()                   /* top of ps_fun_st     */
{
    return stack_tos(&ps_fun_st)->u_charCp;
}