Armando, Nate and Panduranga

   Many thanks for the answers.

Regards,
Alex

2012/8/28 Nate Young <youn...@gmail.com>

> On Thu, Aug 23, 2012 at 11:22 AM, Alexsandro Soares
> <prof.asoa...@gmail.com> wrote:
> > Can you provide the code for this?
> Certainly.
>
> The parser's current source position is stored in the InputState
> record's `pos` field. That field is a SourcePos record consisting of
> the current line and column position. Most parsers, however don't deal
> directly with the raw InputState and SourcePositions, so we must write
> a low-level function to examine those records, and return the value
> we're interested in without consuming any input. The function would
> look like this:
>
> (defn lineno []
>   (fn [state _ _ eok _]
>     (bounce eok (:line (:pos state)) state)))
>
> The first line defines the name of the fn we can use in let->>
> statements to get the current line number.
> The second line is the standard parser interface, a function that
> takes the state and 4 continutation functions, of which we're only
> interested in the one that doesn't consume any input and doesn't
> produce an error.
> The last line pulls the current line number from the state, and passes
> it along with the unchanged state to the `eok` continuation (`bounce`
> is the function we use to ensure that no stack is consumed in the
> process).
>
> Now, you can treat `lineno` just like any other parser (in truth, it
> is very close in spirit to the `always` parser except that it operates
> on the parsers current state).
>
> (let->> [current-line (lineno)]
>   (do-something-with current-line))
>
> Hope this was helpful.
>
> Nate
>
> --
> You received this message because you are subscribed to the Google
> Groups "Clojure" group.
> To post to this group, send email to clojure@googlegroups.com
> Note that posts from new members are moderated - please be patient with
> your first post.
> To unsubscribe from this group, send email to
> clojure+unsubscr...@googlegroups.com
> For more options, visit this group at
> http://groups.google.com/group/clojure?hl=en
>



-- 
Alexsandro Santos Soares, Prof. Dr.
Faculdade de Computação
Universidade Federal de Uberlândia - UFU - Sala 1B123
+55 (0xx34) 3239-4478

-- 
You received this message because you are subscribed to the Google
Groups "Clojure" group.
To post to this group, send email to clojure@googlegroups.com
Note that posts from new members are moderated - please be patient with your 
first post.
To unsubscribe from this group, send email to
clojure+unsubscr...@googlegroups.com
For more options, visit this group at
http://groups.google.com/group/clojure?hl=en

Reply via email to