359360361362363364365366367368369
" '' : ''\n" + " * | str == 'yoyo' : 'ma'\n" + " | else : 'nothing'\n" ).tokenize()); Unit unit = parser.script(file); unit.reduceAll(); Class<?> generated = new AsmCodeEmitter(unit).write(unit); // Inspect. inspect(generated);
385386387388389390391392393394395
" * | ls == 1 : 'one'\n" + " | ls == 2 : 'two'\n" + " | else : 'other'\n" ).tokenize()); Unit unit = parser.script(file); unit.reduceAll(); Class<?> generated = new AsmCodeEmitter(unit).write(unit); // Inspect. inspect(generated);
408409410411412413414415416417418
"reverse(ls) =>\n" + " [] : []\n" + " [x:xs] : reverse(xs) + [x]\n" ).tokenize()); Unit unit = parser.script(file); unit.reduceAll(); Class<?> generated = new AsmCodeEmitter(unit).write(unit); // Inspect. inspect(generated);
430431432433434435436437438439440
" [one, two] | true : [two, one]\n" + " | else : []\n" + " [x:xs] : reverse(xs) + [x]\n" ).tokenize()); Unit unit = parser.script(file); unit.reduceAll(); Class<?> generated = new AsmCodeEmitter(unit).write(unit); // Inspect. inspect(generated);
449450451452453454455456457458459
Parser parser = new LexprParser(new Tokenizer( "lower(obj) =>\n" + " [ x <- obj.name] : x.toLowerCase()\n" ).tokenize()); Unit unit = parser.script(file); unit.reduceAll(); Class<?> generated = new AsmCodeEmitter(unit).write(unit); // Inspect. inspect(generated);
474475476477478479480481482483484
"lower(obj) =>\n" + " List[ x <- obj.name] : x.toUpperCase()\n" + " Map[ x <- obj.name] : x.toLowerCase()\n" ).tokenize()); Unit unit = parser.script(file); unit.reduceAll(); Class<?> generated = new AsmCodeEmitter(unit).write(unit); // Inspect. inspect(generated);
500501502503504505506507508509510
"lower(obj) =>\n" + " List : obj.name.toUpperCase()\n" + " Map : obj.name.toLowerCase()\n" ).tokenize()); Unit unit = parser.script(file); unit.reduceAll(); Class<?> generated = new AsmCodeEmitter(unit).write(unit); // Inspect. inspect(generated);
527528529530531532533534535536537
" lower(@() ->\n" + " 'two')\n" + "\n" ).tokenize()); Unit unit = parser.script(file); unit.reduceAll(); Class<?> generated = new AsmCodeEmitter(unit).write(unit); // Inspect. inspect(generated);
550551552553554555556557558559560
" lower(@(a, b) ->\n" + " a + b)\n" + "\n" ).tokenize()); Unit unit = parser.script(file); unit.reduceAll(); Class<?> generated = new AsmCodeEmitter(unit).write(unit); // Inspect. inspect(generated);
575576577578579580581582583584585
" lower(@(a, b) ->\n" + " a + b + c)\n" + "\n" ).tokenize()); Unit unit = parser.script(file); unit.reduceAll(); Class<?> generated = new AsmCodeEmitter(unit).write(unit); // Inspect. inspect(generated);