From: Keith Seitz <keiths@cygnus.com>
To: Michael Snyder <msnyder@cygnus.com>
Cc: <gdb-patches@sources.redhat.com>
Subject: Re: [RFC/A] testsuite/gdb.c++/ref-types.exp "cleanup"
Date: Fri, 19 Oct 2001 12:58:00 -0000 [thread overview]
Message-ID: <Pine.GSO.4.33.0110191247110.18666-100000@makita.cygnus.com> (raw)
In-Reply-To: <3BD07EBA.1F02F0E8@cygnus.com>
On Fri, 19 Oct 2001, Michael Snyder wrote:
> > +gdb_test {print s} {.[0-9]* = -1} {print value of s}
> > +gdb_test {ptype s} {type = short (int)?} {ptype s}
>
> I'm just curious why these would not be:
>
> gdb_test "print s" ".[0-9]* = -1" "print value of s"
> gdb_test "ptype s" "type = short (int?)" "ptype s"
Aha! I was hoping someone would ask. The difference is that in tcl,
strings are evaluated, lists are not. Consider:
tclsh> set a 3
3
tclsh> puts "a is $a"
a is 3
tclsh> puts {a is $a}
a is $a
> Seems like the use of quotes in this context is ubiquitous
> throughout the rest of the testsuite. Is there any reason
> for switching to curly braces here? Is consistancy good?
The use of quotes is not incorrect, but when I start thinking about
regexps (which, I admit, usually make my head hurt), I like to think
[0-9]\(foo\)\*, not \[0-9\]\\\(foo\\\)\\\*. It's just easier to read (for
me, I guess).
> Also I agree with the suggestion by Fernando to make the pattern
> "short( int)?".
Already done. My bad.
> > +set pattern {.[0-9]* = \(short (int)? &\) @}
> > +append pattern "$hex: -1"
> > send_gdb "print rs\n"
> > gdb_expect {
> > - -re ".\[0-9\]* = \\(short &\\) @$hex: -1.*$gdb_prompt $" {
> > - pass "print value of rs"
> > - }
> > - -re ".\[0-9\]* = \\(short int &\\) @$hex: -1.*$gdb_prompt $" {
> > - pass "print value of rs"
> > - }
> > - -re ".*$gdb_prompt $" { fail "print value of rs" }
> > - timeout { fail "(timeout) print value of rs" }
> > - eof { fail "print rs ($GDB dumped core) (FIXME)" ; gdb_start_again ; }
> > -
> > + -re $pattern {
> > + pass "print value of rs"
> > }
>
> Would it be possible to accomplish the same thing by
> combining the two "pass" regexps thusly?
>
> -re ".\[0-9\]* = \\(short( int)? &\) @$hex: -1.*$gdb_prompt $" {
Close (now you see why I like to use {} instead of "" for regular
expressions):
-re ".\[0-9\]* = \\\(short( int)? &\\\) @$hex: -1.*gdb_prompt $" {
When this is passed to expect, tcl will evaluate the special characters.
So ".\[0-9\]" will turn into '.[0-9]" (which is the range atom used by
regexp) and "\\\(" will become '\(' (which is the literal character '('
to expect), $hex will get substituted (and become another regexp atom to
expect), and so on.
Like I said, maybe it's just style, but I find the _real_ regular
expressions easier to read than all the "\\\(", "\\\[", "\\\$", and such,
and there is no ambiguity about how many "\" are needed. It's never more
than one (unless you mean literally mean '\', in which case it's "\\").
You could also think of it as {} being more like a C-string, whereas "..."
is more like a shell (a la bash) string.
Keith
next prev parent reply other threads:[~2001-10-19 12:58 UTC|newest]
Thread overview: 8+ messages / expand[flat|nested] mbox.gz Atom feed top
2001-10-18 22:52 Keith Seitz
2001-10-19 8:28 ` Andrew Cagney
2001-10-19 11:29 ` Keith Seitz
2001-10-19 15:12 ` Andrew Cagney
2001-10-21 12:15 ` Keith Seitz
2001-10-19 12:36 ` Michael Snyder
2001-10-19 12:58 ` Keith Seitz [this message]
2001-10-19 9:08 Keith Seitz
Reply instructions:
You may reply publicly to this message via plain-text email
using any one of the following methods:
* Save the following mbox file, import it into your mail client,
and reply-to-all from there: mbox
Avoid top-posting and favor interleaved quoting:
https://en.wikipedia.org/wiki/Posting_style#Interleaved_style
* Reply using the --to, --cc, and --in-reply-to
switches of git-send-email(1):
git send-email \
--in-reply-to=Pine.GSO.4.33.0110191247110.18666-100000@makita.cygnus.com \
--to=keiths@cygnus.com \
--cc=gdb-patches@sources.redhat.com \
--cc=msnyder@cygnus.com \
/path/to/YOUR_REPLY
https://kernel.org/pub/software/scm/git/docs/git-send-email.html
* If your mail client supports setting the In-Reply-To header
via mailto: links, try the mailto: link
Be sure your reply has a Subject: header at the top and a blank line
before the message body.
This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox