Re: Re: Conca : a small interpreter

Claude Marinier <[email protected]> Wed, 30 Apr 2014 18:53:53 -0400 (EDT)
Newsgroups gmane.comp.lang.concatenative
Message-ID <[email protected]>
--FNN35jkO8yd7YUzMsZw76PvtOmcj-iaGdR5sBVx
Content-Type: text/plain; charset=US-ASCII
Content-Transfer-Encoding: 7bit


On Wed, 30 Apr 2014, [email protected] wrote:
> 
> Interestingly, from the point of view of error checking, the simplified 
> version of my own Furphy (see 
> http://users.beagle.com.au/peterl/furphy.html) doesn't have any possible 
> compile time errors apart from insufficient memory. ALL possible source 
> is syntactically valid, and run time checks are the only meaningful 
> ones! But I also have immediate words to run during compilation to 
> provide syntactic sugar, which not only makes some syntax like matching 
> square brackets and quotation marks necessary, it also provides natural 
> places to test for errors in them. Ideally, the compiler builds up a 
> pretty printed listing as it goes, and syntax failures simply drop error 
> annotations into that while keeping track of the error level reached and 
> making safe-ish default assumptions to try to fill in mismatches; at the 
> end, just before the compiler triggers its compile-and-go run time 
> execution, it should check the error level and only run if an immediate 
> word has specified a safe higher error level than a default of no errors 
> (and there should be a default output of the listing at that stage 
> whether the program runs or not, unless another immediate word has 
> stopped that).
> 
> A good all round guide to this whole area is P.J.Brown's "Writing 
> Interactive Compilers and Interpreters".

I tend to read e-mail from this account in the evening (North America, 
EDT).

I am reading and digesting what you say. That's a lot to think about.

Yes, there is so lottle syntax that all programs are valid. The issue here 
is type checking. At run-time, built-in words check the type of the data 
they use. The dynamic nature of the language make this the default 
behaviour. Static type checking requires knowledge of what the caller 
expects (usually easy) and of what the caller is providing (much more 
difficult).

This is starting to look like "more than I can chew"(1).

Thanks for the comments.

(1) American English has an abundant supply of colourful idiomatic
     expressions.  :-)

-- 
Claude Marinier



--FNN35jkO8yd7YUzMsZw76PvtOmcj-iaGdR5sBVx
Content-Type: text/html; charset=US-ASCII
Content-Transfer-Encoding: 7bit




<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01//EN" "http://www.w3.org/TR/html4/strict.dtd">
<html>
<head>
</head>






 
<body style="background-color: #fff;">
<span style="display:none">&nbsp;</span>

<!--~-|**|PrettyHtmlStartT|**|-~-->
<div id="ygrp-mlmsg" style="position:relative;">
  <div id="ygrp-msg" style="z-index: 1;">
<!--~-|**|PrettyHtmlEndT|**|-~-->

    <div id="ygrp-text" >
      
      
      <p><br>
On Wed, 30 Apr 2014, [email protected] wrote:<br>
&gt; <br>
&gt; Interestingly, from the point of view of error checking, the simplified <br>
&gt; version of my own Furphy (see <br>
&gt; http://users.beagle.com.au/peterl/furphy.html) doesn&#39;t have any possible <br>
&gt; compile time errors apart from insufficient memory. ALL possible source <br>
&gt; is syntactically valid, and run time checks are the only meaningful <br>
&gt; ones! But I also have immediate words to run during compilation to <br>
&gt; provide syntactic sugar, which not only makes some syntax like matching <br>
&gt; square brackets and quotation marks necessary, it also provides natural <br>
&gt; places to test for errors in them. Ideally, the compiler builds up a <br>
&gt; pretty printed listing as it goes, and syntax failures simply drop error <br>
&gt; annotations into that while keeping track of the error level reached and <br>
&gt; making safe-ish default assumptions to try to fill in mismatches; at the <br>
&gt; end, just before the compiler triggers its compile-and-go run time <br>
&gt; execution, it should check the error level and only run if an immediate <br>
&gt; word has specified a safe higher error level than a default of no errors <br>
&gt; (and there should be a default output of the listing at that stage <br>
&gt; whether the program runs or not, unless another immediate word has <br>
&gt; stopped that).<br>
&gt; <br>
&gt; A good all round guide to this whole area is P.J.Brown&#39;s &quot;Writing <br>
&gt; Interactive Compilers and Interpreters&quot;.<br>
<br>
I tend to read e-mail from this account in the evening (North America, <br>
EDT).<br>
<br>
I am reading and digesting what you say. That&#39;s a lot to think about.<br>
<br>
Yes, there is so lottle syntax that all programs are valid. The issue here <br>
is type checking. At run-time, built-in words check the type of the data <br>
they use. The dynamic nature of the language make this the default <br>
behaviour. Static type checking requires knowledge of what the caller <br>
expects (usually easy) and of what the caller is providing (much more <br>
difficult).<br>
<br>
This is starting to look like &quot;more than I can chew&quot;(1).<br>
<br>
Thanks for the comments.<br>
<br>
(1) American English has an abundant supply of colourful idiomatic<br>
     expressions.  :-)<br>
