[BACK]Return to nodetypes CVS log [TXT][DIR] Up to [cvs.NetBSD.org] / src / bin / sh

Annotation of src/bin/sh/nodetypes, Revision 1.8

1.7       cgd         1: #      $NetBSD$
1.4       jtc         2: # Copyright (c) 1991, 1993
                      3: #      The Regents of the University of California.  All rights reserved.
1.1       cgd         4: #
                      5: # This code is derived from software contributed to Berkeley by
                      6: # Kenneth Almquist.
                      7: #
                      8: # Redistribution and use in source and binary forms, with or without
                      9: # modification, are permitted provided that the following conditions
                     10: # are met:
                     11: # 1. Redistributions of source code must retain the above copyright
                     12: #    notice, this list of conditions and the following disclaimer.
                     13: # 2. Redistributions in binary form must reproduce the above copyright
                     14: #    notice, this list of conditions and the following disclaimer in the
                     15: #    documentation and/or other materials provided with the distribution.
                     16: # 3. All advertising materials mentioning features or use of this software
                     17: #    must display the following acknowledgement:
                     18: #      This product includes software developed by the University of
                     19: #      California, Berkeley and 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
                     22: #    without specific prior written permission.
                     23: #
                     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
                     26: # IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE
                     27: # ARE DISCLAIMED.  IN NO EVENT SHALL THE REGENTS OR CONTRIBUTORS BE LIABLE
                     28: # FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL
                     29: # DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS
                     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
                     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
                     34: # SUCH DAMAGE.
                     35: #
1.8     ! christos   36: #      @(#)nodetypes   8.2 (Berkeley) 5/4/95
1.1       cgd        37:
                     38: # This file describes the nodes used in parse trees.  Unindented lines
                     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
                     41: # the same structure, in which case the fields of the structure should be
                     42: # specified only once.
                     43: #
                     44: # A field of a structure is described by the name of the field followed
                     45: # by a type.  The currently implemented types are:
                     46: #      nodeptr - a pointer to a node
                     47: #      nodelist - a pointer to a list of nodes
                     48: #      string - a pointer to a nul terminated string
                     49: #      int - an integer
                     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
                     52: # The last two types should be followed by the text of a C declaration for
                     53: # the field.
                     54:
                     55: NSEMI nbinary                  # two commands separated by a semicolon
                     56:        type      int
                     57:        ch1       nodeptr               # the first child
                     58:        ch2       nodeptr               # the second child
                     59:
                     60: NCMD ncmd                      # a simple command
                     61:        type      int
                     62:        backgnd   int                   # set to run command in background
                     63:        args      nodeptr               # the arguments
                     64:        redirect  nodeptr               # list of file redirections
                     65:
                     66: NPIPE npipe                    # a pipeline
                     67:        type      int
                     68:        backgnd   int                   # set to run pipeline in background
                     69:        cmdlist   nodelist              # the commands in the pipeline
                     70:
                     71: NREDIR nredir                  # redirection (of a compex command)
                     72:        type      int
                     73:        n         nodeptr               # the command
                     74:        redirect  nodeptr               # list of file redirections
                     75:
                     76: NBACKGND nredir                        # run command in background
                     77: NSUBSHELL nredir               # run command in a subshell
                     78:
                     79: NAND nbinary                   # the && operator
                     80: NOR nbinary                    # the || operator
                     81:
                     82: NIF nif                                # the if statement.  Elif clauses are handled
                     83:        type      int               # using multiple if nodes.
                     84:        test      nodeptr               # if test
                     85:        ifpart    nodeptr               # then ifpart
                     86:        elsepart  nodeptr               # else elsepart
                     87:
                     88: NWHILE nbinary                 # the while statement.  First child is the test
                     89: NUNTIL nbinary                 # the until statement
                     90:
                     91: NFOR nfor                      # the for statement
                     92:        type      int
                     93:        args      nodeptr               # for var in args
                     94:        body      nodeptr               # do body; done
                     95:        var       string                # the for variable
                     96:
                     97: NCASE ncase                    # a case statement
                     98:        type      int
                     99:        expr      nodeptr               # the word to switch on
                    100:        cases     nodeptr               # the list of cases (NCLIST nodes)
                    101:
                    102: NCLIST nclist                  # a case
                    103:        type      int
                    104:        next      nodeptr               # the next case in list
                    105:        pattern   nodeptr               # list of patterns for this case
                    106:        body      nodeptr               # code to execute for this case
                    107:
                    108:
                    109: NDEFUN narg                    # define a function.  The "next" field contains
                    110:                                # the body of the function.
                    111:
                    112: NARG narg                      # represents a word
                    113:        type      int
                    114:        next      nodeptr               # next word in list
                    115:        text      string                # the text of the word
                    116:        backquote nodelist              # list of commands in back quotes
                    117:
                    118: NTO nfile                      # fd> fname
                    119: NFROM nfile                    # fd< fname
                    120: NAPPEND nfile                  # fd>> fname
                    121:        type      int
                    122:        next      nodeptr               # next redirection in list
                    123:        fd        int                   # file descriptor being redirected
                    124:        fname     nodeptr               # file name, in a NARG node
                    125:        expfname  temp  char *expfname  # actual file name
                    126:
                    127: NTOFD ndup                     # fd<&dupfd
                    128: NFROMFD ndup                   # fd>&dupfd
                    129:        type      int
                    130:        next      nodeptr               # next redirection in list
                    131:        fd        int                   # file descriptor being redirected
                    132:        dupfd     int                   # file descriptor to duplicate
1.6       jtc       133:        vname     nodeptr               # file name if fd>&$var
1.8     ! christos  134:
1.1       cgd       135:
                    136: NHERE nhere                    # fd<<\!
                    137: NXHERE nhere                   # fd<<!
                    138:        type      int
                    139:        next      nodeptr               # next redirection in list
                    140:        fd        int                   # file descriptor being redirected
                    141:        doc       nodeptr               # input to command (NARG node)
1.4       jtc       142:
                    143: NNOT nnot                      # ! command  (actually pipeline)
                    144:        type    int
                    145:        com     nodeptr

CVSweb <webmaster@jp.NetBSD.org>