Hi Dennis,

Thanks a lot.

I totally ignore the priority part the lex at PLY documents.
The only difference between NUM and VECTOR tokens are NUM always after
some special words like TSET or repeat.
I got a way to do this: t_NUM=r'(?<=TSET\s)\d+|(?<=repeat\s)\d+'
only problem is (?<=) grammar only support fixed length so I can not
use \s* to match the spaces between them. So another scan to sub all
duplicated \s is needed.

What would be the usually way to solve this kind problem: the same
character at different locations meaning different TOKEN?

Best Regards,
Adun

On Dec 31 2008, 5:32 pm, "Hendriks, D." <[email protected]> wrote:
> Hello zt,
>
> both r'\d+' and r'0|1|...' match the numbers 0 and 1. Since the r'0|1|...' 
> regular expression has a longer length, it is given priority (see Ply 
> documentation). Is there any way to differentiate the NUM and VECTOR tokens? 
> For instance, can NUM tokens start with a 0 at all? You will need to have two 
> regular expressions that only match the given input for that token (that is, 
> no overlap). Well, you can have overlap, as long as you know it's there and 
> the one that is given priority is the one you want to have priority, but 
> still, I think it is better to avoid the overlap alltogether...
>
> Dennis
>
> ________________________________
>
> Van: [email protected] namens zt
> Verzonden: wo 31-12-2008 9:49
> Aan: ply-hack
> Onderwerp: Lex token problem
>
> Hi all,
>
> I am still learning how to write parser with PLY. I need to parse
> following format data:
>  TSET 1        001 X 0 00;
>                     001 X 0 00;
>                     001 X 0 00;
>  TSET 7        001 X 0 00;
> repeat 12      001 X 0 00;
>
> The tokens are defined as:
> t_TSET=r'TSET'
> t_NUM=r'\d+'
> t_MCODE=r'repeat'
> t_VECTOR=r'0|1|H|L|X'
>
> but it kept treating the first "1" at line 1 as VECTOR instead of NUM
> and the "1" after "repeat" as VECTOR.
> Is there a good way to fix this?
>
> Thanks a lot!
>
>  winmail.dat
> 6KViewDownload
--~--~---------~--~----~------------~-------~--~----~
You received this message because you are subscribed to the Google Groups 
"ply-hack" group.
To post to this group, send email to [email protected]
To unsubscribe from this group, send email to 
[email protected]
For more options, visit this group at 
http://groups.google.com/group/ply-hack?hl=en
-~----------~----~----~----~------~----~------~--~---

Reply via email to