def visitNumericFacet(self, ctx: ShExDocParser.NumericFacetContext):
if ctx.numericRange():<EOL><INDENT>numlit = self.context.numeric_literal_to_type(ctx.numericLiteral())<EOL>if ctx.numericRange().KW_MINEXCLUSIVE():<EOL><INDENT>self.nodeconstraint.minexclusive = numlit<EOL><DEDENT>elif ctx.numericRange().KW_MAXEXCLUSIVE():<EOL><INDENT>self.nodeconstraint.maxexclusive = numlit<EOL><DEDENT>elif ctx.numericRange().KW_MININCLUSIVE():<EOL><INDENT>self.nodeconstraint.mininclusive = numlit<EOL><DEDENT>elif ctx.numericRange().KW_MAXINCLUSIVE():<EOL><INDENT>self.nodeconstraint.maxinclusive = numlit<EOL><DEDENT><DEDENT>else:<EOL><INDENT>nlen = jsg.Integer(ctx.INTEGER().getText())<EOL>if ctx.numericLength().KW_TOTALDIGITS():<EOL><INDENT>self.nodeconstraint.totaldigits = nlen<EOL><DEDENT>elif ctx.numericLength().KW_FRACTIONDIGITS():<EOL><INDENT>self.nodeconstraint.fractiondigits = nlen<EOL><DEDENT><DEDENT>
numericFacet: numericRange numericLiteral | numericLength INTEGER
            numericRange: KW_MINEXCLUSIVE | KW_MININCLUSIVE | KW_MAXEXCLUSIVE | KW_MAXINCLUSIVE 
            numericLength: KW_TOTALDIGITS | KW_FRACTIONDIGITS