[Haskell-beginners] SQL Lexer
Patrick LeBoutillier
patrick.leboutillier at gmail.com
Mon May 11 09:28:53 EDT 2009
On Mon, May 11, 2009 at 6:33 AM, Jan Jakubuv <jakubuv at gmail.com> wrote:
> Hello Patrick,
>
> that's a nice one. I have two notes for you:
>
> 1) Why do you handle spaces as tokens? Can't you just skip them completely?
> It could make the parser simpler.
I added that as a debug tool (that way I can recreate the SQL exactly
and use diff to make sure it tokenised properly). I agree that besides
that it's not very useful.
>
> 2) Your lexer does not provide any information about positions of tokens in
> the source code. You may want to do that in order to:
>
> a) report better error messages
> b) use parsec's `token` function [1] to make parsec work with your tokens.
> Note that parsec wants you to use its data type `SourcePos` to represent
> positions. See [2] for a simple example and further stuff.
>
> [1]: http://legacy.cs.uu.nl/daan/download/parsec/parsec.html#token
> [2]: http://legacy.cs.uu.nl/daan/download/parsec/parsec.html#SeperateScanners
That's for phase 2... :). Actually I was planning on adding that in
later. Thanks a lot for the links, I'll have a look at them.
Thanks a lot for your feedback,
Patrick
>
> Sincerely,
> Jan.
>
> On Fri, May 08, 2009 at 09:53:04PM -0400, Patrick LeBoutillier wrote:
>> Hi all,
>>
>> In the process of writing an SQL parser I started by writing a lexer.
>> The code can be found here:
>> http://hpaste.org/fastcgi/hpaste.fcgi/view?id=4736#a4736
>>
>> You can run it like this in ghci:
>>
>> Prelude SQL.Lexer> runLexer "select * from TABLE order by FIELD"
>> [Token Reserved "select",Token Space " ",Token Operator "*",Token
>> Space " ",Token Reserved "from",Token Space " ",Token Identifier
>> "TABLE",Token Space " ",Token Reserved "order",Token Space " ",Token
>> Reserved "by",Token Space " ",Token Identifier "FIELD"]
>>
>> Since this is pretty much my first Haskell project over 10 lines long,
>> I'm looking for some feedback of any kind.
>> Ultimately I would like to use this lexer to build a functional SQL
>> parser using Parsec.
>>
>>
>> Thanks,
>>
>> Patrick
>>
>> --
>> =====================
>> Patrick LeBoutillier
>> Rosemère, Québec, Canada
>> _______________________________________________
>> Beginners mailing list
>> Beginners at haskell.org
>> http://www.haskell.org/mailman/listinfo/beginners
>
>
> --
> Heriot-Watt University is a Scottish charity
> registered under charity number SC000278.
>
>
--
=====================
Patrick LeBoutillier
Rosemère, Québec, Canada
More information about the Beginners
mailing list