From: "Rob Quill" <rob.quill@gmail.com>
To: "Jim Blandy" <jimb@codesourcery.com>
Cc: msnyder@specifix.com, gdb-patches@sourceware.org
Subject: Re: New scope checking patch
Date: Fri, 18 Jan 2008 03:35:00 -0000 [thread overview]
Message-ID: <baf6008d0801171935s225a9dd2q664953b53bc68401@mail.gmail.com> (raw)
In-Reply-To: <m3hchcm7x5.fsf@codesourcery.com>
[-- Attachment #1: Type: text/plain, Size: 3914 bytes --]
On 17/01/2008, Jim Blandy <jimb@codesourcery.com> wrote:
>
> "Rob Quill" <rob.quill at gmail.com> writes:
> > On 17/01/2008, Jim Blandy <jimb@codesourcery.com> wrote:
> >> Also, please be sure that the indentation follows the GNU coding
> >> conventions. Substatements should be indented by two spaces.
> >> (c-exp.y is not a great place to look for examples, since it's a mess,
> >> but look at, say, frame.c.)
> >>
> >> From looking at your patch as it arrived through my mailer, it seemed
> >> that the code block for the new $in_scope grammar rule was not
> >> indented in the same way as the other blocks. These should all be
> >> consistent.
> >
> > Hey,
> >
> > Sorry about getting the formatting consistently wrong. I've
> > reformatted it and it looks to me like it matches the other cases,
> > although it is hard to tell where to use tabs and where to use spaces,
> > and I'm never sure it's right as what if I have a different tab size
> > to you etc. I tried putting it through indent, but that just made a
> > mess, although as a rule is it OK to use that if it is a C file?
>
> I'm told Open Source projects avoid tabs, but it seems that GDB
> permits them, with tab stops every 8 columns. The GNU coding
> standards don't say much about tab use or width, beyond saying that
> error messages that include line and column numbers should assume tab
> stops every 8 columns when computing column numbers.
>
> We don't generally use indent; if you look through the mailing list
> archives, you can see the arguments. I can only remember the
> arguments that made sense to me, so I'm not sure I can accurately
> explain the reasoning. :)
>
> If you use GNU Emacs C mode with the default settings, then TAB, C-j,
> and C-M-q will do the right thing.
>
> > + if (!have_full_symbols () && !have_partial_symbols ())
> > + error ("No symbol table is loaded. Use the \"file\" command.");
>
> Too much indentation?
Well, you would think so, but I've changed the tab spacing in vim to 8
and the way I have formatted it matches how everything else is
formatted.
> > +
> > + /* Otherwise, prepare to write out the value */
> > + int_type = builtin_type (current_gdbarch)->builtin_int;
> > + write_exp_elt_opcode (OP_LONG);
> > + write_exp_elt_type (int_type);
> > +
> > + min_symbol =
> > + lookup_minimal_symbol (copy_name($3.stoken), NULL, NULL);
> > + if ($3.sym || min_symbol)
> > + write_exp_elt_longcst ((LONGEST) 1);
> > + else
> > + write_exp_elt_longcst ((LONGEST) 0);
>
>
>
> > +
> > + write_exp_elt_opcode (OP_LONG); }
>
> Closing brace should get its own line, since the opening brace did.
This is what I thought too, but if you look at the rest of the file
(for example the case for "exp : exp ARROW name") the open brace
always starts on a new line and always ends on the same line.
>
> > @@ -1678,6 +1704,9 @@ yylex ()
> > /* Catch specific keywords. Should be done with a data structure. */
> > switch (namelen)
> > {
> > + case 9:
> > + if (strncmp (tokstart, "$in_scope", 9) == 0)
> > + return IN_SCOPE;
> > case 8:
> > if (strncmp (tokstart, "unsigned", 8) == 0)
> > return UNSIGNED;
>
> When I view this (again, with 8-column tab stops), the 'case' is not
> lined up with the other cases, and the 'return' is not indented two
> spaces within the 'if'.
Sorry, missed that. I've attached the fixed copy. I believe that the
amount of indentation matches the layout of the current file, and that
even though it looks like a lot in the context of the patch, all the
other grammar rules in the file use the same large amount of
indentation.
Rob
[-- Warning: decoded text below may be mangled, UTF-8 assumed --]
[-- Attachment #2: in_scope.patch --]
[-- Type: text/x-diff; name=in_scope.patch, Size: 1687 bytes --]
Index: gdb/c-exp.y
===================================================================
RCS file: /cvs/src/src/gdb/c-exp.y,v
retrieving revision 1.42
diff -u -p -r1.42 c-exp.y
--- gdb/c-exp.y 9 Jan 2008 19:27:15 -0000 1.42
+++ gdb/c-exp.y 18 Jan 2008 03:32:41 -0000
@@ -208,6 +208,8 @@ static int parse_number (char *, int, in
%token TRUEKEYWORD
%token FALSEKEYWORD
+/* $in_scope opperator */
+%token IN_SCOPE
%left ','
%left ABOVE_COMMA
@@ -251,6 +253,30 @@ exp1 : exp
;
/* Expressions, not including the comma operator. */
+exp : IN_SCOPE '(' name_not_typename ')'
+ {
+ struct type *int_type;
+ struct minimal_symbol *min_symbol;
+
+ /* If there are no symbols then just stop right away */
+ if (!have_full_symbols () && !have_partial_symbols ())
+ error ("No symbol table is loaded. Use the \"file\" command.");
+
+ /* Otherwise, prepare to write out the value */
+ int_type = builtin_type (current_gdbarch)->builtin_int;
+ write_exp_elt_opcode (OP_LONG);
+ write_exp_elt_type (int_type);
+
+ min_symbol =
+ lookup_minimal_symbol (copy_name($3.stoken), NULL, NULL);
+ if ($3.sym || min_symbol)
+ write_exp_elt_longcst ((LONGEST) 1);
+ else
+ write_exp_elt_longcst ((LONGEST) 0);
+
+ write_exp_elt_opcode (OP_LONG); }
+ ;
+
exp : '*' exp %prec UNARY
{ write_exp_elt_opcode (UNOP_IND); }
;
@@ -1678,6 +1704,9 @@ yylex ()
/* Catch specific keywords. Should be done with a data structure. */
switch (namelen)
{
+ case 9:
+ if (strncmp (tokstart, "$in_scope", 9) == 0)
+ return IN_SCOPE;
case 8:
if (strncmp (tokstart, "unsigned", 8) == 0)
return UNSIGNED;
next prev parent reply other threads:[~2008-01-18 3:35 UTC|newest]
Thread overview: 42+ messages / expand[flat|nested] mbox.gz Atom feed top
2007-11-12 16:29 Rob Quill
2007-11-12 23:26 ` Michael Snyder
2008-01-10 1:00 ` Jim Blandy
2008-01-11 0:52 ` Rob Quill
2008-01-11 22:51 ` Jim Blandy
2008-01-14 23:07 ` Michael Snyder
2008-01-15 17:06 ` Jim Blandy
2008-01-17 19:32 ` Rob Quill
2008-01-17 20:15 ` Jim Blandy
2008-01-17 21:11 ` Rob Quill
2008-01-17 21:58 ` Jim Blandy
2008-01-17 23:40 ` Doug Evans
2008-01-18 1:31 ` Daniel Jacobowitz
2008-01-18 3:35 ` Rob Quill [this message]
2008-01-18 18:48 ` Jim Blandy
2008-01-18 22:43 ` Rob Quill
2008-01-19 0:38 ` Jim Blandy
2008-01-30 13:11 ` Rob Quill
2008-01-30 18:14 ` Jim Blandy
2008-01-30 18:31 ` Eli Zaretskii
2008-01-31 4:11 ` Jim Blandy
2008-01-31 7:26 ` Eli Zaretskii
2008-07-27 23:45 ` Rob Quill
2008-07-28 3:18 ` Eli Zaretskii
2008-07-28 10:31 ` Rob Quill
2008-07-28 18:27 ` Eli Zaretskii
2008-07-29 20:31 ` Tom Tromey
2008-07-29 21:04 ` Rob Quill
2008-07-29 21:45 ` Tom Tromey
2008-07-29 22:53 ` Rob Quill
2008-07-30 3:34 ` Tom Tromey
2008-10-23 13:42 ` Convenience functions (was: Re: New scope checking patch) Daniel Jacobowitz
2008-10-23 15:17 ` Convenience functions Tom Tromey
2008-10-23 15:22 ` Daniel Jacobowitz
2008-10-23 15:26 ` Tom Tromey
2008-10-23 19:14 ` Tom Tromey
2008-10-24 12:53 ` Eli Zaretskii
2008-11-04 21:37 ` Convenience functions (was: Re: New scope checking patch) Thiago Jung Bauermann
2008-11-04 22:23 ` Daniel Jacobowitz
2008-11-04 22:43 ` Convenience functions Tom Tromey
2008-01-31 7:52 ` New scope checking patch Michael Snyder
2008-01-19 1:35 ` Michael Snyder
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=baf6008d0801171935s225a9dd2q664953b53bc68401@mail.gmail.com \
--to=rob.quill@gmail.com \
--cc=gdb-patches@sourceware.org \
--cc=jimb@codesourcery.com \
--cc=msnyder@specifix.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