private Factor parseFactor() {
		//System.out.println("parseFactor");
		Factor factor = null;
		switch (showNext().getKind()){
		case "ident":
			factor = new IdentSelector();
			((IdentSelector) factor).setIdent(new Identifier(acceptIt()));
			((IdentSelector) factor).setSelector(parseSelector());
			break;
		case "integer":
			factor = new Number(acceptIt());
			break;
		case "lp":
			factor = new ExprFactor();
			acceptIt();
			((ExprFactor) factor).setExpr(parseExpression());
			expect("rp");
			break;
		case "tilde":
			factor = new TildeFactor();
			acceptIt();
			((TildeFactor) factor).setExpr(parseFactor());
			break;
		default:
			this.console.setText(this.console.getText() + "<br> Error at: L" +showNext().getPos()[0] +"c"+showNext().getPos()[1]+" expecting : identifier number '(' or '~' got " + showNext().getKind());
			break;
		}
		return factor;
	}