1 |
/* GNU m4 -- A simple macro processor |
/* GNU m4 -- A simple macro processor |
2 |
|
|
3 |
Copyright (C) 1989, 1990, 1991, 1992, 1993, 1994, 2000, 2004 Free |
Copyright (C) 1989, 1990, 1991, 1992, 1993, 1994, 2000, 2004 |
4 |
Software Foundation, Inc. |
Free Software Foundation, Inc. |
5 |
|
|
6 |
This program is free software; you can redistribute it and/or modify |
This program is free software; you can redistribute it and/or modify |
7 |
it under the terms of the GNU General Public License as published by |
it under the terms of the GNU General Public License as published by |
8 |
the Free Software Foundation; either version 2, or (at your option) |
the Free Software Foundation; either version 2 of the License, or |
9 |
any later version. |
(at your option) any later version. |
10 |
|
|
11 |
This program is distributed in the hope that it will be useful, |
This program is distributed in the hope that it will be useful, |
12 |
but WITHOUT ANY WARRANTY; without even the implied warranty of |
but WITHOUT ANY WARRANTY; without even the implied warranty of |
13 |
MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the |
MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the |
14 |
GNU General Public License for more details. |
GNU General Public License for more details. |
15 |
|
|
16 |
You should have received a copy of the GNU General Public License |
You should have received a copy of the GNU General Public License |
17 |
along with this program; if not, write to the Free Software |
along with this program; if not, write to the Free Software |
18 |
Foundation, Inc., 675 Mass Ave, Cambridge, MA 02139, USA. |
Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA |
19 |
|
02110-1301 USA |
20 |
*/ |
*/ |
21 |
|
|
22 |
/* Code for all builtin macros, initialisation of symbol table, and |
/* Code for all builtin macros, initialisation of symbol table, and |
387 |
|
|
388 |
/* The rest of this file is code for builtins and expansion of user |
/* The rest of this file is code for builtins and expansion of user |
389 |
defined macros. All the functions for builtins have a prototype as: |
defined macros. All the functions for builtins have a prototype as: |
390 |
|
|
391 |
void m4_MACRONAME (struct obstack *obs, int argc, char *argv[]); |
void m4_MACRONAME (struct obstack *obs, int argc, char *argv[]); |
392 |
|
|
393 |
The function are expected to leave their expansion on the obstack OBS, |
The function are expected to leave their expansion on the obstack OBS, |
394 |
as an unfinished object. ARGV is a table of ARGC pointers to the |
as an unfinished object. ARGV is a table of ARGC pointers to the |
395 |
individual arguments to the macro. Please note that in general |
individual arguments to the macro. Please note that in general |
1524 |
break; |
break; |
1525 |
|
|
1526 |
case '1': case '2': case '3': case '4': case '5': case '6': |
case '1': case '2': case '3': case '4': case '5': case '6': |
1527 |
case '7': case '8': case '9': |
case '7': case '8': case '9': |
1528 |
ch -= '0'; |
ch -= '0'; |
1529 |
if (regs->end[ch] > 0) |
if (regs->end[ch] > 0) |
1530 |
obstack_grow (obs, victim + regs->start[ch], |
obstack_grow (obs, victim + regs->start[ch], |