<br>
-- <br>
Claude Marinier<br>
<br>
</p>

    </div>
     

    <!--~-|**|PrettyHtmlStart|**|-~-->
    <div style="color: #fff; height: 0;">__._,_.___</div>

          
  
 

    
    <div style="clear:both"> </div>

    <table cellspacing=4px style="margin-top: 20px; margin-bottom: 10px; color: #2D50FD;">
      <tbody>
        <tr>
          <td style="font-size: 12px; font-family: arial; font-weight: bold; padding: 7px 5px 5px;"  >
                          <a style="text-decoration: none; color: #2D50FD" href="https://groups.yahoo.com/neo/groups/concatenative/conversations/messages/4985;_ylc=X3oDMTJwMHRoN2VnBF9TAzk3MzU5NzE0BGdycElkAzE4MzkyNzQEZ3Jwc3BJZAMxNzA1MDA2NzY0BG1zZ0lkAzQ5ODUEc2VjA2Z0cgRzbGsDcnBseQRzdGltZQMxMzk4ODk4NDM5?act=reply&messageNum=4985">Reply via web post</a>
                      </td>
          <td>&bull;</td>
          <td style="font-size: 12px; font-family: arial; padding: 7px 5px 5px;" >
            <a href="mailto:[email protected]?subject=Re%3A%20%5Bstack%5D%20Re%3A%20Conca%20%3A%20a%20small%20interpreter" style="text-decoration: none; color: #2D50FD;">
               Reply to sender            </a>
          </td>
          <td>&bull;</td>
          <td style="font-size: 12px; font-family: arial; padding: 7px 5px 5px;">
            <a href="mailto:[email protected]?subject=Re%3A%20%5Bstack%5D%20Re%3A%20Conca%20%3A%20a%20small%20interpreter" style="text-decoration: none; color: #2D50FD">
              Reply to group            </a>
          </td>
          <td>&bull;</td>
          <td style="font-size: 12px; font-family: arial; padding: 7px 5px 5px;" >
            <a href="https://groups.yahoo.com/neo/groups/concatenative/conversations/newtopic;_ylc=X3oDMTJlZ3R1M3VjBF9TAzk3MzU5NzE0BGdycElkAzE4MzkyNzQEZ3Jwc3BJZAMxNzA1MDA2NzY0BHNlYwNmdHIEc2xrA250cGMEc3RpbWUDMTM5ODg5ODQzOQ--" style="text-decoration: none; color: #2D50FD">Start a New Topic</a>
          </td>
          <td>&bull;</td>
          <td style="font-size: 12px; font-family: arial; padding: 7px 5px 5px;color: #2D50FD;" >
                            <a href="https://groups.yahoo.com/neo/groups/concatenative/conversations/topics/4969;_ylc=X3oDMTM0bHFtNDA5BF9TAzk3MzU5NzE0BGdycElkAzE4MzkyNzQEZ3Jwc3BJZAMxNzA1MDA2NzY0BG1zZ0lkAzQ5ODUEc2VjA2Z0cgRzbGsDdnRwYwRzdGltZQMxMzk4ODk4NDM5BHRwY0lkAzQ5Njk-" style="text-decoration: none; color: #2D50FD;">Messages in this topic</a>
                (12)
                      </td>
        </tr>
      </tbody>
    </table>

        
<div id="megaphoneModule">
     
    <hr style="height:2px ; border-width:0; color:#E3E3E3; background-color:#E3E3E3;">
</div>

<!------- Start Nav Bar ------>




 

