
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. 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 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@haskell.org http://www.haskell.org/mailman/listinfo/beginners
-- Heriot-Watt University is a Scottish charity registered under charity number SC000278.