awk: whitespace and debugging tweaks
Signed-off-by: Denys Vlasenko <vda.linux@googlemail.com>
This commit is contained in:
parent
95fffd8a7f
commit
dabbeeb793
133
editors/awk.c
133
editors/awk.c
@ -199,77 +199,78 @@ typedef struct tsplitter_s {
|
||||
|
||||
/* simple token classes */
|
||||
/* order and hex values are very important!!! See next_token() */
|
||||
#define TC_LPAREN (1 << 0) /* ( */
|
||||
#define TC_RPAREN (1 << 1) /* ) */
|
||||
#define TC_REGEXP (1 << 2) /* /.../ */
|
||||
#define TC_OUTRDR (1 << 3) /* | > >> */
|
||||
#define TC_UOPPOST (1 << 4) /* unary postfix operator ++ -- */
|
||||
#define TC_UOPPRE1 (1 << 5) /* unary prefix operator ++ -- $ */
|
||||
#define TC_BINOPX (1 << 6) /* two-opnd operator */
|
||||
#define TC_IN (1 << 7) /* 'in' */
|
||||
#define TC_COMMA (1 << 8) /* , */
|
||||
#define TC_PIPE (1 << 9) /* input redirection pipe | */
|
||||
#define TC_UOPPRE2 (1 << 10) /* unary prefix operator + - ! */
|
||||
#define TC_ARRTERM (1 << 11) /* ] */
|
||||
#define TC_LBRACE (1 << 12) /* { */
|
||||
#define TC_RBRACE (1 << 13) /* } */
|
||||
#define TC_SEMICOL (1 << 14) /* ; */
|
||||
#define TC_NEWLINE (1 << 15)
|
||||
#define TC_STATX (1 << 16) /* ctl statement (for, next...) */
|
||||
#define TC_WHILE (1 << 17) /* 'while' */
|
||||
#define TC_ELSE (1 << 18) /* 'else' */
|
||||
#define TC_BUILTIN (1 << 19)
|
||||
#define TC_LPAREN (1 << 0) /* ( */
|
||||
#define TC_RPAREN (1 << 1) /* ) */
|
||||
#define TC_REGEXP (1 << 2) /* /.../ */
|
||||
#define TC_OUTRDR (1 << 3) /* | > >> */
|
||||
#define TC_UOPPOST (1 << 4) /* unary postfix operator ++ -- */
|
||||
#define TC_UOPPRE1 (1 << 5) /* unary prefix operator ++ -- $ */
|
||||
#define TC_BINOPX (1 << 6) /* two-opnd operator */
|
||||
#define TC_IN (1 << 7) /* 'in' */
|
||||
#define TC_COMMA (1 << 8) /* , */
|
||||
#define TC_PIPE (1 << 9) /* input redirection pipe | */
|
||||
#define TC_UOPPRE2 (1 << 10) /* unary prefix operator + - ! */
|
||||
#define TC_ARRTERM (1 << 11) /* ] */
|
||||
#define TC_LBRACE (1 << 12) /* { */
|
||||
#define TC_RBRACE (1 << 13) /* } */
|
||||
#define TC_SEMICOL (1 << 14) /* ; */
|
||||
#define TC_NEWLINE (1 << 15)
|
||||
#define TC_STATX (1 << 16) /* ctl statement (for, next...) */
|
||||
#define TC_WHILE (1 << 17) /* 'while' */
|
||||
#define TC_ELSE (1 << 18) /* 'else' */
|
||||
#define TC_BUILTIN (1 << 19)
|
||||
/* This costs ~50 bytes of code.
|
||||
* A separate class to support deprecated "length" form. If we don't need that
|
||||
* (i.e. if we demand that only "length()" with () is valid), then TC_LENGTH
|
||||
* can be merged with TC_BUILTIN:
|
||||
*/
|
||||
#define TC_LENGTH (1 << 20) /* 'length' */
|
||||
#define TC_GETLINE (1 << 21) /* 'getline' */
|
||||
#define TC_FUNCDECL (1 << 22) /* 'function' 'func' */
|
||||
#define TC_BEGIN (1 << 23) /* 'BEGIN' */
|
||||
#define TC_END (1 << 24) /* 'END' */
|
||||
#define TC_EOF (1 << 25)
|
||||
#define TC_VARIABLE (1 << 26) /* name */
|
||||
#define TC_ARRAY (1 << 27) /* name[ */
|
||||
#define TC_FUNCTION (1 << 28) /* name( */
|
||||
#define TC_STRING (1 << 29) /* "..." */
|
||||
#define TC_NUMBER (1 << 30)
|
||||
#define TC_LENGTH (1 << 20) /* 'length' */
|
||||
#define TC_GETLINE (1 << 21) /* 'getline' */
|
||||
#define TC_FUNCDECL (1 << 22) /* 'function' 'func' */
|
||||
#define TC_BEGIN (1 << 23) /* 'BEGIN' */
|
||||
#define TC_END (1 << 24) /* 'END' */
|
||||
#define TC_EOF (1 << 25)
|
||||
#define TC_VARIABLE (1 << 26) /* name */
|
||||
#define TC_ARRAY (1 << 27) /* name[ */
|
||||
#define TC_FUNCTION (1 << 28) /* name( */
|
||||
#define TC_STRING (1 << 29) /* "..." */
|
||||
#define TC_NUMBER (1 << 30)
|
||||
|
||||
#ifndef debug_parse_print_tc
|
||||
#define debug_parse_print_tc(n) do { \
|
||||
if ((n) & TC_LPAREN ) debug_printf_parse(" LPAREN" ); \
|
||||
if ((n) & TC_RPAREN ) debug_printf_parse(" RPAREN" ); \
|
||||
if ((n) & TC_REGEXP ) debug_printf_parse(" REGEXP" ); \
|
||||
if ((n) & TC_OUTRDR ) debug_printf_parse(" OUTRDR" ); \
|
||||
if ((n) & TC_UOPPOST ) debug_printf_parse(" UOPPOST" ); \
|
||||
if ((n) & TC_UOPPRE1 ) debug_printf_parse(" UOPPRE1" ); \
|
||||
if ((n) & TC_BINOPX ) debug_printf_parse(" BINOPX" ); \
|
||||
if ((n) & TC_IN ) debug_printf_parse(" IN" ); \
|
||||
if ((n) & TC_COMMA ) debug_printf_parse(" COMMA" ); \
|
||||
if ((n) & TC_PIPE ) debug_printf_parse(" PIPE" ); \
|
||||
if ((n) & TC_UOPPRE2 ) debug_printf_parse(" UOPPRE2" ); \
|
||||
if ((n) & TC_ARRTERM ) debug_printf_parse(" ARRTERM" ); \
|
||||
if ((n) & TC_LBRACE ) debug_printf_parse(" LBRACE" ); \
|
||||
if ((n) & TC_RBRACE ) debug_printf_parse(" RBRACE" ); \
|
||||
if ((n) & TC_SEMICOL ) debug_printf_parse(" SEMICOL" ); \
|
||||
if ((n) & TC_NEWLINE ) debug_printf_parse(" NEWLINE" ); \
|
||||
if ((n) & TC_STATX ) debug_printf_parse(" STATX" ); \
|
||||
if ((n) & TC_WHILE ) debug_printf_parse(" WHILE" ); \
|
||||
if ((n) & TC_ELSE ) debug_printf_parse(" ELSE" ); \
|
||||
if ((n) & TC_BUILTIN ) debug_printf_parse(" BUILTIN" ); \
|
||||
if ((n) & TC_LENGTH ) debug_printf_parse(" LENGTH" ); \
|
||||
if ((n) & TC_GETLINE ) debug_printf_parse(" GETLINE" ); \
|
||||
if ((n) & TC_FUNCDECL) debug_printf_parse(" FUNCDECL"); \
|
||||
if ((n) & TC_BEGIN ) debug_printf_parse(" BEGIN" ); \
|
||||
if ((n) & TC_END ) debug_printf_parse(" END" ); \
|
||||
if ((n) & TC_EOF ) debug_printf_parse(" EOF" ); \
|
||||
if ((n) & TC_VARIABLE) debug_printf_parse(" VARIABLE"); \
|
||||
if ((n) & TC_ARRAY ) debug_printf_parse(" ARRAY" ); \
|
||||
if ((n) & TC_FUNCTION) debug_printf_parse(" FUNCTION"); \
|
||||
if ((n) & TC_STRING ) debug_printf_parse(" STRING" ); \
|
||||
if ((n) & TC_NUMBER ) debug_printf_parse(" NUMBER" ); \
|
||||
} while (0)
|
||||
static void debug_parse_print_tc(uint32_t n)
|
||||
{
|
||||
if (n & TC_LPAREN ) debug_printf_parse(" LPAREN" );
|
||||
if (n & TC_RPAREN ) debug_printf_parse(" RPAREN" );
|
||||
if (n & TC_REGEXP ) debug_printf_parse(" REGEXP" );
|
||||
if (n & TC_OUTRDR ) debug_printf_parse(" OUTRDR" );
|
||||
if (n & TC_UOPPOST ) debug_printf_parse(" UOPPOST" );
|
||||
if (n & TC_UOPPRE1 ) debug_printf_parse(" UOPPRE1" );
|
||||
if (n & TC_BINOPX ) debug_printf_parse(" BINOPX" );
|
||||
if (n & TC_IN ) debug_printf_parse(" IN" );
|
||||
if (n & TC_COMMA ) debug_printf_parse(" COMMA" );
|
||||
if (n & TC_PIPE ) debug_printf_parse(" PIPE" );
|
||||
if (n & TC_UOPPRE2 ) debug_printf_parse(" UOPPRE2" );
|
||||
if (n & TC_ARRTERM ) debug_printf_parse(" ARRTERM" );
|
||||
if (n & TC_LBRACE ) debug_printf_parse(" LBRACE" );
|
||||
if (n & TC_RBRACE ) debug_printf_parse(" RBRACE" );
|
||||
if (n & TC_SEMICOL ) debug_printf_parse(" SEMICOL" );
|
||||
if (n & TC_NEWLINE ) debug_printf_parse(" NEWLINE" );
|
||||
if (n & TC_STATX ) debug_printf_parse(" STATX" );
|
||||
if (n & TC_WHILE ) debug_printf_parse(" WHILE" );
|
||||
if (n & TC_ELSE ) debug_printf_parse(" ELSE" );
|
||||
if (n & TC_BUILTIN ) debug_printf_parse(" BUILTIN" );
|
||||
if (n & TC_LENGTH ) debug_printf_parse(" LENGTH" );
|
||||
if (n & TC_GETLINE ) debug_printf_parse(" GETLINE" );
|
||||
if (n & TC_FUNCDECL) debug_printf_parse(" FUNCDECL");
|
||||
if (n & TC_BEGIN ) debug_printf_parse(" BEGIN" );
|
||||
if (n & TC_END ) debug_printf_parse(" END" );
|
||||
if (n & TC_EOF ) debug_printf_parse(" EOF" );
|
||||
if (n & TC_VARIABLE) debug_printf_parse(" VARIABLE");
|
||||
if (n & TC_ARRAY ) debug_printf_parse(" ARRAY" );
|
||||
if (n & TC_FUNCTION) debug_printf_parse(" FUNCTION");
|
||||
if (n & TC_STRING ) debug_printf_parse(" STRING" );
|
||||
if (n & TC_NUMBER ) debug_printf_parse(" NUMBER" );
|
||||
}
|
||||
#endif
|
||||
|
||||
/* combined token classes ("token [class] sets") */
|
||||
@ -417,7 +418,7 @@ static const char tokenlist[] ALIGN1 =
|
||||
"\5close" "\6system" "\6fflush" "\5atan2"
|
||||
"\3cos" "\3exp" "\3int" "\3log"
|
||||
"\4rand" "\3sin" "\4sqrt" "\5srand"
|
||||
"\6gensub" "\4gsub" "\5index" /* "\6length" was here */
|
||||
"\6gensub" "\4gsub" "\5index" /* "\6length" was here */
|
||||
"\5match" "\5split" "\7sprintf" "\3sub"
|
||||
"\6substr" "\7systime" "\10strftime" "\6mktime"
|
||||
"\7tolower" "\7toupper" NTC
|
||||
@ -1802,7 +1803,6 @@ static void parse_program(char *p)
|
||||
} /* for (;;) */
|
||||
}
|
||||
|
||||
|
||||
/* -------- program execution part -------- */
|
||||
|
||||
/* temporary variables allocator */
|
||||
@ -3510,7 +3510,6 @@ static var *evaluate(node *op, var *res)
|
||||
#undef sreg
|
||||
}
|
||||
|
||||
|
||||
/* -------- main & co. -------- */
|
||||
|
||||
static int awk_exit(void)
|
||||
|
Loading…
Reference in New Issue
Block a user