<!-- |**|begin egp html banner|**| -->
<div id="ygrp-vital" style="background-color: #f2f2f2; font-family: Verdana; font-size: 10px; margin-bottom: 10px; padding: 10px;">

    <span id="vithd" style="font-weight: bold; color: #333; text-transform: uppercase; "><a href="https://groups.yahoo.com/neo/groups/concatenative/info;_ylc=X3oDMTJldjMwNGlpBF9TAzk3MzU5NzE0BGdycElkAzE4MzkyNzQEZ3Jwc3BJZAMxNzA1MDA2NzY0BHNlYwN2dGwEc2xrA3ZnaHAEc3RpbWUDMTM5ODg5ODQzOQ--" style="text-decoration: none;">Visit Your Group</a></span>

     <ul style="list-style-type: none; margin: 0; padding: 0; display: inline;">
                                                    </ul>
  </div>


<div id="ft" style="font-family: Arial; font-size: 11px; margin-top: 5px; padding: 0 2px 0 0; clear: both;">
  <a href="https://groups.yahoo.com/neo;_ylc=X3oDMTJkOGFtNDNhBF9TAzk3MzU5NzE0BGdycElkAzE4MzkyNzQEZ3Jwc3BJZAMxNzA1MDA2NzY0BHNlYwNmdHIEc2xrA2dmcARzdGltZQMxMzk4ODk4NDM5" style="float: left;"><img src="http://l.yimg.com/ru/static/images/yg/img/email/new_logo/logo-groups-137x15.png" height="15" width="137" alt="Yahoo! Groups" style="border: 0;"/></a>
  <div style="color: #747575; float: right;"> &bull; <a href="https://info.yahoo.com/privacy/us/yahoo/groups/details.html" style="text-decoration: none;">Privacy</a> &bull; <a href="mailto:[email protected]?subject=Unsubscribe" style="text-decoration: none;">Unsubscribe</a> &bull; <a href="https://info.yahoo.com/legal/us/yahoo/utos/terms/" style="text-decoration: none;">Terms of Use</a> </div>
</div>

<!-- |**|end egp html banner|**| -->

  </div> <!-- ygrp-msg -->

 
  <!-- Sponsor -->
  <!-- |**|begin egp html banner|**| -->
  <div id="ygrp-sponsor" style="width:160px; float:right; clear:none; margin:0 0 25px 0; background: #fff;">

<!-- Start Recommendations -->
<div id="ygrp-reco">
     </div>
<!-- End Recommendations -->



  </div>   <!-- |**|end egp html banner|**| -->

  <div style="clear:both; color: #FFF; font-size:1px;">.</div>
</div>

  <img src="http://geo.yahoo.com/serv?s=97359714/grpId=1839274/grpspId=1705006764/msgId=4985/stime=1398898439" width="1" height="1"> <br>

<img src="http://y.analytics.yahoo.com/fpc.pl?ywarid=515FB27823A7407E&a=10001310322279&js=no&resp=img" width="1" height="1"> 

<div style="color: #fff; height: 0;">__,_._,___</div>
<!--~-|**|PrettyHtmlEnd|**|-~-->

</body>

<!--~-|**|PrettyHtmlStart|**|-~-->
<head>
  <style type="text/css">
  <!--
  #ygrp-mkp {
  border: 1px solid #d8d8d8;
  font-family: Arial;
  margin: 10px 0;
  padding: 0 10px;
}

#ygrp-mkp hr {
  border: 1px solid #d8d8d8;
}

#ygrp-mkp #hd {
  color: #628c2a;
  font-size: 85%;
  font-weight: 700;
  line-height: 122%;
  margin: 10px 0;
}

#ygrp-mkp #ads {
  margin-bottom: 10px;
}

#ygrp-mkp .ad {
  padding: 0 0;
}

#ygrp-mkp .ad p {
  margin: 0;
}

#ygrp-mkp .ad a {
  color: #0000ff;
  text-decoration: none;
}
  #ygrp-sponsor #ygrp-lc {
  font-family: Arial;
}

#ygrp-sponsor #ygrp-lc #hd {
  margin: 10px 0px;
  font-weight: 700;
  font-size: 78%;
  line-height: 122%;
}

