@Override protected boolean endOfDecl(ItemList list, Item item) { // Both (base...) and (prefix...) have one decl item if ( declList == list && list.size() == 2 ) { declList = null ; return true ; } return false ; }
private boolean isTaggable() { if ( ! isList() ) return false ; if ( list.size() == 0 ) return false ; return true ; }
final private void addOps(OpN op, ItemList list) { for ( int i = 1 ; i < list.size() ; i++ ) { Op sub = build(list, i) ; op.add(sub) ; } }
static boolean startsWithDistinct(ItemList x) { if ( x.size() > 0 && x.car().isSymbol(Tags.tagDistinct) ) return true ; return false ; }
public static Triple buildTriple(ItemList list) { if ( list.size() != 3 && list.size() != 4 ) BuilderLib.broken(list, "Not a triple", list); if ( list.size() == 4 ) { if ( !list.get(0).isSymbol(Tags.tagTriple) ) BuilderLib.broken(list, "Not a triple"); list = list.cdr(); } return _buildNode3(list); }
public static List<Var> buildVarList(ItemList list) { if ( list.size() > 0 && list.getFirst().isSymbol(Tags.tagVars) ) list = list.cdr() ; List<Var> vars = new ArrayList<>() ; for (Item x : list) { Var v = buildVar(x) ; vars.add(v) ; } return vars ; }
public static void checkTagged(Item item, int len, String tag, String msg) { if ( item.isTagged(tag) && item.getList().size() == len ) return; broken(item, msg, item); }
public static ItemList skipTag(ItemList list, String tag) { if ( list.size() > 0 ) { if ( list.get(0).isSymbol(tag) ) list = list.cdr(); } return list; } }
private static ExprList buildExprListUntagged(ItemList list, int idx) { ExprList exprList = new ExprList() ; for ( int i = idx ; i < list.size() ; i++ ) { Item item = list.get(i) ; exprList.add(buildExpr(item)) ; } return exprList ; }
public static void checkTag(ItemList list, String tag) { if ( list.size() == 0 ) broken(list, "Empty list"); if ( !list.get(0).isSymbolIgnoreCase(tag) ) broken(list, "List does not start (" + tag + "...) : " + list.shortString()); }
@Override public Op make(ItemList list) { BuilderLib.checkLength(3, list, "assign") ; VarExprList x = BuilderExpr.buildNamedExprOrExprList(list.get(1)) ; Op sub ; if ( list.size() == 2 ) sub = OpTable.unit() ; else sub = build(list, 2) ; return OpAssign.create(sub, x) ; } } ;
@Override public Expr make(ItemList list) { BuilderLib.checkLength(3,4, list, "substr: wanted 2 or 3 arguments: got: "+numArgs(list)) ; Expr ex = buildExpr(list.get(1)) ; Expr x = buildExpr(list.get(2)) ; Expr y = null ; if ( list.size() == 4 ) y = buildExpr(list.get(3)) ; return new E_StrSubstring(ex, x, y) ; } } ;
@Override public Expr make(ItemList list) { BuilderLib.checkLength(3, 4, list, "Regex: wanted 2 or 3 arguments") ; Expr expr = buildExpr(list.get(1)) ; Expr pattern = buildExpr(list.get(2)) ; Expr flags = null ; if ( list.size() != 3 ) flags = buildExpr(list.get(3)) ; return new E_Regex(expr, pattern, flags) ; } };
@Test public void testList_1() { Item item = parse("()") ; assertTrue(item.isList()) ; assertEquals(item.getList().size(), 0 ) ; }
private void testList(String str, Item item1) { Item item = parse(str) ; assertTrue(item.isList()) ; Item i = item.getList().get(0) ; assertEquals(1, item.getList().size()) ; assertEquals(item.getList().get(0), item1) ; }
private void testList(String str, Item item1, Item item2) { Item item = parse(str) ; assertTrue(item.isList()) ; assertEquals(2, item.getList().size()) ; assertEquals(item.getList().get(0), item1) ; assertEquals(item.getList().get(1), item2) ; }
private void testList(String str, Item item1, Item item2, Item item3) { Item item = parse(str) ; assertTrue(item.isList()) ; assertEquals(3, item.getList().size()) ; assertEquals(item.getList().get(0), item1) ; assertEquals(item.getList().get(1), item2) ; assertEquals(item.getList().get(2), item3) ; }