640 0, 2, 2, 2, 2, 2, 2, 2, 2, 2,
641 2, 2, 2, 2, 2, 2, 2, 2, 2, 2,
642 2, 2, 2, 2, 2, 2, 2, 2, 2, 2,
643 2, 2, 2, 90, 2, 92, 2, 89, 75, 2,
644 97, 102, 87, 84, 67, 85, 105, 88, 2, 2,
645 2, 2, 2, 2, 2, 2, 2, 2, 70, 101,
646 78, 68, 79, 69, 2, 2, 2, 2, 2, 2,
647 2, 2, 2, 2, 2, 2, 2, 2, 2, 2,
648 2, 2, 2, 2, 2, 2, 2, 2, 2, 2,
649 2, 103, 2, 104, 74, 2, 2, 2, 2, 2,
650 2, 2, 2, 2, 2, 2, 2, 2, 2, 2,
651 2, 2, 2, 2, 2, 2, 2, 2, 2, 2,
652 2, 2, 2, 99, 73, 100, 91, 2, 2, 2,
653 2, 2, 2, 2, 2, 2, 2, 2, 2, 2,
654 2, 2, 2, 2, 2, 2, 2, 2, 2, 2,
655 2, 2, 2, 2, 2, 2, 2, 2, 2, 2,
656 2, 2, 2, 2, 2, 2, 2, 2, 2, 2,
657 2, 2, 2, 2, 2, 2, 2, 2, 2, 2,
658 2, 2, 2, 2, 2, 2, 2, 2, 2, 2,
659 2, 2, 2, 2, 2, 2, 2, 2, 2, 2,
660 2, 2, 2, 2, 2, 2, 2, 2, 2, 2,
661 2, 2, 2, 2, 2, 2, 2, 2, 2, 2,
662 2, 2, 2, 2, 2, 2, 2, 2, 2, 2,
663 2, 2, 2, 2, 2, 2, 2, 2, 2, 2,
664 2, 2, 2, 2, 2, 2, 2, 2, 2, 2,
665 2, 2, 2, 2, 2, 2, 1, 2, 3, 4,
666 5, 6, 7, 8, 9, 10, 11, 12, 13, 14,
667 15, 16, 17, 18, 19, 20, 21, 22, 23, 24,
668 25, 26, 27, 28, 29, 30, 31, 32, 33, 34,
669 35, 36, 37, 38, 39, 40, 41, 42, 43, 44,
670 45, 46, 47, 48, 49, 50, 51, 52, 53, 54,
671 55, 56, 57, 58, 59, 60, 61, 62, 63, 64,
672 65, 66, 71, 72, 76, 77, 80, 81, 82, 83,
673 86, 93, 94, 95, 96, 98
753 -181, 9, 231, -181, -181, -181, -181, -181, -71, 713,
754 -181, 713, -181, -69, -62, -44, -41, -39, -34, -17,
755 1, -181, 8, -181, 11, -181, 14, 713, -181, -181,
756 -181, 21, -181, 28, 30, 31, -181, 33, 36, 73,
757 713, 713, 713, 713, 101, 73, 73, 619, -181, 64,
758 -181, 35, 893, 40, -181, 46, 47, -55, 713, 44,
759 48, 72, 713, -17, 713, 713, 713, 713, 73, -11,
760 -181, -181, 713, 713, 713, 45, 55, 127, 713, 713,
761 713, 133, 713, -181, -181, -181, -181, -181, -181, -181,
762 -181, -181, 57, 314, 329, 83, -181, -181, 713, -181,
763 713, 713, 713, 713, 713, 713, 713, 713, 713, 713,
764 713, 713, 713, 713, 713, 104, 713, 713, 713, 713,
765 713, 713, 713, -181, -181, -181, 937, 53, 93, -181,
766 -181, -181, -181, -181, -181, -50, -181, -181, 216, -181,
767 411, 60, 19, 75, 76, 77, 99, -181, 508, 78,
768 86, -181, -181, -181, 600, 103, 105, 893, -57, 694,
769 713, -181, -181, -181, 937, 713, 955, 972, 988, 1003,
770 1017, 1031, 1031, 112, 112, 112, 112, 98, 98, 52,
771 52, -181, -181, -181, -181, -181, 916, 106, 111, 937,
772 -181, 713, 72, -181, 100, -181, -181, 713, 523, -181,
773 -181, 523, -2, -181, 523, -181, -181, -181, -181, -181,
774 113, 713, -181, 523, -181, -181, 870, 807, -181, -181,
775 937, -181, -15, -45, 119, -181, -181, -181, 186, 115,
776 788, -181, 231, -181, -53, 121, -181, -181, -181, -181,
777 713, 523, -181, -181, -181, 713, 713, -181, -181, 206,
778 124, -181, -6, 937, 836, 125, -181, 161, -181, 523,
779 102, 160, -181, -181, 108, -181, -181, -4, 129, 220,
780 -181, 163, -181, 231, -181, -181, -181, -181, 141, -181,
781 -181, -181, -181, 426, -181
789 7, 0, 3, 1, 104, 106, 103, 105, 0, 44,
790 102, 44, 11, 118, 0, 0, 0, 0, 0, 131,
791 0, 114, 0, 107, 0, 108, 0, 44, 110, 100,
792 109, 0, 111, 0, 0, 0, 101, 0, 0, 0,
793 0, 0, 0, 0, 0, 0, 0, 0, 7, 2,
794 8, 0, 45, 0, 99, 0, 0, 136, 120, 0,
795 0, 0, 0, 131, 0, 44, 120, 120, 0, 0,
796 112, 132, 0, 120, 120, 0, 0, 0, 120, 120,
797 0, 0, 0, 76, 75, 74, 70, 73, 72, 71,
798 93, 97, 0, 0, 44, 0, 4, 10, 0, 67,
799 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
800 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
801 120, 120, 0, 94, 98, 92, 122, 0, 121, 22,
802 23, 37, 39, 38, 36, 0, 32, 34, 0, 113,
803 0, 0, 136, 0, 0, 0, 134, 135, 0, 0,
804 0, 85, 24, 86, 0, 0, 0, 20, 0, 0,
805 0, 46, 9, 5, 66, 0, 65, 64, 61, 62,
806 60, 58, 59, 48, 55, 56, 57, 53, 54, 63,
807 49, 96, 95, 50, 51, 52, 0, 0, 0, 137,
808 77, 0, 0, 12, 115, 119, 84, 44, 44, 78,
809 79, 44, 0, 133, 44, 89, 88, 87, 80, 81,
810 0, 0, 17, 44, 47, 7, 0, 0, 90, 91,
811 123, 33, 0, 136, 0, 14, 16, 134, 42, 0,
812 0, 19, 6, 68, 118, 0, 116, 139, 138, 35,
813 44, 44, 13, 25, 18, 0, 0, 82, 117, 124,
814 0, 43, 0, 69, 0, 129, 140, 126, 127, 44,
815 0, 0, 21, 26, 7, 28, 83, 0, 0, 0,
816 15, 0, 31, 27, 29, 41, 40, 130, 0, 129,
845 94, 59, 235, 60, 84, 85, 86, 87, 260, 3,
846 211, 93, 261, 122, 246, 275, 146, 192, 225, 76,
847 147, 226, 126, 122, 228, 227, 138, 276, 140, 147,
848 126, 126, 58, 231, 62, 64, 148, 126, 126, 123,
849 124, 154, 126, 126, 157, 212, 159, 143, 144, 247,
850 62, 193, 237, 65, 149, 150, 66, 141, 67, 155,
851 156, 251, 164, 68, 166, 167, 168, 169, 170, 171,
852 172, 173, 174, 175, 176, 177, 178, 179, 180, 270,
853 183, 184, 185, 186, 126, 126, 189, 122, 69, 236,
854 83, 131, 13, 95, 262, 132, 90, 91, 72, 133,
855 19, 187, 188, 134, 21, 73, 4, 5, 74, 6,
856 7, 75, 88, 123, 124, 181, 142, 10, 77, 145,
857 89, 198, 260, 182, 214, 78, 261, 79, 80, 216,
858 81, 4, 5, 82, 6, 7, 97, 119, 8, 116,
859 117, 118, 10, 120, 121, 129, 13, 151, 14, 130,
860 16, 17, 158, 163, 19, 220, 152, 190, 21, 160,
861 191, 197, 22, 23, 24, 25, 26, 232, 28, 29,
862 30, 31, 32, 33, 34, 230, 36, 199, 200, 201,
863 205, 164, 113, 114, 115, 116, 117, 118, 206, 224,
864 -126, -126, -126, -126, 111, 112, 113, 114, 115, 116,
865 117, 118, 39, 222, 202, 208, 241, 209, 218, 253,
866 254, 40, 41, 219, 243, 229, 273, 42, 43, 44,
867 240, 45, 46, 255, 47, 248, 259, -125, 269, 153,
868 272, 278, 250, 281, 283, 4, 5, 279, 6, 7,
869 282, 274, 8, 9, 271, 280, 10, 11, 12, 238,
870 13, 221, 14, 15, 16, 17, 139, 18, 19, 20,
871 203, 0, 21, 0, 0, 0, 22, 23, 24, 25,
872 26, 27, 28, 29, 30, 31, 32, 33, 34, 35,
873 36, 37, 38, 98, 0, 99, 0, 100, 101, 102,
874 103, 104, 105, 106, 107, 108, 109, 110, 111, 112,
875 113, 114, 115, 116, 117, 118, 39, 0, 0, 0,
876 0, 0, 0, 0, 0, 40, 41, 0, 0, 0,
877 195, 42, 43, 44, 0, 45, 46, 0, 47, 0,
878 48, 0, -44, 4, 5, 0, 6, 7, 0, 0,
879 8, 9, 0, 0, 10, 11, 12, 0, 13, 0,
880 14, 15, 16, 17, 0, 18, 19, 20, 0, 0,
881 21, 0, 0, 0, 22, 23, 24, 25, 26, 27,
882 28, 29, 30, 31, 32, 33, 34, 35, 36, 37,
883 38, 98, 0, 99, 0, 100, 101, 102, 103, 104,
884 105, 106, 107, 108, 109, 110, 111, 112, 113, 114,
885 115, 116, 117, 118, 39, 0, 0, 0, 0, 0,
886 0, 0, 0, 40, 41, 0, 161, 0, 0, 42,
887 43, 44, 0, 45, 46, 0, 47, 0, 48, 162,
888 4, 5, 0, 6, 7, 0, 0, 8, 9, 0,
889 0, 10, 11, 12, 0, 13, 0, 14, 15, 16,
890 17, 0, 18, 19, 20, 0, 0, 21, 0, 0,
891 0, 22, 23, 24, 25, 26, 27, 28, 29, 30,
892 31, 32, 33, 34, 35, 36, 37, 38, 98, 0,
893 99, 0, 100, 101, 102, 103, 104, 105, 106, 107,
894 108, 109, 110, 111, 112, 113, 114, 115, 116, 117,
895 118, 39, 0, 0, 0, 0, 0, 0, 0, 0,
896 40, 41, 0, 196, 0, 0, 42, 43, 44, 0,
897 45, 46, 0, 47, 0, 48, 284, 4, 5, 0,
898 6, 7, 0, 0, 8, 9, 0, 0, 10, 11,
899 12, 0, 13, 0, 14, 15, 16, 17, 0, 18,
900 19, 20, 0, 0, 21, 0, 0, 0, 22, 23,
901 24, 25, 26, 27, 28, 29, 30, 31, 32, 33,
902 34, 35, 36, 37, 38, 98, 0, 99, 0, 100,
903 101, 102, 103, 104, 105, 106, 107, 108, 109, 110,
904 111, 112, 113, 114, 115, 116, 117, 118, 39, 0,
905 0, 0, 0, 0, 0, 0, 0, 40, 41, 0,
906 204, 0, 0, 42, 43, 44, 0, 45, 46, 0,
907 47, 0, 48, 4, 5, 0, 6, 7, 0, 0,
908 8, 0, 0, 0, 10, 0, 92, 0, 13, 0,
909 14, 0, 16, 17, 0, 0, 19, 0, 0, 0,
910 21, 0, 0, 0, 22, 23, 24, 25, 26, 0,
911 28, 29, 30, 31, 32, 33, 34, 98, 36, 99,
912 0, 100, 101, 102, 103, 104, 105, 106, 107, 108,
913 109, 110, 111, 112, 113, 114, 115, 116, 117, 118,
914 0, 0, 0, 0, 39, 0, 0, 0, 0, 0,
915 0, 0, 207, 40, 41, 0, 0, 0, 0, 42,
916 43, 44, 0, 45, 46, 0, 47, 4, 5, 0,
917 6, 7, 0, 0, 8, 0, 0, 0, 10, 0,
918 0, 0, 13, 0, 14, 0, 16, 17, 0, 0,
919 19, 0, 0, 0, 21, 0, 0, 0, 22, 23,
920 24, 25, 26, 0, 28, 29, 30, 31, 32, 33,
921 34, 98, 36, 99, 0, 100, 101, 102, 103, 104,
922 105, 106, 107, 108, 109, 110, 111, 112, 113, 114,
923 115, 116, 117, 118, 0, 0, 0, 0, 39, 0,
924 0, 0, 0, 0, 0, 0, 213, 40, 41, 0,
925 0, 0, 0, 42, 43, 44, 0, 45, 46, 0,
926 47, 4, 5, 0, 6, 7, 0, 0, 8, 0,
927 0, 0, 10, 0, 0, 0, 234, 0, 14, 0,
928 16, 17, 0, 0, 19, 0, 0, 0, 21, 0,
929 0, 0, 22, 23, 24, 25, 26, 0, 28, 29,
930 30, 31, 32, 33, 34, 98, 36, 99, 0, 100,
931 101, 102, 103, 104, 105, 106, 107, 108, 109, 110,
932 111, 112, 113, 114, 115, 116, 117, 118, 0, 0,
933 0, 0, 39, 0, 0, 0, 0, 0, 0, 0,
934 244, 40, 41, 0, 0, 0, 0, 42, 43, 44,
935 0, 45, 46, 98, 47, 99, 0, 100, 101, 102,
936 103, 104, 105, 106, 107, 108, 109, 110, 111, 112,
937 113, 114, 115, 116, 117, 118, 0, 0, 0, 0,
938 0, 0, 0, 0, 0, 0, 0, 98, 266, 99,
939 233, 100, 101, 102, 103, 104, 105, 106, 107, 108,
940 109, 110, 111, 112, 113, 114, 115, 116, 117, 118,
941 98, 0, 99, 0, 100, 101, 102, 103, 104, 105,
942 106, 107, 108, 109, 110, 111, 112, 113, 114, 115,
943 116, 117, 118, 217, 0, 99, 0, 100, 101, 102,
944 103, 104, 105, 106, 107, 108, 109, 110, 111, 112,
945 113, 114, 115, 116, 117, 118, 99, 0, 100, 101,
946 102, 103, 104, 105, 106, 107, 108, 109, 110, 111,
947 112, 113, 114, 115, 116, 117, 118, 101, 102, 103,
948 104, 105, 106, 107, 108, 109, 110, 111, 112, 113,
949 114, 115, 116, 117, 118, 102, 103, 104, 105, 106,
950 107, 108, 109, 110, 111, 112, 113, 114, 115, 116,
951 117, 118, 103, 104, 105, 106, 107, 108, 109, 110,
952 111, 112, 113, 114, 115, 116, 117, 118, 104, 105,
953 106, 107, 108, 109, 110, 111, 112, 113, 114, 115,
954 116, 117, 118, 105, 106, 107, 108, 109, 110, 111,
955 112, 113, 114, 115, 116, 117, 118, -126, -126, 107,
956 108, 109, 110, 111, 112, 113, 114, 115, 116, 117,
962 48, 9, 17, 11, 40, 41, 42, 43, 14, 0,
963 67, 47, 18, 68, 67, 19, 27, 67, 198, 27,
964 31, 201, 58, 68, 204, 27, 62, 31, 64, 31,
965 66, 67, 103, 213, 103, 97, 72, 73, 74, 94,
966 95, 77, 78, 79, 80, 102, 82, 66, 67, 102,
967 103, 101, 97, 97, 73, 74, 97, 65, 97, 78,
968 79, 241, 98, 97, 100, 101, 102, 103, 104, 105,
969 106, 107, 108, 109, 110, 111, 112, 113, 114, 259,
970 116, 117, 118, 119, 120, 121, 122, 68, 105, 104,
971 39, 19, 19, 29, 100, 23, 45, 46, 97, 27,
972 27, 120, 121, 31, 31, 97, 4, 5, 97, 7,
973 8, 97, 11, 94, 95, 11, 65, 15, 97, 68,
974 19, 102, 14, 19, 160, 97, 18, 97, 97, 165,
975 97, 4, 5, 97, 7, 8, 101, 97, 11, 87,
976 88, 89, 15, 97, 97, 101, 19, 102, 21, 101,
977 23, 24, 19, 70, 27, 191, 101, 104, 31, 102,
978 67, 101, 35, 36, 37, 38, 39, 215, 41, 42,
979 43, 44, 45, 46, 47, 211, 49, 102, 102, 102,
980 102, 217, 84, 85, 86, 87, 88, 89, 102, 197,
981 78, 79, 80, 81, 82, 83, 84, 85, 86, 87,
982 88, 89, 75, 103, 105, 102, 20, 102, 102, 245,
983 246, 84, 85, 102, 99, 102, 264, 90, 91, 92,
984 101, 94, 95, 17, 97, 104, 102, 102, 67, 102,
985 70, 102, 240, 70, 282, 4, 5, 17, 7, 8,
986 99, 264, 11, 12, 260, 269, 15, 16, 17, 223,
987 19, 192, 21, 22, 23, 24, 63, 26, 27, 28,
988 146, -1, 31, -1, -1, -1, 35, 36, 37, 38,
989 39, 40, 41, 42, 43, 44, 45, 46, 47, 48,
990 49, 50, 51, 67, -1, 69, -1, 71, 72, 73,
991 74, 75, 76, 77, 78, 79, 80, 81, 82, 83,
992 84, 85, 86, 87, 88, 89, 75, -1, -1, -1,
993 -1, -1, -1, -1, -1, 84, 85, -1, -1, -1,
994 104, 90, 91, 92, -1, 94, 95, -1, 97, -1,
995 99, -1, 101, 4, 5, -1, 7, 8, -1, -1,
996 11, 12, -1, -1, 15, 16, 17, -1, 19, -1,
997 21, 22, 23, 24, -1, 26, 27, 28, -1, -1,
998 31, -1, -1, -1, 35, 36, 37, 38, 39, 40,
999 41, 42, 43, 44, 45, 46, 47, 48, 49, 50,
1000 51, 67, -1, 69, -1, 71, 72, 73, 74, 75,
1001 76, 77, 78, 79, 80, 81, 82, 83, 84, 85,
1002 86, 87, 88, 89, 75, -1, -1, -1, -1, -1,
1003 -1, -1, -1, 84, 85, -1, 102, -1, -1, 90,
1004 91, 92, -1, 94, 95, -1, 97, -1, 99, 100,
1005 4, 5, -1, 7, 8, -1, -1, 11, 12, -1,
1006 -1, 15, 16, 17, -1, 19, -1, 21, 22, 23,
1007 24, -1, 26, 27, 28, -1, -1, 31, -1, -1,
1008 -1, 35, 36, 37, 38, 39, 40, 41, 42, 43,
1009 44, 45, 46, 47, 48, 49, 50, 51, 67, -1,
1010 69, -1, 71, 72, 73, 74, 75, 76, 77, 78,
1011 79, 80, 81, 82, 83, 84, 85, 86, 87, 88,
1012 89, 75, -1, -1, -1, -1, -1, -1, -1, -1,
1013 84, 85, -1, 102, -1, -1, 90, 91, 92, -1,
1014 94, 95, -1, 97, -1, 99, 100, 4, 5, -1,
1015 7, 8, -1, -1, 11, 12, -1, -1, 15, 16,
1016 17, -1, 19, -1, 21, 22, 23, 24, -1, 26,
1017 27, 28, -1, -1, 31, -1, -1, -1, 35, 36,
1018 37, 38, 39, 40, 41, 42, 43, 44, 45, 46,
1019 47, 48, 49, 50, 51, 67, -1, 69, -1, 71,
1020 72, 73, 74, 75, 76, 77, 78, 79, 80, 81,
1021 82, 83, 84, 85, 86, 87, 88, 89, 75, -1,
1022 -1, -1, -1, -1, -1, -1, -1, 84, 85, -1,
1023 102, -1, -1, 90, 91, 92, -1, 94, 95, -1,
1024 97, -1, 99, 4, 5, -1, 7, 8, -1, -1,
1025 11, -1, -1, -1, 15, -1, 17, -1, 19, -1,
1026 21, -1, 23, 24, -1, -1, 27, -1, -1, -1,
1027 31, -1, -1, -1, 35, 36, 37, 38, 39, -1,
1028 41, 42, 43, 44, 45, 46, 47, 67, 49, 69,
1029 -1, 71, 72, 73, 74, 75, 76, 77, 78, 79,
1030 80, 81, 82, 83, 84, 85, 86, 87, 88, 89,
1031 -1, -1, -1, -1, 75, -1, -1, -1, -1, -1,
1032 -1, -1, 102, 84, 85, -1, -1, -1, -1, 90,
1033 91, 92, -1, 94, 95, -1, 97, 4, 5, -1,
1034 7, 8, -1, -1, 11, -1, -1, -1, 15, -1,
1035 -1, -1, 19, -1, 21, -1, 23, 24, -1, -1,
1036 27, -1, -1, -1, 31, -1, -1, -1, 35, 36,
1037 37, 38, 39, -1, 41, 42, 43, 44, 45, 46,
1038 47, 67, 49, 69, -1, 71, 72, 73, 74, 75,
1039 76, 77, 78, 79, 80, 81, 82, 83, 84, 85,
1040 86, 87, 88, 89, -1, -1, -1, -1, 75, -1,
1041 -1, -1, -1, -1, -1, -1, 102, 84, 85, -1,
1042 -1, -1, -1, 90, 91, 92, -1, 94, 95, -1,
1043 97, 4, 5, -1, 7, 8, -1, -1, 11, -1,
1044 -1, -1, 15, -1, -1, -1, 19, -1, 21, -1,
1045 23, 24, -1, -1, 27, -1, -1, -1, 31, -1,
1046 -1, -1, 35, 36, 37, 38, 39, -1, 41, 42,
1047 43, 44, 45, 46, 47, 67, 49, 69, -1, 71,
1048 72, 73, 74, 75, 76, 77, 78, 79, 80, 81,
1049 82, 83, 84, 85, 86, 87, 88, 89, -1, -1,
1050 -1, -1, 75, -1, -1, -1, -1, -1, -1, -1,
1051 102, 84, 85, -1, -1, -1, -1, 90, 91, 92,
1052 -1, 94, 95, 67, 97, 69, -1, 71, 72, 73,
1053 74, 75, 76, 77, 78, 79, 80, 81, 82, 83,
1054 84, 85, 86, 87, 88, 89, -1, -1, -1, -1,
1055 -1, -1, -1, -1, -1, -1, -1, 67, 102, 69,
1056 70, 71, 72, 73, 74, 75, 76, 77, 78, 79,
1057 80, 81, 82, 83, 84, 85, 86, 87, 88, 89,
1058 67, -1, 69, -1, 71, 72, 73, 74, 75, 76,
1059 77, 78, 79, 80, 81, 82, 83, 84, 85, 86,
1060 87, 88, 89, 67, -1, 69, -1, 71, 72, 73,
1061 74, 75, 76, 77, 78, 79, 80, 81, 82, 83,
1062 84, 85, 86, 87, 88, 89, 69, -1, 71, 72,
1063 73, 74, 75, 76, 77, 78, 79, 80, 81, 82,
1064 83, 84, 85, 86, 87, 88, 89, 72, 73, 74,
1065 75, 76, 77, 78, 79, 80, 81, 82, 83, 84,
1066 85, 86, 87, 88, 89, 73, 74, 75, 76, 77,
1067 78, 79, 80, 81, 82, 83, 84, 85, 86, 87,
1068 88, 89, 74, 75, 76, 77, 78, 79, 80, 81,
1069 82, 83, 84, 85, 86, 87, 88, 89, 75, 76,
1070 77, 78, 79, 80, 81, 82, 83, 84, 85, 86,
1071 87, 88, 89, 76, 77, 78, 79, 80, 81, 82,
1072 83, 84, 85, 86, 87, 88, 89, 76, 77, 78,
1073 79, 80, 81, 82, 83, 84, 85, 86, 87, 88,
1081 0, 107, 111, 0, 4, 5, 7, 8, 11, 12,
1082 15, 16, 17, 19, 21, 22, 23, 24, 26, 27,
1083 28, 31, 35, 36, 37, 38, 39, 40, 41, 42,
1084 43, 44, 45, 46, 47, 48, 49, 50, 51, 75,
1085 84, 85, 90, 91, 92, 94, 95, 97, 99, 108,
1086 112, 125, 126, 129, 130, 131, 132, 133, 103, 125,
1087 125, 113, 103, 135, 97, 97, 97, 97, 97, 105,
1088 142, 143, 97, 97, 97, 97, 125, 97, 97, 97,
1089 97, 97, 97, 133, 126, 126, 126, 126, 11, 19,
1090 133, 133, 17, 126, 111, 29, 109, 101, 67, 69,
1091 71, 72, 73, 74, 75, 76, 77, 78, 79, 80,
1092 81, 82, 83, 84, 85, 86, 87, 88, 89, 97,
1093 97, 97, 68, 94, 95, 144, 126, 136, 137, 101,
1094 101, 19, 23, 27, 31, 119, 120, 122, 126, 142,
1095 126, 125, 133, 136, 136, 133, 27, 31, 126, 136,
1096 136, 102, 101, 102, 126, 136, 136, 126, 19, 126,
1097 102, 102, 100, 70, 126, 127, 126, 126, 126, 126,
1098 126, 126, 126, 126, 126, 126, 126, 126, 126, 126,
1099 126, 11, 19, 126, 126, 126, 126, 136, 136, 126,
1100 104, 67, 67, 101, 121, 104, 102, 101, 102, 102,
1101 102, 102, 105, 143, 102, 102, 102, 102, 102, 102,
1102 114, 67, 102, 102, 126, 110, 126, 67, 102, 102,
1103 126, 120, 103, 134, 125, 112, 112, 27, 112, 102,
1104 126, 112, 111, 70, 19, 17, 104, 97, 144, 145,
1105 101, 20, 124, 99, 102, 128, 67, 102, 104, 146,
1106 125, 112, 115, 126, 126, 17, 138, 139, 140, 102,
1107 14, 18, 100, 116, 117, 118, 102, 141, 147, 67,
1108 112, 130, 70, 111, 118, 19, 31, 123, 102, 17,
1109 140, 70, 99, 111, 100
1375 int yyerrstatus = 0;
1404#define YYPOPSTACK(N) (yyvsp -= (N), yyssp -= (N))
1410 YYDPRINTF ((stderr,
"Starting parse\n"));
1430 YYDPRINTF ((stderr,
"Entering state %d\n", yystate));
1437 if (yyss + yystacksize - 1 <= yyssp)
1438#if !defined yyoverflow && !defined YYSTACK_RELOCATE
1445# if defined yyoverflow
1457 yyoverflow (
YY_(
"memory exhausted"),
1458 &yyss1, yysize *
YYSIZEOF (*yyssp),
1459 &yyvs1, yysize *
YYSIZEOF (*yyvsp),
1481# undef YYSTACK_RELOCATE
1487 yyssp = yyss + yysize - 1;
1488 yyvsp = yyvs + yysize - 1;
1491 YYDPRINTF ((stderr,
"Stack size increased to %ld\n",
1492 YY_CAST (
long, yystacksize)));
1495 if (yyss + yystacksize - 1 <= yyssp)
1524 YYDPRINTF ((stderr,
"Reading a token\n"));
1532 YYDPRINTF ((stderr,
"Now at end of input.\n"));
1606 yyval = yyvsp[1-yylen];
1613#line 182 "../../lib/expr/exparse.y"
1615 if ((yyvsp[-1].
expr)) {
1618 if ((yyvsp[-1].
expr)->op ==
S2B)
1629#line 1630 "exparse.c"
1633#line 203 "../../lib/expr/exparse.y"
1636 exerror(
"no nested function definitions");
1649#line 1650 "exparse.c"
1653#line 218 "../../lib/expr/exparse.y"
1662 if ((yyvsp[0].
expr) && (yyvsp[0].
expr)->op ==
S2B)
1671#line 1672 "exparse.c"
1675#line 238 "../../lib/expr/exparse.y"
1679#line 1680 "exparse.c"
1683#line 242 "../../lib/expr/exparse.y"
1685 if (!(yyvsp[-1].
expr))
1686 (yyval.expr) = (yyvsp[0].expr);
1687 else if (!(yyvsp[0].
expr))
1688 (yyval.expr) = (yyvsp[-1].expr);
1692 (yyval.expr) = (yyvsp[0].
expr);
1694 else (yyval.expr) =
exnewnode(
expr.
program,
';',
true, (yyvsp[0].expr)->type, (yyvsp[-1].expr), (yyvsp[0].expr));
1696#line 1697 "exparse.c"
1700#line 257 "../../lib/expr/exparse.y"
1702 (yyval.expr) = (yyvsp[-1].
expr);
1704#line 1705 "exparse.c"
1708#line 261 "../../lib/expr/exparse.y"
1712#line 1713 "exparse.c"
1716#line 264 "../../lib/expr/exparse.y"
1718#line 1719 "exparse.c"
1722#line 265 "../../lib/expr/exparse.y"
1724 (yyval.expr) = (yyvsp[-1].
expr);
1727#line 1728 "exparse.c"
1731#line 270 "../../lib/expr/exparse.y"
1734 exwarn (
"assignment used as boolean in if statement");
1739 (yyval.expr) =
exnewnode(
expr.
program, (yyvsp[-5].id)->index,
true,
INTEGER, (yyvsp[-3].expr),
exnewnode(
expr.
program,
':',
true, (yyvsp[-1].expr) ? (yyvsp[-1].expr)->
type : 0, (yyvsp[-1].expr), (yyvsp[0].
expr)));
1741#line 1742 "exparse.c"
1745#line 280 "../../lib/expr/exparse.y"
1748 (yyval.expr)->
data.generate.array = (yyvsp[-2].expr);
1749 if (!(yyvsp[-2].
expr)->data.variable.index || (yyvsp[-2].expr)->
data.variable.index->op !=
DYNAMIC)
1750 exerror(
"simple index variable expected");
1751 (yyval.expr)->
data.generate.index = (yyvsp[-2].expr)->data.variable.index->data.variable.symbol;
1752 if ((yyvsp[-2].
expr)->op ==
ID && (yyval.expr)->
data.generate.index->type !=
INTEGER)
1753 exerror(
"integer index variable expected");
1755 (yyvsp[-2].expr)->
data.variable.index = 0;
1756 (yyval.expr)->
data.generate.statement = (yyvsp[0].expr);
1758#line 1759 "exparse.c"
1762#line 293 "../../lib/expr/exparse.y"
1764 if (!(yyvsp[-4].
expr))
1767 (yyvsp[-4].expr)->
data.constant.value.integer = 1;
1773 (yyval.expr) =
exnewnode(
expr.
program, (yyvsp[-8].id)->index,
true,
INTEGER, (yyvsp[-4].expr),
exnewnode(
expr.
program,
';', 1, 0, (yyvsp[-2].expr), (yyvsp[0].expr)));
1774 if ((yyvsp[-6].
expr))
1777#line 1778 "exparse.c"
1781#line 308 "../../lib/expr/exparse.y"
1784 (yyval.expr)->
data.generate.array = (yyvsp[-2].expr);
1785 if (!(yyvsp[-2].
expr)->data.variable.index || (yyvsp[-2].expr)->
data.variable.index->op !=
DYNAMIC)
1786 exerror(
"simple index variable expected");
1787 (yyval.expr)->
data.generate.index = (yyvsp[-2].expr)->data.variable.index->data.variable.symbol;
1788 if ((yyvsp[-2].
expr)->op ==
ID && (yyval.expr)->
data.generate.index->type !=
INTEGER)
1789 exerror(
"integer index variable expected");
1791 (yyvsp[-2].expr)->
data.variable.index = 0;
1792 (yyval.expr)->
data.generate.statement = (yyvsp[0].expr);
1794#line 1795 "exparse.c"
1798#line 321 "../../lib/expr/exparse.y"
1800 if ((yyvsp[-1].
id)->local ==
NULL)
1801 exerror(
"cannot apply unset to non-array %s", (yyvsp[-1].
id)->name);
1803 (yyval.expr)->
data.variable.symbol = (yyvsp[-1].id);
1804 (yyval.expr)->
data.variable.index =
NULL;
1806#line 1807 "exparse.c"
1810#line 329 "../../lib/expr/exparse.y"
1812 if ((yyvsp[-3].
id)->local ==
NULL)
1813 exerror(
"cannot apply unset to non-array %s", (yyvsp[-3].
id)->name);
1814 if (((yyvsp[-3].
id)->index_type > 0) && ((yyvsp[-1].
expr)->
type != (yyvsp[-3].
id)->index_type))
1815 exerror(
"%s indices must have type %s, not %s",
1818 (yyval.expr)->
data.variable.symbol = (yyvsp[-3].id);
1819 (yyval.expr)->
data.variable.index = (yyvsp[-1].expr);
1821#line 1822 "exparse.c"
1825#line 340 "../../lib/expr/exparse.y"
1828 exwarn (
"assignment used as boolean in while statement");
1833 (yyval.expr) =
exnewnode(
expr.
program, (yyvsp[-4].id)->index,
true,
INTEGER, (yyvsp[-2].expr),
exnewnode(
expr.
program,
';',
true, 0,
NULL, (yyvsp[0].expr)));
1835#line 1836 "exparse.c"
1839#line 349 "../../lib/expr/exparse.y"
1841#line 1842 "exparse.c"
1845#line 350 "../../lib/expr/exparse.y"
1849 (yyval.expr) =
exnewnode(
expr.
program, (yyvsp[-7].id)->index,
true,
INTEGER, (yyvsp[-5].expr),
exnewnode(
expr.
program,
DEFAULT,
true, 0, sw->
defcase, sw->
firstcase));
1855#line 1856 "exparse.c"
1859#line 360 "../../lib/expr/exparse.y"
1862 if (!(yyvsp[-1].
expr))
1865 (yyvsp[-1].expr)->
data.constant.value.integer = 1;
1871#line 1872 "exparse.c"
1875#line 372 "../../lib/expr/exparse.y"
1879#line 1880 "exparse.c"
1883#line 376 "../../lib/expr/exparse.y"
1885 if ((yyvsp[-1].
expr))
1888 exerror(
"return in void function");
1893#line 1894 "exparse.c"
1897#line 388 "../../lib/expr/exparse.y"
1901 if (!(sw = calloc(1,
sizeof(
Switch_t)))) {
1914#line 1915 "exparse.c"
1918#line 408 "../../lib/expr/exparse.y"
1930 const size_t n = sw->
cap;
1935 memcpy((yyval.expr)->data.select.constant, sw->
base, n *
sizeof(
Extype_t*));
1938 (yyval.expr)->data.select.constant = 0;
1943 exerror(
"duplicate default in switch");
1945 sw->
defcase = (yyvsp[0].expr);
1948#line 1949 "exparse.c"
1952#line 444 "../../lib/expr/exparse.y"
1959 exerror(
"too many case labels for switch");
1970#line 1971 "exparse.c"
1974#line 462 "../../lib/expr/exparse.y"
1978#line 1979 "exparse.c"
1982#line 469 "../../lib/expr/exparse.y"
1984 if ((yyvsp[0].
expr))
1985 (yyval.expr) = (yyvsp[-2].
expr) ?
exnewnode(
expr.
program,
',',
true, (yyvsp[0].expr)->type, (yyvsp[-2].expr), (yyvsp[0].expr)) : (yyvsp[0].expr);
1987#line 1988 "exparse.c"
1991#line 475 "../../lib/expr/exparse.y"
1992 {checkName ((yyvsp[0].
id));
expr.
id=(yyvsp[0].id);}
1993#line 1994 "exparse.c"
1997#line 476 "../../lib/expr/exparse.y"
2005 (yyvsp[-3].id)->
type = (yyvsp[0].
expr)->type;
2006 (yyvsp[-3].id)->value = (yyvsp[0].
expr);
2010 if ((yyvsp[-3].
id)->type == 0) {
2011 exerror(
"%s: a variable cannot be void typed", (yyvsp[-3].
id)->name);
2015 if ((yyvsp[-1].integer) && (yyvsp[-3].id)->local ==
NULL)
2025 exerror(
"%s: cannot initialize associative array", (yyvsp[-3].
id)->name);
2026 (yyvsp[-3].id)->index_type = (yyvsp[-1].integer);
2028 if ((yyvsp[0].
expr))
2030 if ((yyvsp[0].
expr)->type != (yyvsp[-3].id)->
type)
2032 (yyvsp[0].expr)->
type = (yyvsp[-3].
id)->type;
2036 (yyvsp[0].expr)->
data.operand.left->data.variable.symbol = (yyvsp[-3].id);
2037 (yyval.expr) = (yyvsp[0].
expr);
2039 else if (!(yyvsp[-1].integer))
2040 (yyvsp[-3].
id)->value->data.value =
exzero((yyvsp[-3].
id)->
type);
2043#line 2044 "exparse.c"
2047#line 534 "../../lib/expr/exparse.y"
2051#line 2052 "exparse.c"
2055#line 538 "../../lib/expr/exparse.y"
2057 (yyval.expr) = (yyvsp[0].
expr);
2059#line 2060 "exparse.c"
2063#line 544 "../../lib/expr/exparse.y"
2067#line 2068 "exparse.c"
2071#line 551 "../../lib/expr/exparse.y"
2073 (yyval.expr) = (yyvsp[-1].
expr);
2075#line 2076 "exparse.c"
2079#line 555 "../../lib/expr/exparse.y"
2081 (yyval.expr) = ((yyvsp[0].
expr)->type == (yyvsp[-2].id)->
type) ? (yyvsp[0].expr) :
excast(
expr.
program, (yyvsp[0].expr), (yyvsp[-2].id)->type,
NULL, 0);
2083#line 2084 "exparse.c"
2087#line 559 "../../lib/expr/exparse.y"
2102 (yyvsp[-2].
expr)->type = (yyvsp[0].expr)->
type;
2104 else if (!(yyvsp[0].
expr)->type)
2105 (yyvsp[0].
expr)->type = (yyvsp[-2].expr)->
type;
2106 if ((yyvsp[-2].
expr)->type != (yyvsp[0].expr)->
type)
2109 (yyvsp[-2].
expr) =
excast(
expr.
program, (yyvsp[-2].expr), (yyvsp[0].expr)->type, (yyvsp[0].expr), 0);
2127 if ((yyval.expr)->type ==
STRING) {
2128 (yyval.expr)->
data.constant.value.string =
2131 (yyval.expr)->
binary =
false;
2137 checkBinary(
expr.
program, (yyvsp[-2].expr), (yyval.expr), (yyvsp[0].expr));
2140#line 2141 "exparse.c"
2144#line 612 "../../lib/expr/exparse.y"
2148#line 2149 "exparse.c"
2152#line 616 "../../lib/expr/exparse.y"
2156#line 2157 "exparse.c"
2160#line 620 "../../lib/expr/exparse.y"
2164#line 2165 "exparse.c"
2168#line 624 "../../lib/expr/exparse.y"
2172#line 2173 "exparse.c"
2176#line 628 "../../lib/expr/exparse.y"
2180#line 2181 "exparse.c"
2184#line 632 "../../lib/expr/exparse.y"
2188#line 2189 "exparse.c"
2192#line 636 "../../lib/expr/exparse.y"
2196#line 2197 "exparse.c"
2200#line 640 "../../lib/expr/exparse.y"
2204#line 2205 "exparse.c"
2208#line 644 "../../lib/expr/exparse.y"
2212#line 2213 "exparse.c"
2216#line 648 "../../lib/expr/exparse.y"
2220#line 2221 "exparse.c"
2224#line 652 "../../lib/expr/exparse.y"
2228#line 2229 "exparse.c"
2232#line 656 "../../lib/expr/exparse.y"
2236#line 2237 "exparse.c"
2240#line 660 "../../lib/expr/exparse.y"
2244#line 2245 "exparse.c"
2248#line 664 "../../lib/expr/exparse.y"
2252#line 2253 "exparse.c"
2256#line 668 "../../lib/expr/exparse.y"
2260#line 2261 "exparse.c"
2264#line 672 "../../lib/expr/exparse.y"
2277#line 2278 "exparse.c"
2281#line 685 "../../lib/expr/exparse.y"
2285#line 2286 "exparse.c"
2289#line 689 "../../lib/expr/exparse.y"
2294 (yyval.expr) = (yyvsp[0].
expr);
2297 (yyval.expr) =
exnewnode(
expr.
program,
',',
true, (yyvsp[0].expr)->type, (yyvsp[-2].expr), (yyvsp[0].expr));
2299#line 2300 "exparse.c"
2303#line 698 "../../lib/expr/exparse.y"
2305#line 2306 "exparse.c"
2309#line 698 "../../lib/expr/exparse.y"
2311#line 2312 "exparse.c"
2315#line 699 "../../lib/expr/exparse.y"
2322 (yyvsp[-3].
expr)->type = (yyvsp[0].expr)->
type;
2324 else if (!(yyvsp[0].
expr)->type)
2325 (yyvsp[0].
expr)->type = (yyvsp[-3].expr)->
type;
2330 if ((yyvsp[-3].
expr)->type != (yyvsp[0].expr)->
type)
2333 exerror(
"if statement string type mismatch");
2341 if ((yyvsp[-6].
expr)->
data.constant.value.integer)
2343 (yyval.expr) = (yyvsp[-3].
expr);
2348 (yyval.expr) = (yyvsp[0].
expr);
2354 (yyval.expr) =
exnewnode(
expr.
program,
'?',
true, (yyvsp[-3].expr)->type, (yyvsp[-6].expr),
exnewnode(
expr.
program,
':',
true, (yyvsp[-3].expr)->type, (yyvsp[-3].expr), (yyvsp[0].expr)));
2356#line 2357 "exparse.c"
2360#line 740 "../../lib/expr/exparse.y"
2372 (yyval.expr)->
binary =
false;
2377 checkBinary(
expr.
program, (yyvsp[0].expr), (yyval.expr), 0);
2380#line 2381 "exparse.c"
2384#line 760 "../../lib/expr/exparse.y"
2386 if ((yyvsp[0].
id)->local ==
NULL)
2387 exerror(
"cannot apply '#' operator to non-array %s", (yyvsp[0].
id)->name);
2389 (yyval.expr)->
data.variable.symbol = (yyvsp[0].id);
2391#line 2392 "exparse.c"
2395#line 767 "../../lib/expr/exparse.y"
2398 (yyval.expr)->
data.variable.symbol = (yyvsp[0].id);
2400#line 2401 "exparse.c"
2404#line 772 "../../lib/expr/exparse.y"
2408#line 2409 "exparse.c"
2412#line 776 "../../lib/expr/exparse.y"
2416#line 2417 "exparse.c"
2420#line 780 "../../lib/expr/exparse.y"
2422 (yyval.expr) = (yyvsp[0].
expr);
2424#line 2425 "exparse.c"
2428#line 784 "../../lib/expr/exparse.y"
2432#line 2433 "exparse.c"
2436#line 788 "../../lib/expr/exparse.y"
2438 (yyval.expr) =
exnewnode(
expr.
program,
ARRAY,
true,
T((yyvsp[-3].
id)->type), call(0, (yyvsp[-3].
id), (yyvsp[-1].expr)), (yyvsp[-1].expr));
2440#line 2441 "exparse.c"
2444#line 792 "../../lib/expr/exparse.y"
2446 (yyval.expr) =
exnewnode(
expr.
program,
FUNCTION,
true,
T((yyvsp[-3].
id)->type), call(0, (yyvsp[-3].
id), (yyvsp[-1].expr)), (yyvsp[-1].expr));
2448#line 2449 "exparse.c"
2452#line 796 "../../lib/expr/exparse.y"
2456#line 2457 "exparse.c"
2460#line 800 "../../lib/expr/exparse.y"
2464#line 2465 "exparse.c"
2468#line 804 "../../lib/expr/exparse.y"
2470 (yyval.expr) = exnewsubstr (
expr.
program, (yyvsp[-1].expr));
2472#line 2473 "exparse.c"
2476#line 808 "../../lib/expr/exparse.y"
2478 (yyval.expr) = exnewsplit (
expr.
program, (yyvsp[-5].id)->index, (yyvsp[-1].id), (yyvsp[-3].
expr),
NULL);
2480#line 2481 "exparse.c"
2484#line 812 "../../lib/expr/exparse.y"
2486 (yyval.expr) = exnewsplit (
expr.
program, (yyvsp[-7].id)->index, (yyvsp[-3].id), (yyvsp[-5].
expr), (yyvsp[-1].expr));
2488#line 2489 "exparse.c"
2492#line 816 "../../lib/expr/exparse.y"
2498#line 2499 "exparse.c"
2502#line 822 "../../lib/expr/exparse.y"
2506#line 2507 "exparse.c"
2510#line 826 "../../lib/expr/exparse.y"
2514#line 2515 "exparse.c"
2518#line 830 "../../lib/expr/exparse.y"
2524#line 2525 "exparse.c"
2528#line 836 "../../lib/expr/exparse.y"
2531 (yyval.expr)->
data.call.procedure = (yyvsp[-3].id);
2533#line 2534 "exparse.c"
2537#line 841 "../../lib/expr/exparse.y"
2539 (yyval.expr) = exprint(
expr.
program, (yyvsp[-3].id), (yyvsp[-1].expr));
2541#line 2542 "exparse.c"
2545#line 845 "../../lib/expr/exparse.y"
2548 if ((yyvsp[-1].
expr) && (yyvsp[-1].expr)->
data.operand.left->type ==
INTEGER)
2550 (yyval.expr)->
data.print.descriptor = (yyvsp[-1].expr)->data.operand.left;
2551 (yyvsp[-1].expr) = (yyvsp[-1].
expr)->data.operand.right;
2554 switch ((yyvsp[-3].
id)->index)
2558 (yyval.expr)->
data.print.descriptor->data.constant.value.integer = 2;
2562 (yyval.expr)->
data.print.descriptor->data.constant.value.integer = 1;
2565 (yyval.expr)->
data.print.descriptor = 0;
2568 (yyval.expr)->
data.print.args = preprint((yyvsp[-1].
expr));
2570#line 2571 "exparse.c"
2574#line 870 "../../lib/expr/exparse.y"
2579 if ((yyvsp[-1].
expr) && (yyvsp[-1].expr)->
data.operand.left->type ==
INTEGER)
2581 (yyval.expr)->
data.scan.descriptor = (yyvsp[-1].expr)->data.operand.left;
2582 (yyvsp[-1].expr) = (yyvsp[-1].
expr)->data.operand.right;
2585 switch ((yyvsp[-3].
id)->index)
2588 (yyval.expr)->
data.scan.descriptor = 0;
2593 (yyval.expr)->
data.scan.descriptor = (yyvsp[-1].expr)->data.operand.left;
2594 (yyvsp[-1].expr) = (yyvsp[-1].
expr)->data.operand.right;
2597 exerror(
"%s: string argument expected", (yyvsp[-3].
id)->name);
2600 if (!(yyvsp[-1].
expr) || !(yyvsp[-1].
expr)->
data.operand.left || (yyvsp[-1].expr)->data.operand.left->type !=
STRING)
2601 exerror(
"%s: format argument expected", (yyvsp[-3].
id)->name);
2602 (yyval.expr)->
data.scan.format = (yyvsp[-1].expr)->data.operand.left;
2606 exerror(
"%s: address argument expected", (yyvsp[-3].
id)->name);
2610#line 2611 "exparse.c"
2614#line 906 "../../lib/expr/exparse.y"
2616 if ((yyvsp[0].
expr))
2619 exerror(
"%s: variable assignment not supported", (yyvsp[-1].
expr)->
data.variable.symbol->name);
2623 (yyvsp[-1].expr)->
type = (yyvsp[0].
expr)->type;
2624 else if ((yyvsp[0].
expr)->type != (yyvsp[-1].expr)->
type)
2626 (yyvsp[0].expr)->
type = (yyvsp[-1].
expr)->type;
2629 (yyvsp[0].expr)->
data.operand.left = (yyvsp[-1].expr);
2630 (yyval.expr) = (yyvsp[0].
expr);
2634#line 2635 "exparse.c"
2638#line 926 "../../lib/expr/exparse.y"
2642 exerror(
"++ and -- invalid for string variables");
2644 (yyval.expr)->subop =
PRE;
2646#line 2647 "exparse.c"
2650#line 934 "../../lib/expr/exparse.y"
2654 exerror(
"++ and -- invalid for string variables");
2656 (yyval.expr)->subop =
POS;
2658#line 2659 "exparse.c"
2662#line 942 "../../lib/expr/exparse.y"
2664 if ((yyvsp[0].
id)->local ==
NULL)
2665 exerror(
"cannot apply IN to non-array %s", (yyvsp[0].
id)->name);
2666 if ((yyvsp[0].
id)->index_type > 0 && (yyvsp[-2].expr)->
type != (yyvsp[0].
id)->index_type)
2667 exerror(
"%s indices must have type %s, not %s",
2670 (yyval.expr)->
data.variable.symbol = (yyvsp[0].id);
2671 (yyval.expr)->
data.variable.index = (yyvsp[-2].expr);
2673#line 2674 "exparse.c"
2677#line 953 "../../lib/expr/exparse.y"
2679 if ((yyvsp[0].
id)->index_type > 0 && (yyvsp[-2].expr)->
type != (yyvsp[0].
id)->index_type)
2680 exerror(
"%s indices must have type %s, not %s",
2683 (yyval.expr)->
data.variable.symbol = (yyvsp[0].id);
2684 (yyval.expr)->
data.variable.index = (yyvsp[-2].expr);
2686#line 2687 "exparse.c"
2690#line 962 "../../lib/expr/exparse.y"
2694#line 2695 "exparse.c"
2698#line 966 "../../lib/expr/exparse.y"
2702#line 2703 "exparse.c"
2706#line 976 "../../lib/expr/exparse.y"
2710 exerror(
"%s: identifier references not supported", (yyvsp[0].
id)->name);
2714#line 2715 "exparse.c"
2718#line 984 "../../lib/expr/exparse.y"
2721 (yyval.expr)->
data.constant.value.floating = (yyvsp[0].floating);
2723#line 2724 "exparse.c"
2727#line 989 "../../lib/expr/exparse.y"
2730 (yyval.expr)->
data.constant.value.integer = (yyvsp[0].integer);
2732#line 2733 "exparse.c"
2736#line 994 "../../lib/expr/exparse.y"
2739 (yyval.expr)->
data.constant.value.string = (yyvsp[0].string);
2741#line 2742 "exparse.c"
2745#line 999 "../../lib/expr/exparse.y"
2748 (yyval.expr)->
data.constant.value.integer = (yyvsp[0].integer);
2750#line 2751 "exparse.c"
2754#line 1015 "../../lib/expr/exparse.y"
2756 (yyval.expr) = makeVar(
expr.
program, (yyvsp[-1].id), 0, 0, (yyvsp[0].reference));
2758#line 2759 "exparse.c"
2762#line 1019 "../../lib/expr/exparse.y"
2768 exerror(
"%s: is%s an array", (yyvsp[-2].
id)->name, (yyvsp[-2].id)->local !=
NULL ?
"" :
" not");
2769 if ((yyvsp[-2].
id)->local !=
NULL && (yyvsp[-2].id)->index_type > 0) {
2770 if ((yyvsp[-1].
expr)->type != (yyvsp[-2].id)->index_type)
2771 exerror(
"%s: indices must have type %s, not %s",
2774 if ((yyvsp[0].reference)) {
2776 (yyval.expr) = makeVar(
expr.
program, (yyvsp[-2].id), (yyvsp[-1].expr), n, (yyvsp[0].reference));
2778 else (yyval.expr) = n;
2780#line 2781 "exparse.c"
2784#line 1037 "../../lib/expr/exparse.y"
2787 (yyval.expr)->
data.variable.symbol = (yyvsp[0].id);
2788 (yyval.expr)->
data.variable.reference = 0;
2789 (yyval.expr)->
data.variable.index = 0;
2790 (yyval.expr)->
data.variable.dyna = 0;
2792 exerror(
"unknown identifier");
2794#line 2795 "exparse.c"
2798#line 1049 "../../lib/expr/exparse.y"
2800 (yyval.integer) = 0;
2802#line 2803 "exparse.c"
2806#line 1053 "../../lib/expr/exparse.y"
2808 (yyval.integer) = -1;
2810#line 2811 "exparse.c"
2814#line 1057 "../../lib/expr/exparse.y"
2819 if (
INTEGRAL((yyvsp[-1].
id)->type))
2822 (yyval.integer) = (yyvsp[-1].id)->
type;
2825#line 2826 "exparse.c"
2829#line 1070 "../../lib/expr/exparse.y"
2833#line 2834 "exparse.c"
2837#line 1074 "../../lib/expr/exparse.y"
2839 (yyval.expr) = (yyvsp[-1].
expr);
2841#line 2842 "exparse.c"
2845#line 1080 "../../lib/expr/exparse.y"
2849#line 2850 "exparse.c"
2853#line 1084 "../../lib/expr/exparse.y"
2855 (yyval.expr) = (yyvsp[0].
expr)->data.operand.left;
2856 (yyvsp[0].expr)->
data.operand.left = (yyvsp[0].expr)->data.operand.right = 0;
2859#line 2860 "exparse.c"
2863#line 1092 "../../lib/expr/exparse.y"
2865 (yyval.expr) =
exnewnode(
expr.
program,
',',
true, 0,
exnewnode(
expr.
program,
',',
true, (yyvsp[0].expr)->type, (yyvsp[0].expr),
NULL),
NULL);
2866 (yyval.expr)->
data.operand.right = (yyval.expr)->data.operand.left;
2868#line 2869 "exparse.c"
2872#line 1097 "../../lib/expr/exparse.y"
2874 (yyvsp[-2].expr)->
data.operand.right = (yyvsp[-2].expr)->data.operand.right->data.operand.right =
exnewnode(
expr.
program,
',',
true, (yyvsp[-2].expr)->type, (yyvsp[0].expr),
NULL);
2876#line 2877 "exparse.c"
2880#line 1103 "../../lib/expr/exparse.y"
2884#line 2885 "exparse.c"
2888#line 1107 "../../lib/expr/exparse.y"
2891 if ((yyvsp[0].
id)->type)
2894#line 2895 "exparse.c"
2898#line 1116 "../../lib/expr/exparse.y"
2902#line 2903 "exparse.c"
2906#line 1120 "../../lib/expr/exparse.y"
2911 (yyval.expr) = (yyvsp[-2].
expr);
2915#line 2916 "exparse.c"
2919#line 1130 "../../lib/expr/exparse.y"
2921#line 2922 "exparse.c"
2925#line 1131 "../../lib/expr/exparse.y"
2927 if ((yyvsp[-2].
id)->type == 0) {
2928 exerror(
"%s: parameters to functions cannot be void typed", (yyvsp[0].
id)->name);
2931 (yyval.expr)->
data.variable.symbol = (yyvsp[0].id);
2933 (yyvsp[0].id)->
type = (yyvsp[-2].
id)->type;
2938#line 2939 "exparse.c"
2942#line 1146 "../../lib/expr/exparse.y"
2946#line 2947 "exparse.c"
2950#line 1150 "../../lib/expr/exparse.y"
2955 r->
symbol = (yyvsp[0].id);
2961#line 2962 "exparse.c"
2965#line 1161 "../../lib/expr/exparse.y"
2971 r->
symbol = (yyvsp[0].id);
2975 l->
symbol = (yyvsp[-1].id);
2981#line 2982 "exparse.c"
2985#line 1179 "../../lib/expr/exparse.y"
2987 (yyval.id) = (yyvsp[0].
id);
2989#line 2990 "exparse.c"
2993#line 1183 "../../lib/expr/exparse.y"
2995 (yyval.id) = (yyvsp[0].
id);
2997#line 2998 "exparse.c"
3001#line 1188 "../../lib/expr/exparse.y"
3005#line 3006 "exparse.c"
3009#line 1192 "../../lib/expr/exparse.y"
3012 (yyval.expr)->subop = (yyvsp[-1].op);
3014#line 3015 "exparse.c"
3018#line 1199 "../../lib/expr/exparse.y"
3032#line 3033 "exparse.c"
3036#line 1211 "../../lib/expr/exparse.y"
3042#line 3043 "exparse.c"
3046#line 1216 "../../lib/expr/exparse.y"
3057 (void)
dtclose((yyval.expr)->data.procedure.frame);
3058 (yyval.expr)->
data.procedure.frame =
NULL;
3059 (yyval.expr)->
data.procedure.args = (yyvsp[-5].expr);
3070#line 3071 "exparse.c"
3074#line 3075 "exparse.c"
3101 const int yyi =
yypgoto[yylhs] + *yyssp;
3102 yystate = (0 <= yyi && yyi <=
YYLAST &&
yycheck[yyi] == *yyssp
3124 if (yyerrstatus == 3)
3253 while (yyssp != yyss)