def visitShapeAtomNodeConstraint(self, ctx: ShExDocParser.ShapeAtomNodeConstraintContext):
nc = ShexNodeExpressionParser(self.context)<EOL>nc.visit(ctx.nodeConstraint())<EOL>if ctx.shapeOrRef():<EOL><INDENT>self.expr = ShapeAnd(id=self.label, shapeExprs=[nc.nodeconstraint])<EOL>sorref_parser = ShexShapeExpressionParser(self.context)<EOL>sorref_parser.visit(ctx.shapeOrRef())<EOL>self.expr.shapeExprs.append(sorref_parser.expr)<EOL><DEDENT>else:<EOL><INDENT>self.expr = nc.nodeconstraint<EOL>self.expr.id = self.label<EOL><DEDENT>
shapeAtomNodeConstraint: nodeConstraint shapeOrRef?  # shapeAtomNodeConstraint