Rev 2714 | Only display areas with differences | Ignore whitespace | Details | Blame | Last modification | View Log | RSS feed
Rev 2714 | Rev 3240 | ||
---|---|---|---|
1 | # $NetBSD: nodetypes,v 1.9 1999/02/04 16:17:39 christos Exp $ |
1 | # $NetBSD: nodetypes,v 1.9 1999/02/04 16:17:39 christos Exp $ |
2 | # Copyright (c) 1991, 1993 |
2 | # Copyright (c) 1991, 1993 |
3 | # The Regents of the University of California. All rights reserved. |
3 | # The Regents of the University of California. All rights reserved. |
4 | # |
4 | # |
5 | # This code is derived from software contributed to Berkeley by |
5 | # This code is derived from software contributed to Berkeley by |
6 | # Kenneth Almquist. |
6 | # Kenneth Almquist. |
7 | # |
7 | # |
8 | # Redistribution and use in source and binary forms, with or without |
8 | # Redistribution and use in source and binary forms, with or without |
9 | # modification, are permitted provided that the following conditions |
9 | # modification, are permitted provided that the following conditions |
10 | # are met: |
10 | # are met: |
11 | # 1. Redistributions of source code must retain the above copyright |
11 | # 1. Redistributions of source code must retain the above copyright |
12 | # notice, this list of conditions and the following disclaimer. |
12 | # notice, this list of conditions and the following disclaimer. |
13 | # 2. Redistributions in binary form must reproduce the above copyright |
13 | # 2. Redistributions in binary form must reproduce the above copyright |
14 | # notice, this list of conditions and the following disclaimer in the |
14 | # notice, this list of conditions and the following disclaimer in the |
15 | # documentation and/or other materials provided with the distribution. |
15 | # documentation and/or other materials provided with the distribution. |
16 | # 3. All advertising materials mentioning features or use of this software |
16 | # 3. All advertising materials mentioning features or use of this software |
17 | # must display the following acknowledgement: |
17 | # must display the following acknowledgement: |
18 | # This product includes software developed by the University of |
18 | # This product includes software developed by the University of |
19 | # California, Berkeley and its contributors. |
19 | # California, Berkeley and its contributors. |
20 | # 4. Neither the name of the University nor the names of its contributors |
20 | # 4. Neither the name of the University nor the names of its contributors |
21 | # may be used to endorse or promote products derived from this software |
21 | # may be used to endorse or promote products derived from this software |
22 | # without specific prior written permission. |
22 | # without specific prior written permission. |
23 | # |
23 | # |
24 | # THIS SOFTWARE IS PROVIDED BY THE REGENTS AND CONTRIBUTORS ``AS IS'' AND |
24 | # THIS SOFTWARE IS PROVIDED BY THE REGENTS AND CONTRIBUTORS ``AS IS'' AND |
25 | # ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE |
25 | # ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE |
26 | # IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE |
26 | # IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE |
27 | # ARE DISCLAIMED. IN NO EVENT SHALL THE REGENTS OR CONTRIBUTORS BE LIABLE |
27 | # ARE DISCLAIMED. IN NO EVENT SHALL THE REGENTS OR CONTRIBUTORS BE LIABLE |
28 | # FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL |
28 | # FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL |
29 | # DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS |
29 | # DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS |
30 | # OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) |
30 | # OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) |
31 | # HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT |
31 | # HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT |
32 | # LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY |
32 | # LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY |
33 | # OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF |
33 | # OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF |
34 | # SUCH DAMAGE. |
34 | # SUCH DAMAGE. |
35 | # |
35 | # |
36 | # @(#)nodetypes 8.2 (Berkeley) 5/4/95 |
36 | # @(#)nodetypes 8.2 (Berkeley) 5/4/95 |
37 | 37 | ||
38 | # This file describes the nodes used in parse trees. Unindented lines |
38 | # This file describes the nodes used in parse trees. Unindented lines |
39 | # contain a node type followed by a structure tag. Subsequent indented |
39 | # contain a node type followed by a structure tag. Subsequent indented |
40 | # lines specify the fields of the structure. Several node types can share |
40 | # lines specify the fields of the structure. Several node types can share |
41 | # the same structure, in which case the fields of the structure should be |
41 | # the same structure, in which case the fields of the structure should be |
42 | # specified only once. |
42 | # specified only once. |
43 | # |
43 | # |
44 | # A field of a structure is described by the name of the field followed |
44 | # A field of a structure is described by the name of the field followed |
45 | # by a type. The currently implemented types are: |
45 | # by a type. The currently implemented types are: |
46 | # nodeptr - a pointer to a node |
46 | # nodeptr - a pointer to a node |
47 | # nodelist - a pointer to a list of nodes |
47 | # nodelist - a pointer to a list of nodes |
48 | # string - a pointer to a nul terminated string |
48 | # string - a pointer to a nul terminated string |
49 | # int - an integer |
49 | # int - an integer |
50 | # other - any type that can be copied by assignment |
50 | # other - any type that can be copied by assignment |
51 | # temp - a field that doesn't have to be copied when the node is copied |
51 | # temp - a field that doesn't have to be copied when the node is copied |
52 | # The last two types should be followed by the text of a C declaration for |
52 | # The last two types should be followed by the text of a C declaration for |
53 | # the field. |
53 | # the field. |
54 | 54 | ||
55 | NSEMI nbinary # two commands separated by a semicolon |
55 | NSEMI nbinary # two commands separated by a semicolon |
56 | type int |
56 | type int |
57 | ch1 nodeptr # the first child |
57 | ch1 nodeptr # the first child |
58 | ch2 nodeptr # the second child |
58 | ch2 nodeptr # the second child |
59 | 59 | ||
60 | NCMD ncmd # a simple command |
60 | NCMD ncmd # a simple command |
61 | type int |
61 | type int |
62 | backgnd int # set to run command in background |
62 | backgnd int # set to run command in background |
63 | args nodeptr # the arguments |
63 | args nodeptr # the arguments |
64 | redirect nodeptr # list of file redirections |
64 | redirect nodeptr # list of file redirections |
65 | 65 | ||
66 | NPIPE npipe # a pipeline |
66 | NPIPE npipe # a pipeline |
67 | type int |
67 | type int |
68 | backgnd int # set to run pipeline in background |
68 | backgnd int # set to run pipeline in background |
69 | cmdlist nodelist # the commands in the pipeline |
69 | cmdlist nodelist # the commands in the pipeline |
70 | 70 | ||
71 | NREDIR nredir # redirection (of a compex command) |
71 | NREDIR nredir # redirection (of a compex command) |
72 | type int |
72 | type int |
73 | n nodeptr # the command |
73 | n nodeptr # the command |
74 | redirect nodeptr # list of file redirections |
74 | redirect nodeptr # list of file redirections |
75 | 75 | ||
76 | NBACKGND nredir # run command in background |
76 | NBACKGND nredir # run command in background |
77 | NSUBSHELL nredir # run command in a subshell |
77 | NSUBSHELL nredir # run command in a subshell |
78 | 78 | ||
79 | NAND nbinary # the && operator |
79 | NAND nbinary # the && operator |
80 | NOR nbinary # the || operator |
80 | NOR nbinary # the || operator |
81 | 81 | ||
82 | NIF nif # the if statement. Elif clauses are handled |
82 | NIF nif # the if statement. Elif clauses are handled |
83 | type int # using multiple if nodes. |
83 | type int # using multiple if nodes. |
84 | test nodeptr # if test |
84 | test nodeptr # if test |
85 | ifpart nodeptr # then ifpart |
85 | ifpart nodeptr # then ifpart |
86 | elsepart nodeptr # else elsepart |
86 | elsepart nodeptr # else elsepart |
87 | 87 | ||
88 | NWHILE nbinary # the while statement. First child is the test |
88 | NWHILE nbinary # the while statement. First child is the test |
89 | NUNTIL nbinary # the until statement |
89 | NUNTIL nbinary # the until statement |
90 | 90 | ||
91 | NFOR nfor # the for statement |
91 | NFOR nfor # the for statement |
92 | type int |
92 | type int |
93 | args nodeptr # for var in args |
93 | args nodeptr # for var in args |
94 | body nodeptr # do body; done |
94 | body nodeptr # do body; done |
95 | var string # the for variable |
95 | var string # the for variable |
96 | 96 | ||
97 | NCASE ncase # a case statement |
97 | NCASE ncase # a case statement |
98 | type int |
98 | type int |
99 | expr nodeptr # the word to switch on |
99 | expr nodeptr # the word to switch on |
100 | cases nodeptr # the list of cases (NCLIST nodes) |
100 | cases nodeptr # the list of cases (NCLIST nodes) |
101 | 101 | ||
102 | NCLIST nclist # a case |
102 | NCLIST nclist # a case |
103 | type int |
103 | type int |
104 | next nodeptr # the next case in list |
104 | next nodeptr # the next case in list |
105 | pattern nodeptr # list of patterns for this case |
105 | pattern nodeptr # list of patterns for this case |
106 | body nodeptr # code to execute for this case |
106 | body nodeptr # code to execute for this case |
107 | 107 | ||
108 | 108 | ||
109 | NDEFUN narg # define a function. The "next" field contains |
109 | NDEFUN narg # define a function. The "next" field contains |
110 | # the body of the function. |
110 | # the body of the function. |
111 | 111 | ||
112 | NARG narg # represents a word |
112 | NARG narg # represents a word |
113 | type int |
113 | type int |
114 | next nodeptr # next word in list |
114 | next nodeptr # next word in list |
115 | text string # the text of the word |
115 | text string # the text of the word |
116 | backquote nodelist # list of commands in back quotes |
116 | backquote nodelist # list of commands in back quotes |
117 | 117 | ||
118 | NTO nfile # fd> fname |
118 | NTO nfile # fd> fname |
119 | NFROM nfile # fd< fname |
119 | NFROM nfile # fd< fname |
120 | NFROMTO nfile # fd<> fname |
120 | NFROMTO nfile # fd<> fname |
121 | NAPPEND nfile # fd>> fname |
121 | NAPPEND nfile # fd>> fname |
122 | NTOOV nfile # fd>| fname |
122 | NTOOV nfile # fd>| fname |
123 | type int |
123 | type int |
124 | next nodeptr # next redirection in list |
124 | next nodeptr # next redirection in list |
125 | fd int # file descriptor being redirected |
125 | fd int # file descriptor being redirected |
126 | fname nodeptr # file name, in a NARG node |
126 | fname nodeptr # file name, in a NARG node |
127 | expfname temp char *expfname # actual file name |
127 | expfname temp char *expfname # actual file name |
128 | 128 | ||
129 | NTOFD ndup # fd<&dupfd |
129 | NTOFD ndup # fd<&dupfd |
130 | NFROMFD ndup # fd>&dupfd |
130 | NFROMFD ndup # fd>&dupfd |
131 | type int |
131 | type int |
132 | next nodeptr # next redirection in list |
132 | next nodeptr # next redirection in list |
133 | fd int # file descriptor being redirected |
133 | fd int # file descriptor being redirected |
134 | dupfd int # file descriptor to duplicate |
134 | dupfd int # file descriptor to duplicate |
135 | vname nodeptr # file name if fd>&$var |
135 | vname nodeptr # file name if fd>&$var |
136 | 136 | ||
137 | 137 | ||
138 | NHERE nhere # fd<<\! |
138 | NHERE nhere # fd<<\! |
139 | NXHERE nhere # fd<<! |
139 | NXHERE nhere # fd<<! |
140 | type int |
140 | type int |
141 | next nodeptr # next redirection in list |
141 | next nodeptr # next redirection in list |
142 | fd int # file descriptor being redirected |
142 | fd int # file descriptor being redirected |
143 | doc nodeptr # input to command (NARG node) |
143 | doc nodeptr # input to command (NARG node) |
144 | 144 | ||
145 | NNOT nnot # ! command (actually pipeline) |
145 | NNOT nnot # ! command (actually pipeline) |
146 | type int |
146 | type int |
147 | com nodeptr |
147 | com nodeptr |
148 | 148 |