
    <i                     Z    S r SSKJrJr  SSKJr  SSKJr  SSKJ	r	  SSK
Jr  SS	KJr  S
 rg)z?
Validates a user entered pattern against STIXPattern grammar.
    )CommonTokenStreamParseTreeWalker   )object_validator   )STIXPatternErrorListener)STIXPatternLexer)STIXPatternParser)InspectionListenerc                    [        5       n[        U 5      nUR                  5         [        U5      n[	        U5      nUR                  5         UR                  U5        [        UR                  5       H)  u  pVUS:X  d  M  UR                  U   UR                  U'   M+     UR                  5       n[        5       n[        UR                  5      S:X  ag  [        R                  R                  X5        UR!                  5       n	["        R$                  " U	5      n
U
(       a  UR                  R'                  U
5        UR                  $ )z
Validates a pattern against the STIX Pattern grammar.  Error messages are
returned in a list.  The test passed if the returned list is empty.
z	<INVALID>r   )r   r	   removeErrorListenersr   r
   addErrorListener	enumerateliteralNamessymbolicNamespatternr   lenerr_stringsr   DEFAULTwalkpattern_datar   verify_objectextend)r   parseErrListenerlexerstreamparserilit_nametreeinspection_listener	patt_dataobj_validator_resultss              U/home/james-whalen/.local/lib/python3.13/site-packages/stix2patterns/v20/validator.pyrun_validatorr%      s   
 01W%E	 u%Fv&F !
,-
 !!4!45|#%+%9%9!%<F" 6 >>D,. ''(A-$$%8?'446	 0 > >y I ((//0EF'''    N)__doc__antlr4r   r    r   
exceptionsr   grammars.STIXPatternLexerr	   grammars.STIXPatternParserr
   	inspectorr   r%    r&   r$   <module>r/      s#    6  1 7 9 )&(r&   