<html>
<head>
<meta http-equiv="Content-Type" content="text/html; charset=iso-8859-1">
<style type="text/css" style="display:none;"><!-- P {margin-top:0;margin-bottom:0;} --></style>
</head>
<body dir="ltr">
<div id="divtagdefaultwrapper" dir="ltr" style="">
<div id="divtagdefaultwrapper" dir="ltr" style="color: rgb(0, 0, 0); font-family: Calibri, Helvetica, sans-serif, EmojiFont, "Apple Color Emoji", "Segoe UI Emoji", NotoColorEmoji, "Segoe UI Symbol", "Android Emoji", EmojiSymbols; font-size: 12pt;">
<p>Hi all,</p>
<p><br>
</p>
<p>I took a look into the parser/scanner, let me ask you a few questions:</p>
<p><span style="font-size:12pt"><br>
</span></p>
<p><span style="font-size:12pt">Is it an important requirement that the compiler must be able to understand symbols such as #value::? Should these by valid symbols at all?</span></p>
<p><span style="font-size:12pt">If not, we could change the following line in Scanner >> #xLetter:</span></p>
</div>
<blockquote style="color: rgb(0, 0, 0); font-family: Calibri, Helvetica, sans-serif, EmojiFont, "Apple Color Emoji", "Segoe UI Emoji", NotoColorEmoji, "Segoe UI Symbol", "Android Emoji", EmojiSymbols; font-size: 12pt; margin: 0px 0px 0px 40px; border: none; padding: 0px;">
<div dir="ltr" style="font-size:12pt; color:rgb(0,0,0); font-family:Calibri,Helvetica,sans-serif,EmojiFont,"Apple Color Emoji","Segoe UI Emoji",NotoColorEmoji,"Segoe UI Symbol","Android Emoji",EmojiSymbols">
<p><span style="font-size:12pt"><span>tokenType := (type == #xColon and: [aheadChar ~~ $=] and: [aheadChar ~= $:])</span></span></p>
</div>
</blockquote>
<div dir="ltr" style="color: rgb(0, 0, 0); font-family: Calibri, Helvetica, sans-serif, EmojiFont, "Apple Color Emoji", "Segoe UI Emoji", NotoColorEmoji, "Segoe UI Symbol", "Android Emoji", EmojiSymbols; font-size: 12pt;">
<p>Otherwise, we could insert a validation of selector in #messagePart:repeat:. Something like:</p>
</div>
<br>
<blockquote style="color: rgb(0, 0, 0); font-family: Calibri, Helvetica, sans-serif, EmojiFont, "Apple Color Emoji", "Segoe UI Emoji", NotoColorEmoji, "Segoe UI Symbol", "Android Emoji", EmojiSymbols; font-size: 12pt; margin: 0px 0px 0px 40px; border: none; padding: 0px;">
<div dir="ltr" style="font-size:12pt; color:rgb(0,0,0); font-family:Calibri,Helvetica,sans-serif,EmojiFont,"Apple Color Emoji","Segoe UI Emoji",NotoColorEmoji,"Segoe UI Symbol","Android Emoji",EmojiSymbols">
<p></p>
<div>selector readStream in: [:stream |</div>
<div><span style="white-space: pre;">  </span>words do: [:word |</div>
<div><span style="white-space: pre;">  </span>(stream take: word size - 1)</div>
<div><span style="white-space: pre;">  </span>indexOf: $:</div>
<div><span style="white-space: pre;">  </span>ifPresent: [:index | self notify: 'Argument expected' at: word start + index].</div>
<div><span style="white-space: pre;">  </span>stream skip: 1]].</div>
<p></p>
</div>
</blockquote>
<div dir="ltr" style="color: rgb(0, 0, 0); font-family: Calibri, Helvetica, sans-serif, EmojiFont, "Apple Color Emoji", "Segoe UI Emoji", NotoColorEmoji, "Segoe UI Symbol", "Android Emoji", EmojiSymbols; font-size: 12pt;">
<p><br>
</p>
<p>Looking forward to your thoughts!</p>
<p><br>
</p>
<p>Best,</p>
<p>Christoph</p>
<p><br>
</p>
<p></p>
<div id="Signature">
<div id="divtagdefaultwrapper" dir="ltr" style="font-size:12pt; color:rgb(0,0,0); font-family:Calibri,Helvetica,sans-serif,EmojiFont,"Apple Color Emoji","Segoe UI Emoji",NotoColorEmoji,"Segoe UI Symbol","Android Emoji",EmojiSymbols">
<div name="divtagdefaultwrapper" style="font-family:Calibri,Arial,Helvetica,sans-serif; font-size:; margin:0">
<div><font size="2" color="#808080"></font></div>
</div>
</div>
</div>
</div>
<hr tabindex="-1" style="color: rgb(0, 0, 0); font-family: Calibri, Helvetica, sans-serif, EmojiFont, "Apple Color Emoji", "Segoe UI Emoji", NotoColorEmoji, "Segoe UI Symbol", "Android Emoji", EmojiSymbols; font-size: 12pt; display: inline-block; width: 98%;">
<div id="divRplyFwdMsg" dir="ltr" style="color: rgb(0, 0, 0); font-family: Calibri, Helvetica, sans-serif, EmojiFont, "Apple Color Emoji", "Segoe UI Emoji", NotoColorEmoji, "Segoe UI Symbol", "Android Emoji", EmojiSymbols; font-size: 12pt;">
<font face="Calibri, sans-serif" color="#000000" style="font-size:11pt"><b>Von:</b> Squeak-dev <squeak-dev-bounces@lists.squeakfoundation.org> im Auftrag von Taeumel, Marcel<br>
<b>Gesendet:</b> Freitag, 28. Februar 2020 14:17:20<br>
<b>An:</b> John Pfersich via Squeak-dev<br>
<b>Betreff:</b> Re: [squeak-dev] [BUG] Parser does not detect syntax error with double colon</font>
<div> </div>
</div>
<div style="color: rgb(0, 0, 0); font-family: Calibri, Helvetica, sans-serif, EmojiFont, "Apple Color Emoji", "Segoe UI Emoji", NotoColorEmoji, "Segoe UI Symbol", "Android Emoji", EmojiSymbols; font-size: 12pt;">
<div id="__MailbirdStyleContent" style="font-size:10pt; font-family:Arial; color:#000000">
Hi Christoph.
<div><br>
</div>
<div>Thanks for pointing this out. This issue has been around for like forever. :-) In Squeak 3.8, however, the list of choices was bigger:</div>
<div><br>
</div>
<div><img naturalheight="235" naturalwidth="248" id="23b4e101-0c34-441c-a2aa-b1a1b013c3b1" width="auto" style="user-select: none;" src="cid:c5e6430d-9da0-4890-bf22-d5e98561f9b0"><br>
</div>
<div><br>
</div>
<div>Let's improve this in 6.0alpha :-)</div>
<div><br>
</div>
<div>Best,</div>
<div>Marcel</div>
<div><br>
</div>
<div class="mb_sig"></div>
<blockquote class="history_container" type="cite" style="border-left-style:solid; border-width:1px; margin-top:20px; margin-left:0px; padding-left:10px">
<p style="color:#AAAAAA; margin-top:10px">Am 28.02.2020 13:49:03 schrieb Thiede, Christoph <christoph.thiede@student.hpi.uni-potsdam.de>:</p>
<div style="font-family:Arial,Helvetica,sans-serif">
<div id="divtagdefaultwrapper" dir="ltr" style="font-size:12pt; color:rgb(0,0,0); font-family:Calibri,Helvetica,sans-serif,EmojiFont,"Apple Color Emoji","Segoe UI Emoji",NotoColorEmoji,"Segoe UI Symbol","Android Emoji",EmojiSymbols">
<p><b>Steps to reproduce:</b></p>
<p>Try doIt this (for example, in a workspace):</p>
<p><span>2 raisedTo:: 3.</span><br>
</p>
<p><span><br>
</span></p>
<p><span><b>Expected behavior:</b></span></p>
<p><span>2 raisedTo:<span style="background-color:rgb(190,190,190)">"Argument expected ->"</span>: 3.</span><br>
</p>
<p><span><br>
</span></p>
<p><span><b>Actual behavior:</b></span></p>
<p><span><b><img size="5301" id="img919110" tabindex="0" style="max-width: 99.9%; user-select: none;" src="cid:c80a10c0-c0f3-449a-b34d-733c44256241"><br>
</b></span></p>
<p><span>If you are thumb enough to choose #raisedTo:: (I was), you get a subsequent error:</span></p>
<p><span><img size="21890" id="img496336" tabindex="0" style="max-width: 99.9%; user-select: none;" src="cid:c80d78da-81df-4634-82c0-1721a66c80c2"><br>
</span></p>
<p><span>Even worse: If you try to doIt the same code snippet again, no parser warning/error will be raised at all but you get a runtime error:</span></p>
<p><span><span>MessageNotUnderstood: SmallInteger>>raisedTo::.</span><br>
</span></p>
<p><span><span><br>
</span></span></p>
<p><span><span>Best,</span></span></p>
<p><span><span>Christoph</span></span></p>
<div id="Signature">
<div id="divtagdefaultwrapper" dir="ltr" style="font-size:12pt; color:rgb(0,0,0); font-family:Calibri,Helvetica,sans-serif,EmojiFont,"Apple Color Emoji","Segoe UI Emoji",NotoColorEmoji,"Segoe UI Symbol","Android Emoji",EmojiSymbols">
<div name="divtagdefaultwrapper" style="font-family:Calibri,Arial,Helvetica,sans-serif; font-size:; margin:0">
<div><span style="font-size:10pt; color:#808080"></span></div>
</div>
</div>
</div>
</div>
</div>
</blockquote>
</div>
</div>
</div>
</body>
</html>