�� r�$Lc�����������@���s ��d��Z��d�Z�d�d�k�Z�d�d�k�Z�d�d�k�Z�d�Z�d�Z�e�o��e�i�d�d�d���Z�d �e �f�d �������YZ �d�e �f�d�������YZ�d �e �f�d�������YZ�d�e �f�d�������YZ �d�e �f�d�������YZ�d�e �f�d�������YZ�e�d���Z�e�d�d���Z�n �d����Z�d�S(���s3���SCons.Tool.JavaCommon Stuff for processing Java. sB���src/engine/SCons/Tool/JavaCommon.py 5023 2010/06/14 22:05:46 sconsi����Ni���s���1.4s&���(\n|\\\\|//|\\[\'"]|[\'"\{\}\;\.\(\)]|s+���\d*\.\d*|[A-Za-z_][\w\$\.]*|<[A-Za-z_]\w+>|s ���/\*|\*/|\[\])t ���OuterStatec�����������B���s}���e��Z�d��Z�e�d���Z�d����Z�d����Z�d����Z�d����Z�d����Z �d����Z �d����Z�d ����Z�d ����Z �d����Z�d����Z�RS( ���sg���The initial state for parsing a Java file for classes, interfaces, and anonymous inner classes.c������ ���C���s����|�d�j�o�d �|�}�t��|�����n�|�|��_�g��|��_�g��|��_�g��|��_�d �|��_�d�|��_�g��|��_�g��|��_�d �g�g�|��_ �d��|��_�d��S( ���Ns���1.1s���1.2s���1.3s���1.4s���1.5s���1.6t���5t���6s���Java version %s not supportedi����i���(���s���1.1s���1.2s���1.3s���1.4s���1.5s���1.6R���R���(���t���NotImplementedErrort���versiont���listClassest���listOutputst ���stackBracketst���bracketst���nextAnont���localClassest���stackAnonClassBracketst���anonStacksStackt���Nonet���package(���t���selfR���t���msg(����(����s8���install/lib/scons-2.0.0.final.0/SCons/Tool/JavaCommon.pyt���__init__A���s���� c���������C���s���d��S(���N(����(���R���(����(����s8���install/lib/scons-2.0.0.final.0/SCons/Tool/JavaCommon.pyt���traceS���s����c���������C���s;���y�|��i��SWn)�t�j �o�t�|����}�|�|��_��|�SXd��S(���N(���t ���classStatet���AttributeErrort ���ClassState(���R���t���ret(����(����s8���install/lib/scons-2.0.0.final.0/SCons/Tool/JavaCommon.pyt���__getClassStateV���s���� c���������C���s;���y�|��i��SWn)�t�j �o�t�|����}�|�|��_��|�SXd��S(���N(���t���packageStateR���t���PackageState(���R���R���(����(����s8���install/lib/scons-2.0.0.final.0/SCons/Tool/JavaCommon.pyt���__getPackageState^���s���� c���������C���sM���y�|��i��SWn;�t�j �o/�|��|��_�t�d�t�|������}�|�|��_��|�SXd��S(���Ni���(���t ���anonStateR���t���outer_statet ���SkipStatet���AnonClassState(���R���R���(����(����s8���install/lib/scons-2.0.0.final.0/SCons/Tool/JavaCommon.pyt���__getAnonClassStatef���s���� c���������C���s>���y�|��i��SWn,�t�j �o �t�d�|����}�|�|��_��|�SXd��S(���Ni���(���t ���skipStateR���R���(���R���R���(����(����s8���install/lib/scons-2.0.0.final.0/SCons/Tool/JavaCommon.pyt���__getSkipStateo���s���� c���������C���s���|��i��d�S(���Ni����(���R���(���R���(����(����s8���install/lib/scons-2.0.0.final.0/SCons/Tool/JavaCommon.pyt���__getAnonStackw���s����c���������C���s���|��i��d�|��_��d��S(���Ni���(���R���(���R���(����(����s8���install/lib/scons-2.0.0.final.0/SCons/Tool/JavaCommon.pyt���openBracketz���s����c���������C���s����|��i��d�|��_��t�|��i���ok�|��i��|��i�d�j�oT�|��i�i�d�i�|��i�����|��i�i����|��i�i����|��i �i����|��i�i����n�t�|��i ���o8�|��i��|��i �d�j�o!�|��i����i����|��i �i����n�d��S(���Ni���i����t���$(���R���t���lenR���R���t���appendt���joinR���R ���t���popR���R���t���_OuterState__getAnonStack(���R���(����(����s8���install/lib/scons-2.0.0.final.0/SCons/Tool/JavaCommon.pyt���closeBracket}���s���� c���������C���sF��|�d� d�j�o�t��d�|����S|�d�j�o�t��d�|����S|�d�j�o�|��i����n��|�d�j�o�|��i����n��|�d�j�o�t��|�|����S|�d �j�o,�t�|��i���d�j�o�|��i����S|��i����S|�d�j�oA�t�|��i���d�j�o �d�|��_�n�|��i�i �|��i ���|��i����S|�d�j�o�|��i����S|�d�j�o�|��i����S|��S(���Ni���s���//s��� s���/*s���*/t���{t���}t���"t���'t���newi����t���classt ���interfacet���enumi���R���t���.(���R-���R.���(���R0���R1���R2���( ���t���IgnoreStateR#���R*���R%���R���t���_OuterState__getAnonClassStatet���_OuterState__getSkipStateR ���R���R&���R���t���_OuterState__getClassStatet���_OuterState__getPackageState(���R���t���token(����(����s8���install/lib/scons-2.0.0.final.0/SCons/Tool/JavaCommon.pyt ���parseToken����s0���� c���������C���s��|��i��d�j�o.�|��i�d�}�|��i�i�d�|�|��i�f���n��|��i��d�j�o��|��i�i�|��i���g��}�|�i�|��i���|��i����d�d�|��i����d�<x'�|��i����D]�}�|�i�t �|�����q��W|��i�i�d �i �|�����n�|��i�d�|��_�|��i����i�d���d�S(���s���Add an anonymous inner classs���1.1s���1.2s���1.3s���1.4i����s���%s$%ds���1.5s���1.6R���R���i����i���R$���N(���s���1.1s���1.2s���1.3s���1.4(���s���1.5s���1.6R���R���(���R���R���R���R&���R ���R���R���t���extendR)���t���strR'���(���R���t���clazzt ���classNamet���anon(����(����s8���install/lib/scons-2.0.0.final.0/SCons/Tool/JavaCommon.pyt���addAnonClass����s���� ! �c���������C���s ���|�|��_��d��S(���N(���R���(���R���R���(����(����s8���install/lib/scons-2.0.0.final.0/SCons/Tool/JavaCommon.pyt ���setPackage����s����(���t���__name__t ���__module__t���__doc__t���default_java_versionR���R���R7���R8���R5���R6���R)���R#���R*���R:���R@���RA���(����(����(����s8���install/lib/scons-2.0.0.final.0/SCons/Tool/JavaCommon.pyR����>���s��� R���c�����������B���s ���e��Z�d��Z�d����Z�d����Z�RS(���s/���A state that looks for anonymous inner classes.c���������C���s"���|�i��|��_��|�|��_�d�|��_�d��S(���Ni����(���R���t ���old_statet���brace_level(���R���RF���(����(����s8���install/lib/scons-2.0.0.final.0/SCons/Tool/JavaCommon.pyR�������s���� c���������C���s5��|�d� d�j�o�t��d�|����S|�d�j�o�t��d�|����S|�d�j�o�|��S|�d�d�j�o�|�d�d �j�o�|��S|�d �j�o�|��i�d�|��_�|��S|��i�d�j�ob�|�d�j�o�t�d�t�|������S|�d�j�o�t��|�|����S|�d�j�o�|��i�d�|��_�n�|��S|�d�j�o�|��i�i����n�|��i�i�|���S(���Ni���s���//s��� s���/*s���*/i����t���<i����t���>t���(i���R/���R-���R.���t���)R+���(���R-���R.���(���R4���RG���R���R���R���R@���RF���R:���(���R���R9���(����(����s8���install/lib/scons-2.0.0.final.0/SCons/Tool/JavaCommon.pyR:�������s,���� " (���RB���RC���RD���R���R:���(����(����(����s8���install/lib/scons-2.0.0.final.0/SCons/Tool/JavaCommon.pyR�������s��� R���c�����������B���s ���e��Z�d��Z�d����Z�d����Z�RS(���sc���A state that will skip a specified number of tokens before reverting to the previous state.c���������C���s���|�|��_��|�|��_�d��S(���N(���t���tokens_to_skipRF���(���R���RL���RF���(����(����s8���install/lib/scons-2.0.0.final.0/SCons/Tool/JavaCommon.pyR�������s���� c���������C���s,���|��i��d�|��_��|��i��d�j��o�|��i�S|��S(���Ni���(���RL���RF���(���R���R9���(����(����s8���install/lib/scons-2.0.0.final.0/SCons/Tool/JavaCommon.pyR:�������s����(���RB���RC���RD���R���R:���(����(����(����s8���install/lib/scons-2.0.0.final.0/SCons/Tool/JavaCommon.pyR�������s��� R���c�����������B���s ���e��Z�d��Z�d����Z�d����Z�RS(���s<���A state we go into when we hit a class or interface keyword.c���������C���s ���|�|��_��d��S(���N(���R���(���R���R���(����(����s8���install/lib/scons-2.0.0.final.0/SCons/Tool/JavaCommon.pyR�������s����c���������C���s����|�d�j�o�|��S|��i��i�o��|��i��i�d�|��i��i�d�d�j�oh�|��i��i�d�}�y �|�|�}�|�|�d�|�|�<Wn�t�j �o�d�|�|�<n�Xt�|�|���|�}�n�|��i��i�i�h����|��i��i�i�|���|��i��i�i�d�g���|��i��S(���Ns��� i����i����i���i����(���R���R ���R���t���KeyErrorR<���R&���R���R���(���R���R9���t���localst���idx(����(����s8���install/lib/scons-2.0.0.final.0/SCons/Tool/JavaCommon.pyR:�������s ���� (���RB���RC���RD���R���R:���(����(����(����s8���install/lib/scons-2.0.0.final.0/SCons/Tool/JavaCommon.pyR�������s��� R4���c�����������B���s ���e��Z�d��Z�d����Z�d����Z�RS(���sO���A state that will ignore all tokens until it gets to a specified token.c���������C���s���|�|��_��|�|��_�d��S(���N(���t���ignore_untilRF���(���R���RP���RF���(����(����s8���install/lib/scons-2.0.0.final.0/SCons/Tool/JavaCommon.pyR��� ��s���� c���������C���s���|��i��|�j�o�|��i�S|��S(���N(���RP���RF���(���R���R9���(����(����s8���install/lib/scons-2.0.0.final.0/SCons/Tool/JavaCommon.pyR:��� ��s����(���RB���RC���RD���R���R:���(����(����(����s8���install/lib/scons-2.0.0.final.0/SCons/Tool/JavaCommon.pyR4�����s��� R���c�����������B���s ���e��Z�d��Z�d����Z�d����Z�RS(���st���The state we enter when we encounter the package keyword. We assume the next token will be the package name.c���������C���s ���|�|��_��d��S(���N(���R���(���R���R���(����(����s8���install/lib/scons-2.0.0.final.0/SCons/Tool/JavaCommon.pyR�����s����c���������C���s���|��i��i�|���|��i��S(���N(���R���RA���(���R���R9���(����(����s8���install/lib/scons-2.0.0.final.0/SCons/Tool/JavaCommon.pyR:�����s����(���RB���RC���RD���R���R:���(����(����(����s8���install/lib/scons-2.0.0.final.0/SCons/Tool/JavaCommon.pyR�����s��� c���������C���s���t��t�|��d���i����|���S(���Nt���r(���t ���parse_javat���opent���read(���t���fnR���(����(����s8���install/lib/scons-2.0.0.final.0/SCons/Tool/JavaCommon.pyt���parse_java_file��s����c���������C���s����d�}�t�|���}�|�}�x>�t�i�|����D]-�}�|�i�|���}�|�o�|�|�|���q(�q(�W|�i�o�|�i�i�d�t�i���}�n�|�|�i �f�S(���s����Parse a .java file and return a double of package directory, plus a list of .class files that compiling that .java file will produceR3���N( ���R ���R����t���_reTokent���findallR:���R���t���replacet���ost���sepR���(���t���contentsR���R���R���t���initialt ���currstateR9���(����(����s8���install/lib/scons-2.0.0.final.0/SCons/Tool/JavaCommon.pyRR�����s������ c���������C���s���t��i�i�t���S(���s���� "Parse" a .java file. This actually just splits the file name, so the assumption here is that the file name matches the public class name, and that the path to the file is the same as the package name. (���RZ���t���patht���splitt���file(���RU���(����(����s8���install/lib/scons-2.0.0.final.0/SCons/Tool/JavaCommon.pyRV���6��s����(���RD���t���__revision__RZ���t���os.patht���ret���java_parsingRE���t���compileRW���t���objectR����R���R���R���R4���R���RV���R ���RR���(����(����(����s8���install/lib/scons-2.0.0.final.0/SCons/Tool/JavaCommon.pyt���<module>���s&��� #