PREV INDEX NEXT

Author: Stan Eisenstat
Subject: Re: [Cs323] ex
Date: Friday, 25 Sep 2020, 08:50:49


    > Message Posted By: Unknown
    >
    > If we do:
    >
    > (1)$ a b c >d e f g
    >
    > Why is the output for argv[5]:
    > argv[5] = g  >d

Because "g" is the fifth argument and stdout was
redirected to "d".  [Note the extra space between
"g" and ">d".]
=====

    > What part of the rule makes >d go to the very end. From my understanding,
    > if we are in the suffix, and read a TEXT, we then try to read as many TEXT
    > and we can and then try to Read as many Redirect as we can? Or, is it
    > because once we see >d, we keep reading the texts e f g as argv's to the
    > left of >d?

Your first explanation is correct.

What is printed is a representation of the CMD tree,
which is produced by an in-order traversal that shows
* the depth of the each CMD struct,
* the type of that node,
* a list of the arguments, and
* any redirections (in the order <, > or >>, 2> or 2>>
    or &>, and <<, the last on a separate line).
=====

    > I get that the >d is supposed to be with g, but how the grammar get us to
    > output this correctly.

parse() generates the CMD tree; dumpCMD() (which is in
Hwk2/mnainParsley.c) prints it as described above.

--Stan-
PREV INDEX NEXT