On Sat, Mar 10, 2018 at 3:04 AM, Harald van Dijk <harald@xxxxxxxxxxx> wrote: > On 3/8/18 1:40 AM, Harald van Dijk wrote: >> >> If the syntax stack is to be stored on the actual stack, then real >> recursion could be used instead, as attached. > > > Even though it won't be accepted in dash, I continued with this approach for > my own use. I've now got it to about 1800 bytes smaller (at -Os -s). > > After the other changes I'd done, it became apparent to me that the syntax > tables were unnecessary, and that they'd become fairly easy to get rid of. > This was a big space saver that may be possible to apply to your version as > well. I ported all recent dash commits to bbox ash. Nice! I indeed feel that recursion is better implemented via function stack recursion rather than linked list of alloca()ed structs. Poor gcc has hard time optimizing readtoken1() atrocity as it stands. I was trying some of the beautiful atrocities from one of earlier Harald's emails and this one fails in current dash git: # x="''''"; echo "${x#"${x+''}"''}" dash: 12: Syntax error: Missing '}' -- To unsubscribe from this list: send the line "unsubscribe dash" in the body of a message to majordomo@xxxxxxxxxxxxxxx More majordomo info at http://vger.kernel.org/majordomo-info.html