!7 !include #1007990 // new englishToLisp_multi sS stuffToParse = [[ 1 1 - 2 1 - 2 - 3 1 - (2 - 3) (4 - 3) - 2 100 / (10 * 2) 100 / 10 / 10 ]]; sS concepts = [[ ["jcnbmtmfzktxhzyf", "X + Y"], ["jxcubqjtqykhfvyo", "X - Y", "as in minus"], ["erdirznfvsrbtfns", "X / Y", "division"], ["bwqhmnorjpyomdbv", "X * Y", "multiplication"], ["mcoswmplpqlieruo", "(X)"], ["olphazqzxxnvtjcx", "X evaluates through standard function Y."], ["wwaprwlmqzqeaikp", "A leaf satisfying standard function X evaluates through standard function Y."], ["hkihrqgdlkdayxzn", "X is just bracketing."], ]]; sS statements = [[ olphazqzxxnvtjcx jcnbmtmfzktxhzyf "plus" olphazqzxxnvtjcx jxcubqjtqykhfvyo "minus" olphazqzxxnvtjcx bwqhmnorjpyomdbv "multiply" olphazqzxxnvtjcx erdirznfvsrbtfns "divide" hkihrqgdlkdayxzn mcoswmplpqlieruo wwaprwlmqzqeaikp "javaSingleToken_isInteger" "javaSingleToken_bigint" ]]; p-tt { centerHigherConsole(); useConceptsAndCLStatements(concepts, statements); //set englishToConceptLanguage_xyz_debug; //set hygienicParse1_debug; for (S line : toLinesFullTrim(stuffToParse)) testParse(line); } svoid testParse(S s) { print(" Parsing: " + s); Lisp l = hygienicParse1(s); if (l != null) printIndent("Parsed as: " + l); S result = null; pcall { if (l != null) result = str(eval(l)); } printIndent(s + " = " + or(result, "?")); print(); } static O eval(Lisp l) { ret generalLispEval(l); }