Hello,
Here is my simplified flex file
%%
"keyword1" { return KEYWORD1; };
"keyword2" { return KEYWORD2; };
"unit1" { return UNIT1; };
"unit2" { return UNIT2; };
"activate" { return ACTIVATE; };
"deactivate" { return DEACTIVATE; };
"." { return DOT; };
[A-Za-z][A-Za-z0-9_-]*([.][A-Za-z][A-Za-z0-9_-]*)+ { return OBJECT_ID; };
%%
I'm having a bison file also to generate the parser.
If the input to the tokenizer is
xyz.pqr : I expect it to return OBJECT_ID
unit1xyz.activatepqr : should return OBJECT_ID
unit1.activate : should return 3 tokens, namely, UNIT1, DOT, ACTIVATE
keyword1.keyword2 : should return 3 tokens, namely, KEYWORD1, DOT, KEYWORD2
But I'm seeing that the last 2 inputs result in OBJECT_ID token.
This happens since Flex generated tokenizers always return the longest token.
How can I get the expected behaviour as described above ?
Thank you,
Mahendra
|