[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