Groups | Search | Server Info | Keyboard shortcuts | Login | Register [http] [https] [nntp] [nntps]
Groups > comp.lang.c > #120555
| From | Ben Bacarisse <ben.usenet@bsb.me.uk> |
|---|---|
| Newsgroups | comp.lang.c |
| Subject | Re: Lexical Elements |
| Date | 2017-09-29 18:27 +0100 |
| Organization | A noiseless patient Spider |
| Message-ID | <87efqpfm9d.fsf@bsb.me.uk> (permalink) |
| References | (5 earlier) <d7b80520-7c0a-461f-99db-1b58dac1ee15@googlegroups.com> <lnk20iwr59.fsf@kst-u.example.com> <d1352da5-c14d-445d-953a-b623686873f2@googlegroups.com> <lning2uvtc.fsf@kst-u.example.com> <2d14fe25-9390-4711-b8e2-1cdefc3d56bf@googlegroups.com> |
David Kleinecke <dkleinecke@gmail.com> writes: > On Thursday, September 28, 2017 at 6:40:08 PM UTC-7, Keith Thompson wrote: >> David Kleinecke <dkleinecke@gmail.com> writes: >> > On Thursday, September 28, 2017 at 12:38:02 PM UTC-7, Keith Thompson wrote: >> >> >> >> A compiler typically treats syntax and semantics separately. Syntactic >> >> analysis, or parsing, is often semi-automated, with the parser generated >> >> programatically from a forma grammar -- or it might be written manually. >> >> If parsing fails, that's a syntax error. Other errors, like trying to >> >> apply a shift operator to a pointer value, have to be detected during >> >> semantic analysis. As far as typical compiler internals are concerned, >> >> they're fundamentally different kinds of errors. Tweaking the grammar >> >> to treat some syntax errors as semantic errors can enable better >> >> diagnostics in some csaes. >> > >> > My compilers also treat syntax and semantics separately. The >> > question is whether the constraints are part of syntax or part >> > of semantics. >> >> Semantics, I'd say. >> >> > You imply that some are and some aren't. >> >> Did I? >> >> > Quite possible >> > although I have no examples. I have concluded that what >> > I called the spirit of C expects them with the syntax but >> > I had them coded with the semantics. I have only begun >> > moving the constraints and haven't yet found any that >> > don't fit rather easily into the syntax. >> >> I suspect I really don't undrestand what you're saying. >> >> Here's an example. C11 6.8.4.2p1 specifies the following constraint: >> >> The controlling expression of a switch statement shall have integer >> type. >> >> Unless you extend the meaning of "syntax" beyond (my) recognition, you >> won't be able to enforce that constraint using only syntax information. >> >> Roughly, a syntax error is a failure to parse the source code in >> accordance with a grammar that can be defined, for example, in BNF >> (Backus-Naur Form). (C's treatment of typedefs punches a small hole in >> this model.) Any errors that are not syntax errors are what I think of >> as semantic errors. In C, this is more or less expressed as syntax >> rules vs. constraints. > > I understand syntax, perhaps, like a linguist would. In > all the linguistic work I know what fills a slot (a slot > like the identifier slot in a switch statement) can be > sub-categorized to a subset of all identifiers. In this > case the identifier must have the attribute "integer". > The token (already identified as an identifier) is further > sub-categorized by being declared, for example, an "int". Perhaps you could show us the grammar you use in which the given constraint is a syntax error? Such a grammar does exist as you, as a linguist, will know. It's not the grammar in the C standard, and it may well be so much more complex that it can't be parsed efficiently, but know what it is before embarking on this part of the project will help you immensely. Keith is correct in that most constraints are not syntax errors taking the language syntax to be the described by the grammar in the standard. You are correct in that any set of static properties of a text (and the constraints in the C standard are all checkable by inspecting the text of one translation unit alone) can be turned into a grammar such that violating one or more of them becomes a matter solely of syntax. However, there are sounds reasons why that approach is not taken in most programming languages. What seems more likely is that are plannign to parse the syntax as in the standard C grammar and maintain extra information as you go that can be used to diagnose constraint violations. That's how every C compiler I have ever seen does it. > The source of my concern about what a token actually is > comes from this accumulation of additional attributes - > which would include constant and volatile as well as > static/extern. This sounds like the usual approach. -- Ben.
Back to comp.lang.c | Previous | Next — Previous in thread | Next in thread | Find similar | Unroll thread
Lexical Elements David Kleinecke <dkleinecke@gmail.com> - 2017-09-27 19:03 -0700
Re: Lexical Elements "Pascal J. Bourguignon" <pjb@informatimago.com> - 2017-09-28 05:33 +0200
Re: Lexical Elements James Kuyper <jameskuyper@verizon.net> - 2017-09-28 00:19 -0400
Re: Lexical Elements David Kleinecke <dkleinecke@gmail.com> - 2017-09-27 22:09 -0700
Re: Lexical Elements Keith Thompson <kst-u@mib.org> - 2017-09-28 08:31 -0700
Re: Lexical Elements David Kleinecke <dkleinecke@gmail.com> - 2017-09-28 11:53 -0700
Re: Lexical Elements jameskuyper@verizon.net - 2017-09-28 12:16 -0700
Re: Lexical Elements David Kleinecke <dkleinecke@gmail.com> - 2017-09-28 15:51 -0700
Re: Lexical Elements jameskuyper@verizon.net - 2017-09-28 16:42 -0700
Re: Lexical Elements Keith Thompson <kst-u@mib.org> - 2017-09-28 12:37 -0700
Re: Lexical Elements David Kleinecke <dkleinecke@gmail.com> - 2017-09-28 16:16 -0700
Re: Lexical Elements Keith Thompson <kst-u@mib.org> - 2017-09-28 18:39 -0700
Re: Lexical Elements David Kleinecke <dkleinecke@gmail.com> - 2017-09-28 19:47 -0700
Re: Lexical Elements jameskuyper@verizon.net - 2017-09-28 20:29 -0700
Re: Lexical Elements David Kleinecke <dkleinecke@gmail.com> - 2017-09-28 22:36 -0700
Re: Lexical Elements Keith Thompson <kst-u@mib.org> - 2017-09-29 08:47 -0700
Re: Lexical Elements David Kleinecke <dkleinecke@gmail.com> - 2017-09-29 11:23 -0700
Re: Lexical Elements Ben Bacarisse <ben.usenet@bsb.me.uk> - 2017-09-29 18:27 +0100
Re: Lexical Elements jameskuyper@verizon.net - 2017-09-28 09:13 -0700
Re: Lexical Elements Richard Damon <Richard@Damon-Family.org> - 2017-09-28 08:15 -0400
Re: Lexical Elements jameskuyper@verizon.net - 2017-09-27 21:03 -0700
Re: Lexical Elements David Kleinecke <dkleinecke@gmail.com> - 2017-09-27 22:16 -0700
Re: Lexical Elements jameskuyper@verizon.net - 2017-09-28 09:45 -0700
Re: Lexical Elements David Kleinecke <dkleinecke@gmail.com> - 2017-09-28 11:58 -0700
Re: Lexical Elements jameskuyper@verizon.net - 2017-09-28 12:29 -0700
Re: Lexical Elements David Kleinecke <dkleinecke@gmail.com> - 2017-09-28 15:52 -0700
Re: Lexical Elements Joe Pfeiffer <pfeiffer@cs.nmsu.edu> - 2017-09-28 17:40 -0600
Re: Lexical Elements jameskuyper@verizon.net - 2017-09-28 16:54 -0700
Re: Lexical Elements Keith Thompson <kst-u@mib.org> - 2017-09-28 12:40 -0700
Re: Lexical Elements David Kleinecke <dkleinecke@gmail.com> - 2017-09-28 16:12 -0700
Re: Lexical Elements bartc <bc@freeuk.com> - 2017-09-28 21:04 +0100
Re: Lexical Elements bartc <bc@freeuk.com> - 2017-09-28 22:12 +0100
Re: Lexical Elements David Kleinecke <dkleinecke@gmail.com> - 2017-09-28 16:15 -0700
Re: Lexical Elements bartc <bc@freeuk.com> - 2017-09-29 01:19 +0100
csiph-web