Groups | Search | Server Info | Keyboard shortcuts | Login | Register [http] [https] [nntp] [nntps]


Groups > comp.compilers > #3111

Re: Learning only one lexer made me blind to its hidden assumptions

From luser droog <luser.droog@gmail.com>
Newsgroups comp.compilers
Subject Re: Learning only one lexer made me blind to its hidden assumptions
Date 2022-07-12 19:49 -0700
Organization Compilers Central
Message-ID <22-07-007@comp.compilers> (permalink)
References <22-07-006@comp.compilers>

Show all headers | View raw


On Monday, July 11, 2022 at 7:26:08 PM UTC-5, Roger L Costello wrote:
> Hi Folks,
>
> For months I have been immersed in learning and using Flex. Great fun indeed.
>
> But recently I have been reading a book, Crafting a Compiler with C, and
> reading its chapter on lexers. The chapter describes two lexer-generators:
> ScanGen and Lex. Oh my! Learning ScanGen opened my eyes to the hidden
> assumptions in Lex/Flex. Without learning ScanGen I would have continued to
> think that the way things are done in Lex/Flex way is the only way.
>
> Below I have documented some of the differences between Lex/Flex and ScanGen.
[snip]
> Difference:
> - Flex regexes use juxtaposition for specifying concatenation.
> - ScanGen uses '.' to specify concatenation. And oh by the way, ScanGen calls
> it 'catenation' not 'concatenation'

I think this difference in word choice has possibly some etymological significance.
Both word come from "catenary" which is the shape a rope or cord makes when
you drape it over some spokes or frames or hooks or whatever. So, to *catenate*
is to hoist the string or rope up onto some hooks or poles so it makes that
dangling *garland* kind of curve. So, it's focused on the *rope* as an entity.

*Concatenate* adds the prefix "con" meaning "with". I interpret this as embellishing
the rope with beads or light bulbs or something. So now we're stringing up
a bunch of beads *together*, focusing on the hanging objects.

The original APL book uses "catenate" in a way that I think is consistent with
my interpretation here. But I could also be wrong. I have not actually researched
this beyond having run into it a few times and attempted to come up with a
plausible reason.
[Lots of people agree with that etymology.  Where do you think the Unix "cat" command came from? -John]

Back to comp.compilers | Previous | NextPrevious in thread | Next in thread | Find similar


Thread

Learning only one lexer made me blind to its hidden assumptions Roger L Costello <costello@mitre.org> - 2022-07-07 17:49 +0000
  Re: Learning only one lexer made me blind to its hidden assumptions luser droog <luser.droog@gmail.com> - 2022-07-12 19:49 -0700
    Re: Learning only one lexer made me blind to its hidden assumptions Juan Miguel Vilar Torres <jvilar@uji.es> - 2022-07-13 01:46 -0700
  Re: Learning only one lexer made me blind to its hidden assumptions "Ev. Drikos" <drikosev@gmail.com> - 2022-07-13 14:58 +0300
  Re: Learning only one lexer made me blind to its hidden assumptions antispam@math.uni.wroc.pl - 2022-07-13 19:52 +0000
    Re: Learning only one lexer made me blind to its hidden assumptions George Neuner <gneuner2@comcast.net> - 2022-07-14 16:46 -0400
      Re: Learning only one lexer made me blind to its hidden assumptions antispam@math.uni.wroc.pl - 2022-07-15 20:14 +0000
  Re: Learning only one lexer made me blind to its hidden assumptions Kaz Kylheku <480-992-1380@kylheku.com> - 2022-07-15 14:16 +0000

csiph-web