<div dir="ltr"><div class="gmail_default" style="font-family:arial,helvetica,sans-serif;font-size:small">​<span style="color:rgb(34,34,34);font-family:arial,sans-serif;font-size:12.8px;font-style:normal;font-variant-ligatures:normal;font-variant-caps:normal;font-weight:400;letter-spacing:normal;text-align:start;text-indent:0px;text-transform:none;white-space:normal;word-spacing:0px;background-color:rgb(255,255,255);text-decoration-style:initial;text-decoration-color:initial;float:none;display:inline">Diego Sardina wrote:</span>​</div><br style="color:rgb(34,34,34);font-family:arial,sans-serif;font-size:12.8px;font-style:normal;font-variant-ligatures:normal;font-variant-caps:normal;font-weight:400;letter-spacing:normal;text-align:start;text-indent:0px;text-transform:none;white-space:normal;word-spacing:0px;background-color:rgb(255,255,255);text-decoration-style:initial;text-decoration-color:initial"><span style="color:rgb(34,34,34);font-family:arial,sans-serif;font-size:12.8px;font-style:normal;font-variant-ligatures:normal;font-variant-caps:normal;font-weight:400;letter-spacing:normal;text-align:start;text-indent:0px;text-transform:none;white-space:normal;word-spacing:0px;background-color:rgb(255,255,255);text-decoration-style:initial;text-decoration-color:initial;float:none;display:inline"><div class="gmail_default" style="font-family:arial,helvetica,sans-serif;font-size:small;display:inline">> </div>In the past I never saw procedure variables as a solution for circular reference, but at this point I prefer forward reference.</span><br style="color:rgb(34,34,34);font-family:arial,sans-serif;font-size:12.8px;font-style:normal;font-variant-ligatures:normal;font-variant-caps:normal;font-weight:400;letter-spacing:normal;text-align:start;text-indent:0px;text-transform:none;white-space:normal;word-spacing:0px;background-color:rgb(255,255,255);text-decoration-style:initial;text-decoration-color:initial"><span style="color:rgb(34,34,34);font-family:arial,sans-serif;font-size:12.8px;font-style:normal;font-variant-ligatures:normal;font-variant-caps:normal;font-weight:400;letter-spacing:normal;text-align:start;text-indent:0px;text-transform:none;white-space:normal;word-spacing:0px;background-color:rgb(255,255,255);text-decoration-style:initial;text-decoration-color:initial;float:none;display:inline"><div class="gmail_default" style="font-family:arial,helvetica,sans-serif;font-size:small;display:inline">> </div>Also they don't really come for free especially in runtime, it is another level of indirection and they prevent the compiler to inline them.</span><div><span style="font-size:12.8px"><br></span></div><div><span style="font-size:12.8px">T<div class="gmail_default" style="font-family:arial,helvetica,sans-serif;font-size:small;display:inline">​he compiler can't inline these procedures anyway, as they are involved in recursion (and thus have to be forward-referenced in some way).</div></span></div><div><span style="font-size:12.8px"><div class="gmail_default" style="font-family:arial,helvetica,sans-serif;font-size:small;display:inline">I'm using procedure variables in my Oberon compiler, like N. Wirth does in Project Oberon. Didn't think about nesting all of these procedures inside Expression.</div></span></div><div><span style="font-size:12.8px"><div class="gmail_default" style="font-family:arial,helvetica,sans-serif;font-size:small;display:inline"><br></div></span></div><div><span style="font-size:12.8px"><div class="gmail_default" style="font-family:arial,helvetica,sans-serif;font-size:small;display:inline">By the way, does anybody know why in NW's compiler procedures "expression0", "</div></span><font face="arial, helvetica, sans-serif">qualident<div class="gmail_default" style="font-family:arial,helvetica,sans-serif;font-size:small;display:inline">​", "selector", "element", "set", "factor", "term" (but not "SimpleExpression" for example) </div></font><span style="font-family:arial,helvetica,sans-serif">start from a small letter?</span></div><div><div class="gmail_extra"><br></div></div></div>