[Date Prev][Date Next][Thread Prev][Thread Next]
[Date Index]
[Thread Index]
- Subject: Re: Cosmo, Lpeg and EBCDIC
- From: Fabio Mascarenhas <mascarenhas@...>
- Date: Fri, 14 Feb 2014 15:34:17 -0200
On Thu, Feb 13, 2014 at 2:55 AM, David Crayford <dcrayford@gmail.com> wrote:
> To get Cosmo to work on my system (and IBM mainframe) I had to change the
> following cosmo code in grammar.lua.
>
> --local alpha = lpeg.R('__','az','AZ','\127\255')
> local alpha = lpeg.R('__','az','AZ')
>
> Obviously, the \127\255 range isn't going to work on an EBCDIC machine. I
> modified Lpeg to handle EBCDIC ranges simply by converting the EBCDIC chars
> to ASCII, which is a common hack. My question is what impact is that going
> to have on my altered version Cosmo? I wouldn't have considered ASCII
> \127\255 to be alphas. Is there a better way of doing this, possibly using
> locales?
Notice that this is the range from 127 to 255, not just these two
codes. Including this range in the definition of alpha is a hack to
allow UTF-8 encoded names in Cosmo, so I do not think it is going to
impact your program.
You can try replacing these hardcoded patterns with the ones returned
by lpeg.locale(), which use isalpha, isalnum, etc.
--
Fabio Mascarenhas