[Haskell-cafe] Few Alex questions

Dimitry Golubovsky golubovsky at gmail.com
Thu Apr 30 23:33:15 EDT 2009


Q1: I am trying to create an Alex equivalent of the following flex file:

http://code.haskell.org/yc2js/es-idl/lexer.ll (lexer for Web IDL which
is a dialect of OMG IDL)

I haven't been able to find Alex equivalent for the following line:

PoundSign               ^{WhiteSpace}*#

that is any amount of whitespace at the beginning of line followed by '#'

I defined a @WhiteSpace macro some place earlier, but Alex gives me
parser error on the line I created:

@PoundSign         =      ^@WhiteSpace*#

in the position 28 that is position of '@', next to caret, that is,
caret is not recognized by Alex.

Can beginning of line (caret) be recognized by Alex?

Q2: The original line says:

MultiLineComment        \/\*(([^*])|(\*[^/]))*\*\/

basically same as comments in C or Java.

I had to prefix star and slash even within square brackets with
backslashes to make it compile.

So I got:

@MultiLineComment  =      \/\*(([^\*])|(\*[^\/]))*\*\/

Is this correct understanding that if we want to match any character
except for an asterisk, then Alex would like to see [^\*] rather than
[^*]? And [^\/] rather than [^/]?

Or would it be better to use a hex code for the asterisk and slash?


Dimitry Golubovsky

Anywhere on the Web

More information about the Haskell-Cafe mailing list