<div><br><div class="im"><blockquote class="gmail_quote" style="margin: 0pt 0pt 0pt 0.8ex; border-left: 1px solid rgb(204, 204, 204); padding-left: 1ex;"><div>
&gt; name space<br>
&gt; where are defined methods &quot;define-fsm&quot;, &quot;define-state&quot;, &quot;on-event&quot; 
and &quot;go&quot;<br>
&gt;<br>
&gt; But this case each of those methods will not have the syntax object
 of the<br>
&gt; evaluated expression.<br>
&gt; And in case if it will find and error it could not message about 
error&#39;s<br>
&gt; location. The easiest way to do this task can be: Just evaluate the file 
&quot;a.ss&quot; in the<br></div></blockquote><div> <br>Noel Welsh <span dir="ltr"></span>wrote:
<br>
</div><blockquote class="gmail_quote" style="margin: 0pt 0pt 0pt 0.8ex; border-left: 1px solid rgb(204, 204, 204); padding-left: 1ex;">Have you tried eval-syntax, instead of eval? I think that will 
keep<br>
location information.<br></blockquote></div></div><br><br>How? <br><br>(eval-syntax
 (file-&gt;syntax &quot;a.ss&quot;))<br><br>lets imagine the function &#39;define-fsm&#39;
 was called. And &quot;some-condition?&quot; informs that there are syntax error 
in the source expression. How i can printout the line and column number 
of the source expression?<br>
<br>(define (define-fsm params)<br>  (if (some-condition? params) <br>    
 (display &quot;error message&quot; ????? )<br>  )<br>)<br><br>Noel Welsh <span dir="ltr"></span>
 wrote:<br>&gt; Look up read-syntax.<br>
<div class="im"><br>
Yes, In my example file-&gt;syntax was somthing like<br>
<br>
(define 
(file-&gt;syntax file-name)<br>
  ;; read the file and convert it to the 
syntax object<br>
  (let* ([in (open-input-file file-name)])<br>
    
(port-count-lines! in)<br>

    (begin0<br>
      (let loop ([rs &#39;()] <br>
                 [r 
(read-syntax file-name in)])<br>
        (if (eof-object? r)<br>
           
 (reverse rs)<br>
            (loop (cons r rs) (read-syntax file-name 
in))))<br>

      (close-input-port in)<br>
    )))<br>
<br>Noel Welsh <span dir="ltr">&lt;<a href="mailto:noelwelsh@gmail.com" target="_blank">noelwelsh@gmail.com</a>&gt;</span>
 wrote:<br>&gt; lets imagine the function &#39;define-fsm&#39; was called. And 
&quot;some-condition?&quot;<br>
&gt; informs that there are syntax error in the source expression. How i
 can<br>
&gt; printout the line and column number of the source expression?<br>
<br>
</div><a href="http://docs.racket-lang.org/unstable/Source_Locations.html" target="_blank">&gt; http://docs.racket-lang.org/unstable/Source_Locations.html</a><br>
<font color="#888888"><br><br></font>The question is: when in 
the eval-synax process there will be called some function how that 
function can to reffer to the current syntax-object?<br><br>Noel Welsh <span dir="ltr"></span>wrote:
<br>

&gt; foo.ss:<br>
<br>
&gt; (foo 1 2)<br>
<br>&gt; Code:<br>
<br>
&gt; (with-input-from-file &quot;foo.ss&quot;<br>
 &gt; (lambda ()<br>
 &gt;    (parameterize ([error-display-handler (lambda (name . stuff)<br>
&gt; (printf &quot;Got ~a ~a\n&quot; name stuff))])<br>
 &gt;      (eval-syntax (read-syntax &#39;foo.ss)))))<br>
<br>
&gt; Output:<br>
<br>&gt; Got foo.ss::0: compile: unbound identifier (and no #%app syntax<br>
&gt; transformer is bound) at: foo in: (foo 1 2) (#(struct:exn:fail:syntax<br>
&gt; foo.ss::0: compile: unbound identifier (and no #%app syntax<br>
&gt; transformer is bound) at: foo in: (foo 1 2) 
#&lt;continuation-mark-set&gt;<br>
&gt; (#&lt;syntax::2 foo&gt;)))<br>
<br>
&gt; So the exception structure has the syntax object you want.<br>
<font color="#888888"><br></font><font color="#888888"><span style="color: rgb(0, 0, 0);">There are two issues. <br><br>First</span>:<br><br><span style="color: rgb(0, 0, 0);">what if the file foo.ss will have defined function foo.</span><br style="color: rgb(0, 0, 0);">

<br style="color: rgb(0, 0, 0);"><span style="color: rgb(0, 0, 0);">(define (foo a b) (+ a b)))</span><br style="color: rgb(0, 0, 0);"><span style="color: rgb(0, 0, 0);">(foo 1 2)</span><br style="color: rgb(0, 0, 0);"><br style="color: rgb(0, 0, 0);">

<span style="color: rgb(0, 0, 0);">It makes error:</span><br style="color: rgb(0, 0, 0);"><span style="color: rgb(0, 0, 0);"> Got compile: unbound identifier (and no #%app syntax transformer is bound) (#(struct:exn:fail:syntax compile: unbound identifier (and no #%app syntax transformer is bound) #&lt;continuation-mark-set&gt; </span><br style="color: rgb(0, 0, 0);">

<br style="color: rgb(0, 0, 0);"><span style="color: rgb(0, 0, 0);">Second:</span><br style="color: rgb(0, 0, 0);"><span style="color: rgb(0, 0, 0);">When function foo is defined correctly and called from the eval process and errors occurs in foo, how can we find the caller&#39;s location in order to format an error message?</span><br style="color: rgb(0, 0, 0);">

<span style="color: rgb(0, 0, 0);"></span><br><br clear="all"></font>-- Valeriya<br>