#ygrp-sponsor #ygrp-lc .ad {
  margin-bottom: 10px;
  padding: 0 0;
}

  #actions {
    font-family: Verdana;
    font-size: 11px;
    padding: 10px 0;
  }

  #activity {
    background-color: #e0ecee;
    float: left;
    font-family: Verdana;
    font-size: 10px;
    padding: 10px;
  }

  #activity span {
    font-weight: 700;
  }

  #activity span:first-child {
    text-transform: uppercase;
  }

  #activity span a {
    color: #5085b6;
    text-decoration: none;
  }

  #activity span span {
    color: #ff7900;
  }

  #activity span .underline {
    text-decoration: underline;
  }

  .attach {
    clear: both;
    display: table;
    font-family: Arial;
    font-size: 12px;
    padding: 10px 0;
    width: 400px;
  }

  .attach div a {
    text-decoration: none;
  }

  .attach img {
    border: none;
    padding-right: 5px;
  }

  .attach label {
    display: block;
    margin-bottom: 5px;
  }

  .attach label a {
    text-decoration: none;
  }
  
  blockquote {
    margin: 0 0 0 4px;
  }

  .bold {
    font-family: Arial;
    font-size: 13px;
    font-weight: 700;
  }

  .bold a {
    text-decoration: none;
  }

  dd.last p a {
    font-family: Verdana;
    font-weight: 700;
  }

  dd.last p span {
    margin-right: 10px;
    font-family: Verdana;
    font-weight: 700;
  }

  dd.last p span.yshortcuts {
    margin-right: 0;
  }

  div.attach-table div div a {
    text-decoration: none;
  }

  div.attach-table {
    width: 400px;
  }

  div.file-title a, div.file-title a:active, div.file-title a:hover, div.file-title a:visited {
    text-decoration: none;
  }

  div.photo-title a, div.photo-title a:active, div.photo-title a:hover, div.photo-title a:visited {
    text-decoration: none;
  }

  div#ygrp-mlmsg #ygrp-msg p a span.yshortcuts {
    font-family: Verdana;
    font-size: 10px;
    font-weight: normal;
  }

  .green {
    color: #628c2a;
  }

  .MsoNormal {
    margin: 0 0 0 0;
  }

  o {
    font-size: 0;
  }

  #photos div {
    float: left;
    width: 72px;
  }

  #photos div div {
    border: 1px solid #666666;
    height: 62px;
    overflow: hidden;
    width: 62px;
  }

  #photos div label {
    color: #666666;
    font-size: 10px;
    overflow: hidden;
    text-align: center;
    white-space: nowrap;
    width: 64px;
  }

  #reco-category {
    font-size: 77%;
  }

  #reco-desc {
    font-size: 77%;
  }

  .replbq {
    margin: 4px;
  }

  #ygrp-actbar div a:first-child {
   /* border-right: 0px solid #000;*/
    margin-right: 2px;
    padding-right: 5px;
  }

  #ygrp-mlmsg {
    font-size: 13px;
    font-family: Arial, helvetica,clean, sans-serif;
    *font-size: small;
    *font: x-small;
  }

  #ygrp-mlmsg table {
    font-size: inherit;
    font: 100%;
  }

  #ygrp-mlmsg select, input, textarea {
    font: 99% Arial, Helvetica, clean, sans-serif;
  }

  #ygrp-mlmsg pre, code {
    font:115% monospace;
    *font-size:100%;
  }

  #ygrp-mlmsg * {
    line-height: 1.22em;
  }

  #ygrp-mlmsg #logo {
    padding-bottom: 10px;
  }


  #ygrp-msg p a {
    font-family: Verdana;
  }

  #ygrp-msg p#attach-count span {
    color: #1E66AE;
    font-weight: 700;
  }

  #ygrp-reco #reco-head {
    color: #ff7900;
    font-weight: 700;
  }

  #ygrp-reco {
    margin-bottom: 20px;
    padding: 0px;
  }

  #ygrp-sponsor #ov li a {
    font-size: 130%;
    text-decoration: none;
  }

  #ygrp-sponsor #ov li {
    font-size: 77%;
    list-style-type: square;
    padding: 6px 0;
  } 

  #ygrp-sponsor #ov ul {
    margin: 0;
    padding: 0 0 0 8px;
  }

  #ygrp-text {
    font-family: Georgia;
  }

  #ygrp-text p {
    margin: 0 0 1em 0;
  }

  #ygrp-text tt {
    font-size: 120%;
  }

  #ygrp-vital ul li:last-child {
    border-right: none !important; 
  } 
  -->
  </style>
</head>

<!--~-|**|PrettyHtmlEnd|**|-~-->
</html>
<!-- end group email -->


--FNN35jkO8yd7YUzMsZw76PvtOmcj-iaGdR5sBVx--