/* Input is e.g. "32p 8c". We want to get out the 2 operators. Then we apply a "puzzler" which tries to combine the operators in a useful way. // Operators p = scaleToHeight : IBWntegralImage -> BWImage c = posterize : BWImage -> BWImage // Juxtaposition of operators _ _ = juxtapose : Op, Op -> Op [left-assoc] */ sclass GazelleVParser > SimpleLeftToRightParser { *(S text) { super(text); set caseInsensitive; } void parse { while (mainLoop()) {} if (isInteger(token)) { int i = parseInt(token); S token = tpp(); if (is("p")) scaleToHeight(i); else if (is("c")) posterize(i); else if (is("w")) scaleWidthOnly(i); else unknownToken(); } else if (is("rasters")) push(reproduceRasterBars(bwIntegralImage())); else if (is("struct")) push(struct(value())); else if (is("niceStruct")) push(sfuIndent(value())); else if (is("className")) push(className(value())); else if (is("borderImage")) push(bwImage = gazelle22_borderImage(bwImage)); else if (is("gradientImage")) push(bwImage = new Gazelle22_GradientImage(bwImage)!); else if (is("q1")) clip(0, .5, 0, .5); else if (is("q2")) clip(.5, 1, 0, .5); else if (is("q3")) clip(0, .5, .5, 1); else if (is("q4")) clip(.5, 1, .5, 1); else if (is("original")) push(toBufferedImage(inputImage)); else { warn("Unknown token: " + token); }