attr = LT(1); match(ATTRIB);
match(AT); attr=qname();
	public final Expression  step(		PathExpr expr	) throws RecognitionException, TokenStreamException, PermissionDeniedException,EXistException {		Expression step;				Token  attr = null;		Token  any = null;		Token  anyAttr = null;		step = null; 		String qn;						switch ( LA(1)) {		case ATTRIB:		{			attr = LT(1);			match(ATTRIB);			if ( inputState.guessing==0 ) {											step = new LocationStep(pool,								Constants.ATTRIBUTE_AXIS,								new NameTest(attr.getText()));							expr.add(step);								}			break;		}		case STAR:		{			any = LT(1);			match(STAR);			if ( inputState.guessing==0 ) {											step = new LocationStep(pool,								-1,								new TypeTest(Constants.ELEMENT_NODE));							expr.add(step);								}			break;		}		case ATTRIB_STAR:		{			anyAttr = LT(1);			match(ATTRIB_STAR);			if ( inputState.guessing==0 ) {										step = new LocationStep(pool, Constants.ATTRIBUTE_AXIS, new TypeTest(Constants.ATTRIBUTE_NODE));						expr.add(step);								}			break;		}		case LITERAL_node:		{			match(LITERAL_node);			match(LPAREN);			match(RPAREN);			if ( inputState.guessing==0 ) {											step = new LocationStep(pool, -1, new TypeTest(Constants.NODE_TYPE));							expr.add(step);								}			break;		}		case PARENT:		{			match(PARENT);			if ( inputState.guessing==0 ) {											step = new LocationStep(pool, 								Constants.PARENT_AXIS,								new TypeTest(Constants.NODE_TYPE));							expr.add(step);								}			break;		}		case SELF:		{			match(SELF);			if ( inputState.guessing==0 ) {											step = new LocationStep(pool,								Constants.SELF_AXIS,								new TypeTest(Constants.NODE_TYPE));							expr.add(step);								}			break;		}		case NCNAME:		{			qn=qname();			if ( inputState.guessing==0 ) {											step = new LocationStep( pool, -1,								new NameTest(qn));							expr.add(step);								}			break;		}		case LPAREN:		case CONST:		case INT:		case LITERAL_text:		case 32:		case 33:		case LITERAL_contains:		case LITERAL_match:		case LITERAL_near:		case FUNC:		{			step=primary_expr(expr);			break;		}		default:		{			throw new NoViableAltException(LT(1), getFilename());		}		}		return step;	}