$ od -c -N 50000 [_CDCSL_93-16_]<1>Cedar>release>NPGS>NPGSScan.mesa 0000000 - - f i l e N P G S S c a n 0000020 . m e s a r e w r i t t e n 0000040 b y N P G S , D e c e m b e 0000060 r 1 0 , 1 9 9 2 1 1 : 0 0 0000100 : 2 7 p m P S T \n - - N P 0000120 G S S c a n . p g s \n - - C o 0000140 p y r i g h t 323 1 9 8 5 , 0000160 1 9 8 6 , 1 9 8 8 , 1 9 9 0 0000200 b y X e r o x C o r p o r 0000220 a t i o n . A l l r i g h 0000240 t s r e s e r v e d . \n - - 0000260 D O N O T C O N V E R T T 0000300 O T I O G A F O R M A T ! 0000320 ( N P G S r e q u i r e s 0000340 t h e m e s a - s t y l e c 0000360 o m m e n t s ) \n - - R u s s 0000400 A t k i n s o n ( R R A ) 0000420 M a r c h 1 7 , 1 9 8 8 1 0000440 0 : 1 4 : 2 2 a m P S T \n - 0000460 - D o u g W y a t t , M a 0000500 y 1 5 , 1 9 8 6 5 : 3 6 : 0000520 0 1 p m P D T \n - - J K F 0000540 M a y 2 4 , 1 9 9 0 1 0 0000560 : 0 2 : 0 0 a m P D T \n \n - 0000600 - N P G S [ d e f s : N P 0000620 G S P a r s e T a b l e , g r 0000640 a m m a r : N P G S ] 254 N 0000660 P G S S c a n . p g s \n \n D I R 0000700 E C T O R Y \n \t I O U S I N G 0000720 [ S T R E A M ] , \n \t N P G S 0000740 1 U S I N G [ \n \t \t A c t i 0000760 o n S t a c k , I n d e x , 0001000 L i n k S t a c k , T o k e n 0001020 , V a l u e , V a l u e S t 0001040 a c k , n u l l V a l u e , 0001060 I n p u t L o c ] , \n \t N P G S 0001100 P a r s e T a b l e U S I N G 0001120 [ \n \t \t e n d M a r k e r , 0001140 H a s h I n d e x , H a s h T 0001160 a b l e R e f , I n d e x T a 0001200 b l e R e f , \n \t \t I n i t H a 0001220 s h T a b l e , I n i t I n d 0001240 e x T a b l e , I n i t S c a 0001260 n T a b l e , I n i t V o c a 0001300 b u l a r y , \n \t \t P r o d D a 0001320 t a R e f , S c a n T a b l e 0001340 R e f , T S y m b o l , V o 0001360 c a b u l a r y R e f , t o k 0001400 e n I D , t o k e n N U M , \n 0001420 \t \t t o k e n T A B 3 , t o k 0001440 e n T A B 4 ] , \n \t N P G S C o 0001460 n D e f s U S I N G [ \n \t \t 0001500 a l i a s e s , a l t e r n a 0001520 t e L i m , \n \t \t C u s p P r 0001540 e S e t P r i o r i t y T o k e 0001560 n A r r a y , - - n e w f 0001600 o r C U S P \n \t \t e o f M a r 0001620 k , E x p a n d A l i a s e s 0001640 , E x p a n d P r o d I n f o 0001660 , E x p a n d R h s C h a r , 0001700 \n \t \t E x p a n d S y m T a b , 0001720 f l a g s , g e t i n d e x 0001740 , i n c h a r , M a k e A l 0001760 i a s e s , M a k e P r o d I 0002000 n f o , \n \t \t M a k e R h s C h 0002020 a r , M a k e S y m I n f o , 0002040 M a k e S y m T a b , M a k 0002060 e T o k e n I n f o , m a x P 0002100 r o d , \n \t \t m a x R h s S y m 0002120 b o l s , m a x R u l e , n 0002140 e x t A l i a s , n u m P r o 0002160 d , n u m R u l e s , o u t 0002200 b u f L i m , \n \t \t o u t c h a 0002220 r , o u t e o l , o u t n u 0002240 m , o u t s t r i n g , p r 0002260 o d I n f o , p s s L i m , 0002300 r e s e t o u t s t r e a m , \n 0002320 \t \t r h s C h a r , r h s L i 0002340 m , s e t e r r s t r e a m , 0002360 s e t i n d e x , s e t o u 0002400 t s t r e a m , s y m I n f o 0002420 , s y m T a b , \n \t \t s y m T 0002440 a b S i z e , t o k e n I n f 0002460 o , t o k e n S i z e , t o 0002500 t a l T o k e n s , w a r n i 0002520 n g s L o g g e d ] , \n \t N P G 0002540 S T y p e s U S I N G [ O p 0002560 t i o n s ] , \n \t R o p e U S 0002600 I N G [ F r o m R e f T e x t 0002620 , L e n g t h , R O P E ] ; 0002640 \n \t \n N P G S S c a n : C E D 0002660 A R P R O G R A M \n \t I M P O 0002700 R T S N P G S 1 , N P G S C 0002720 o n D e f s , N P G S P a r s 0002740 e T a b l e , R o p e \n \t E 0002760 X P O R T S N P G S 1 , N P 0003000 G S C o n D e f s \n \t = { O 0003020 P E N N P G S 1 , N P G S P 0003040 a r s e T a b l e , N P G S C 0003060 o n D e f s ; \n \t \n \t R O P E : 0003100 T Y P E = R o p e . R O P 0003120 E ; \n \t S T R E A M : T Y P E 0003140 = I O . S T R E A M ; \n \t \n 0003160 - - T r e e B u i l d : i n 0003200 t e r p r e t e r s e c t i o 0003220 n \n \n \t - - i n t e r p r e t 0003240 e r s t a t e \n \t \n \t \t c h e 0003260 c k : N A T = 3 ; \n \t \t w 0003300 a r n i n g : N A T = 0 ; 0003320 \n \t \t s p e c E r r o r C a s e 0003340 s : N A T = 5 ; \n \t \t \n \t 0003360 \t t o k e n , n u m R h s C h 0003400 a r s : C A R D I N A L 254 0003420 0 ; \n \t \t l i n e W i d t h : 0003440 I N T E G E R ; \n \t \t i n s e r 0003460 t F l a g : C A R D I N A L ; 0003500 \n \t \t \n \t \t H a s h C h a i n A 0003520 r r a y : T Y P E = A R R 0003540 A Y [ 1 . . s y m T a b S i z 0003560 e / 4 ] O F C A R D I N A L 0003600 ; \n \t \t h a s h C h a i n : R 0003620 E F H a s h C h a i n A r r a 0003640 y ; \n \t \t \n \t - - l o c a l 0003660 d a t a b a s e ( s u p p l 0003700 i e d b y p a r s e r ) \n \t 0003720 \n \t \t v : N P G S 1 . V a l u 0003740 e S t a c k ; \n \t \t l : N P G 0003760 S 1 . L i n k S t a c k ; \n \t \t 0004000 \n \t \t q : N P G S 1 . A c t i 0004020 o n S t a c k ; \n \t \t \n \t \t p r 0004040 o d D a t a : P r o d D a t a 0004060 R e f ; \n \t \t \n \t - - i n i t 0004100 i a l i z a t i o n / t e r m i 0004120 n a t i o n \n \t \n \t \t A s s i g 0004140 n D e s c r i p t o r s : P U 0004160 B L I C P R O C [ \n \t \t \t q 0004200 d : N P G S 1 . A c t i o n S 0004220 t a c k , v d : N P G S 1 . 0004240 V a l u e S t a c k , l d : 0004260 N P G S 1 . L i n k S t a c k , 0004300 p p : P r o d D a t a R e f 0004320 ] = { \n \t \t \t q 254 q d ; 0004340 \n \t \t \t v 254 v d ; \n \t \t \t l 0004360 254 l d ; \n \t \t \t p r o d D a 0004400 t a 254 p p ; \n \t \t \t } ; \n \t 0004420 \t \t \n \t \t O u t T o k e n : P 0004440 U B L I C P R O C [ s y m b 0004460 o l : C A R D I N A L ] R E 0004500 T U R N S [ C A R D I N A L ] 0004520 = { \n \t \t \t r : R O P E 0004540 = " * * * " ; \n \t \t \t I F 0004560 s y m b o l = 0 T H E N 0004600 { o u t s t r i n g [ r ] ; 0004620 R E T U R N [ R o p e . L e n g 0004640 t h [ r ] ] } ; \n \t \t \t F O R 0004660 i : C A R D I N A L I N [ 0004700 0 . . s y m I n f o [ s y m b o 0004720 l ] . l e n g t h ) D O \n \t \t 0004740 \t \t o u t c h a r [ s y m T a b 0004760 [ s y m b o l * t o k e n S i z 0005000 e + i ] , 1 ] ; \n \t \t \t \t E N D 0005020 L O O P ; \n \t \t \t R E T U R N 0005040 [ s y m I n f o [ s y m b o l ] 0005060 . l e n g t h ] ; \n \t \t \t } ; \n 0005100 \t \t \t \n \t \t \t \n \t - - t h e 0005120 i n t e r p r e t a t i o n r 0005140 u l e s \n \t \n \t \t p r i x , c 0005160 h i x : C A R D I N A L 254 0005200 0 ; - - i n d e x e s i n t 0005220 o p r o d I n f o a n d r 0005240 h s C h a r \n \t \t r h s F l a g 0005260 : B O O L ; \n \t \t l a s t S 0005300 y m b o l , l h s D e f : C 0005320 A R D I N A L 254 0 ; \n \t \t \n 0005340 \t \t P r o c e s s Q u e u e : 0005360 P U B L I C P R O C [ q I , 0005400 t o p : C A R D I N A L , 0005420 c u s p : B O O L ] = { \n 0005440 \t \t \t i , j , k : C A R D 0005460 I N A L ; \n \t \t \t \n \t \t \t - - 0005500 l o c a l p r o c e d u r e s 0005520 \n \t \t \t \t P r i n t T a b l e H 0005540 e a d : P R O C [ c : C H 0005560 A R ] = { \n \t \t \t \t \t I F 0005600 f l a g s [ e c h o ] T H E N 0005620 { o u t e o l [ 2 ] ; o u t 0005640 s t r i n g [ " | | T A B L E " 0005660 ] ; o u t c h a r [ c , 1 ] ; 0005700 o u t e o l [ 1 ] } ; \n \t \t \t 0005720 \t \t } ; \n \t \t \t \t \t \n \t \t \t \t S 0005740 e t R u l e C h a i n : P R O 0005760 C [ r u l e : C A R D I N A 0006000 L , c h a i n : B O O L ] 0006020 = { \n \t \t \t \t \t F i x L a s t 0006040 P r o d [ ] ; \n \t \t \t \t \t I F 0006060 p r i x = p r o d I n f o . l e 0006100 n g t h T H E N - - p r o d 0006120 u c t i o n t a b l e o v e 0006140 r f l o w \n \t \t \t \t \t \t p r o d 0006160 I n f o 254 E x p a n d P r o 0006200 d I n f o [ p r o d I n f o , 0006220 p r o d I n f o . l e n g t h / 0006240 8 ] ; \n \t \t \t \t \t p r o d I n f 0006260 o [ p r i x ] . c h a i n 254 0006300 c h a i n ; \n \t \t \t \t \t n u m R 0006320 u l e s 254 M A X [ n u m R u 0006340 l e s , r u l e ] ; \n \t \t \t \t 0006360 \t I F r u l e > m a x R u l e 0006400 T H E N E r r o r [ c h e c 0006420 k + 1 0 , - 5 , I n p u t L o c 0006440 [ ] ] E L S E p r o d I n f 0006460 o [ p r i x ] . r u l e 254 r 0006500 u l e ; \n \t \t \t \t \t } ; \n \t \t \t 0006520 \t \t \n \t \t \t \t F i x L a s t P r 0006540 o d : P R O C = { \n \t \t \t 0006560 \t \t e o f M a r k : C A R D I 0006600 N A L 254 N P G S C o n D e f 0006620 s . e o f M a r k ; \n \t \t \t \t \t 0006640 p r o d I n f o [ p r i x - 1 ] 0006660 . l h s 254 l h s D e f ; \n \t 0006700 \t \t \t \t I F p r o d I n f o [ 0006720 p r i x - 1 ] . c o u n t = 0 0006740 T H E N t o k e n I n f o [ l 0006760 h s D e f - e o f M a r k ] . e 0007000 m p t y 254 T R U E ; \n \t \t \t 0007020 \t \t I F r h s F l a g T H E 0007040 N { \n \t \t \t \t \t \t - - t o o 0007060 m a n y r h s C h a r s \n \t 0007100 \t \t \t \t \t r h s F l a g 254 F 0007120 A L S E ; \n \t \t \t \t \t \t E r r o 0007140 r [ c h e c k + 5 , ( p r i x 0007160 - 1 + s p e c E r r o r C a s e 0007200 s ) , I n p u t L o c [ ] ] ; 0007220 \n \t \t \t \t \t \t } ; \n \t \t \t \t \t } 0007240 ; \n \t \t \t \t \t \t \n \t \t \t \t P r o 0007260 d H e a d e r : P R O C [ n 0007300 e w : B O O L ] = { \n \t \t 0007320 \t \t \t p r o d I n f o [ p r i x 0007340 ] . i n d e x 254 c h i x ; \n 0007360 \t \t \t \t \t I F l h s D e f > e 0007400 o f M a r k T H E N { \n \t \t 0007420 \t \t \t \t I F t o k e n I n f o 0007440 [ l h s D e f - e o f M a r k ] 0007460 . c o u n t = a l t e r n a t e 0007500 L i m T H E N { \n \t \t \t \t \t 0007520 \t \t E r r o r [ c h e c k + 1 , 0007540 l h s D e f , I n p u t L o c 0007560 [ ] ] ; - - t o o m a n y 0007600 a l t e r n a t i v e s \n \t \t 0007620 \t \t \t \t \t t o k e n I n f o [ l 0007640 h s D e f - e o f M a r k ] . c 0007660 o u n t 254 1 ; \n \t \t \t \t \t \t \t 0007700 } ; \n \t \t \t \t \t \t t o k e n I n 0007720 f o [ l h s D e f - e o f M a r 0007740 k ] . c o u n t 254 t o k e n 0007760 I n f o [ l h s D e f - e o f M 0010000 a r k ] . c o u n t + 1 ; \n 0010020 \t \t \t \t \t \t } ; \n \t \t \t \t \t I F 0010040 f l a g s [ e c h o ] T H E 0010060 N { \n \t \t \t \t \t \t l i n e W i 0010100 d t h 254 o u t b u f L i m - 0010120 t o k e n S i z e - 1 4 ; \n \t \t 0010140 \t \t \t \t o u t e o l [ I F n e 0010160 w T H E N 2 E L S E 1 ] 0010200 ; \n \t \t \t \t \t \t o u t n u m [ p 0010220 r i x , 3 ] ; \n \t \t \t \t \t \t o u 0010240 t s t r i n g [ I F p r o d I 0010260 n f o [ p r i x ] . c h a i n 0010300 T H E N " C " E L S E 0010320 " " ] ; \n \t \t \t \t \t \t o u 0010340 t n u m [ p r o d I n f o [ p r 0010360 i x ] . r u l e , 3 ] ; o u t 0010400 c h a r [ ' , 2 ] ; \n \t \t \t \t 0010420 \t \t o u t c h a r [ ' , t o k 0010440 e n S i z e - ( I F n e w T 0010460 H E N O u t T o k e n [ l h s 0010500 D e f ] E L S E 0 ) ] ; \n \t 0010520 \t \t \t \t \t o u t s t r i n g [ I 0010540 F n e w T H E N " : : = 0010560 " E L S E " | " ] 0010600 ; \n \t \t \t \t \t \t } ; \n \t \t \t \t \t 0010620 p r i x 254 p r i x + 1 ; \n \t 0010640 \t \t \t \t } ; \n \t \t \t \t \t \n \t \t \t 0010660 \t L h s S y m b o l : P R O C 0010700 [ s y m b o l : C A R D I N 0010720 A L ] = { \n \t \t \t \t \t l h s 0010740 D e f 254 s y m b o l ; \n \t \t 0010760 \t \t \t I F l h s D e f < = e o 0011000 f M a r k \n \t \t \t \t \t \t T H E 0011020 N E r r o r [ c h e c k + 4 , 0011040 l h s D e f , I n p u t L o c [ 0011060 ] ] \n \t \t \t \t \t \t - - u n d 0011100 e f i n e d o r t e r m i n 0011120 a l s y m b o l b e f o r e 0011140 : : = \n \t \t \t \t \t \t E L S E 0011160 \n \t \t \t \t \t \t \t I F t o k e 0011200 n I n f o [ l h s D e f - e o f 0011220 M a r k ] . i n d e x = 0 \n 0011240 \t \t \t \t \t \t \t \t T H E N t o k 0011260 e n I n f o [ l h s D e f - e o 0011300 f M a r k ] . i n d e x 254 p 0011320 r i x \n \t \t \t \t \t \t \t \t E L S E 0011340 E r r o r [ c h e c k + 2 , l 0011360 h s D e f , I n p u t L o c [ ] 0011400 ] ; - - m u l t i p l e d e 0011420 f i n i t i o n s \n \t \t \t \t \t P 0011440 r o d H e a d e r [ T R U E ] ; 0011460 \n \t \t \t \t \t } ; \n \t \t \t - - e 0011500 n d o f l o c a l p r o c 0011520 e d u r e s \n \t \t \t \n \t \t \t \t F 0011540 O R q j : C A R D I N A L 0011560 I N [ 0 . . q I ) D O \n \t \t 0011600 \t \t \t t o p 254 t o p - q [ q 0011620 j ] . t a g . p L e n g t h + 1 0011640 ; \n \t \t \t \t \t S E L E C T p r 0011660 o d D a t a [ q [ q j ] . t r a 0011700 n s i t i o n ] . r u l e F R 0011720 O M \n \t \t \t \t \t \n 0011740 0011760 0 = > - - T Y P E : 0012000 N P G S P a r s e T a b l e 0012020 E X P O R T S : S E L F \n \t 0012040 \t \t \t - - G O A L : g r a m 0012060 m a r \n \t \t \t \t - - T E R M I 0012100 N A L S : \n \t \t \t \t - - s y m 0012120 b o l n u m ' ? ' | " : 0012140 : = " ' C " | | T A B L E 1 0012160 " " | | T A B L E 2 " " | | 0012200 T A B L E 3 " \n \t \t \t \t - - " 0012220 | | T A B L E 4 " " | | I N P 0012240 U T " " | | C H A I N " " | 0012260 | L I S T S " " | | P R I N T 0012300 L R " \n \t \t \t \t - - " | | P R 0012320 I N T L A L R " " | | F I R S 0012340 T " " | | I D S " " G O A L 0012360 " \n \t \t \t \t - - A L I A S E S 0012400 : s y m b o l t o k e n I D 0012420 n u m t o k e n N U M 0012440 ' ? t o k e n Q U E R Y \n \t \t 0012460 \t \t - - " | | T A B L E 3 " 0012500 t o k e n T A B 3 " | | T A 0012520 B L E 4 " t o k e n T A B 4 0012540 ' ? i n i t i a l S y m b o 0012560 l \n \t \t \t \t - - P R O D U C T 0012600 I O N S : \n \t \t \t \t - - g r a 0012620 m m a r : : = 0012640 ' ? h e a d r u l e s e t \n 0012660 \t \t \t \t { \n \t \t \t \t F i x L a s 0012700 t P r o d [ ] ; \n \t \t \t \t n u m 0012720 P r o d 254 p r i x - 1 ; \n \t 0012740 \t \t \t n u m R h s C h a r s 254 0012760 c h i x - 1 ; \n \t \t \t \t i 254 0013000 1 ; \n \t \t \t \t I F f l a g s 0013020 [ e c h o ] T H E N o u t e 0013040 o l [ 1 ] ; \n \t \t \t \t I F n u 0013060 m P r o d > p s s L i m O 0013100 R t o t a l T o k e n s > 0013120 p s s L i m T H E N E r r o 0013140 r [ c h e c k + 6 , 0 , I n p u 0013160 t L o c [ ] ] ; \n \t \t \t \t I F 0013200 c u s p T H E N C u s p P r 0013220 e S e t P r i o r i t y T o k e 0013240 n A r r a y [ h a s h C h a i n 0013260 ] ; - - n e w f o r C U 0013300 S P \n \t \t \t \t h a s h C h a i n 0013320 254 N I L ; \n \t \t \t \t W H I L 0013340 E s y m I n f o [ i ] . u s e 0013360 d A N D i < = t o t a l 0013400 T o k e n s D O \n \t \t \t \t \t I 0013420 F i > e o f M a r k A N 0013440 D t o k e n I n f o [ i - e o 0013460 f M a r k ] . i n d e x = 0 0013500 T H E N E X I T ; \n \t \t \t \t 0013520 \t i 254 i + 1 ; \n \t \t \t \t \t E 0013540 N D L O O P ; \n \t \t \t \t I F i 0013560 < = t o t a l T o k e n s 0013600 T H E N { \n \t \t \t \t \t d e f f 0013620 l a g : B O O L 254 F A L S 0013640 E ; \n \t \t \t \t \t l i n e W i d t 0013660 h 254 0 ; E r r o r [ w a r 0013700 n i n g + 3 , 0 , I n p u t L o 0013720 c [ ] ] ; s e t e r r s t r e 0013740 a m [ ] ; \n \t \t \t \t \t F O R i 0013760 I N [ i . . t o t a l T o k 0014000 e n s ] D O \n \t \t \t \t \t \t j 0014020 254 0 ; I F ~ s y m I n f o 0014040 [ i ] . u s e d T H E N j 0014060 254 j + 1 ; \n \t \t \t \t \t \t I F 0014100 i > e o f M a r k A N D 0014120 t o k e n I n f o [ i - e o f M 0014140 a r k ] . i n d e x = 0 T 0014160 H E N j 254 j + 2 ; \n \t \t \t 0014200 \t \t \t I F j # 0 T H E N 0014220 { \n \t \t \t \t \t \t \t I F ( l i 0014240 n e W i d t h 254 l i n e W i 0014260 d t h + ( k 254 ( 1 1 + j ) / 2 ) 0014300 ) > o u t b u f L i m T H 0014320 E N { \n \t \t \t \t \t \t \t \t o u t 0014340 e o l [ 1 ] ; l i n e W i d t 0014360 h 254 k } ; \n \t \t \t \t \t \t \t o 0014400 u t n u m [ i , 5 ] ; \n \t \t \t \t 0014420 \t \t \t I F j # 2 T H E N o 0014440 u t c h a r [ ' U , 1 ] E L S 0014460 E d e f f l a g 254 T R U E 0014500 ; \n \t \t \t \t \t \t \t I F j > 1 0014520 T H E N o u t c h a r [ ' D , 0014540 1 ] } ; \n \t \t \t \t \t \t E N D L O 0014560 O P ; \n \t \t \t \t \t o u t e o l [ 0014600 1 ] ; r e s e t o u t s t r e 0014620 a m [ ] ; \n \t \t \t \t \t I F d e 0014640 f f l a g T H E N \n \t \t \t \t \t 0014660 \t - - n o n t e r m i n a l 0014700 u s e d b u t n o t d e f 0014720 i n e d \n \t \t \t \t \t \t E r r o r 0014740 [ c h e c k + 3 , - 2 , I n p u 0014760 t L o c [ ] ] ; \n \t \t \t \t \t } ; 0015000 \n \t \t \t \t F O R i I N [ 1 0015020 . . n u m P r o d ] D O \n \t \t 0015040 \t \t \t I F p r o d I n f o [ i 0015060 ] . c h a i n T H E N \n \t \t \t 0015100 \t \t \t I F p r o d I n f o [ i 0015120 ] . c o u n t # 1 O R r 0015140 h s C h a r [ p r o d I n f o [ 0015160 i ] . i n d e x ] < = e o f 0015200 M a r k T H E N { \n \t \t \t \t 0015220 \t \t \t E r r o r [ w a r n i n g 0015240 + 2 , - ( i + s p e c E r r o 0015260 r C a s e s ) , I n p u t L o 0015300 c [ ] ] ; \n \t \t \t \t \t \t \t p r o 0015320 d I n f o [ i ] . c h a i n 254 0015340 F A L S E ; \n \t \t \t \t \t \t \t } 0015360 ; \n \t \t \t \t \t E N D L O O P ; \n 0015400 \t \t \t \t F i n i s h I n p u t [ 0015420 ] ; \n \t \t \t \t } ; \n \t \t \t \t \n 0015440 0015460 1 = > - - 0015500 h e a d 0015520 : : = d i r e c t i v e s t 0015540 e r m i n a l s n o n t e r m 0015560 i n a l s " | | T A B L E 4 " 0015600 \n \t \t \t \t - - h e a d 0015620 : : = d i r e c 0015640 t i v e s t e r m i n a l s 0015660 n o n t e r m i n a l s a l i 0015700 a s e s " | | T A B L E 4 " \n 0015720 \t \t \t \t { \n \t \t \t \t t o t a l T 0015740 o k e n s 254 l a s t S y m b 0015760 o l ; P r i n t T a b l e H e 0016000 a d [ ' 4 ] ; \n \t \t \t \t t o k e 0016020 n I n f o 254 M a k e T o k e 0016040 n I n f o [ t o t a l T o k e n 0016060 s - e o f M a r k + 1 ] ; \n \t \t 0016100 \t \t n u m R u l e s 254 0 ; \n 0016120 \t \t \t \t p r o d I n f o 254 M 0016140 a k e P r o d I n f o [ m a x P 0016160 r o d + 1 ] ; \n \t \t \t \t r h s C 0016200 h a r 254 M a k e R h s C h a 0016220 r [ m a x R h s S y m b o l s + 0016240 1 ] ; \n \t \t \t \t F O R i I N 0016260 [ 0 . . t o t a l T o k e n s 0016300 - e o f M a r k ] D O \n \t \t \t 0016320 \t \t t o k e n I n f o [ i ] 254 0016340 [ c o u n t : 0 , e m p t y 0016360 : F A L S E , i n d e x : 0 ] 0016400 ; \n \t \t \t \t \t E N D L O O P ; \n 0016420 \t \t \t \t p r o d I n f o [ 0 ] 0016440 254 [ c o u n t : 2 , r u l e 0016460 : 0 , c h a i n : F A L S E , 0016500 l h s : 0 , i n d e x : 0 ] 0016520 ; \n \t \t \t \t F O R i I N [ 0016540 1 . . m a x P r o d ] D O \n \t 0016560 \t \t \t \t p r o d I n f o [ i ] 0016600 254 [ c o u n t : 0 , r u l e 0016620 : 0 , c h a i n : F A L S E , 0016640 l h s : 0 , i n d e x : 0 ] 0016660 ; \n \t \t \t \t \t E N D L O O P ; \n 0016700 \t \t \t \t I F f l a g s [ e c h 0016720 o ] T H E N { \n \t \t \t \t \t o 0016740 u t e o l [ 1 ] ; \n \t \t \t \t \t o 0016760 u t c h a r [ ' , 2 0 ] ; \n \t 0017000 \t \t \t \t o u t s t r i n g [ " G 0017020 O A L : : = " ] ; \n \t \t \t \t 0017040 \t [ ] 254 O u t T o k e n [ e 0017060 o f M a r k + 1 ] ; o u t c h 0017100 a r [ ' , 1 ] ; \n \t \t \t \t \t [ 0017120 ] 254 O u t T o k e n [ e o f 0017140 M a r k ] ; \n \t \t \t \t \t } ; \n \t 0017160 \t \t \t r h s C h a r [ 0 ] 254 0017200 e o f M a r k + 1 ; \n \t \t \t \t r 0017220 h s C h a r [ 1 ] 254 e o f M 0017240 a r k ; \n \t \t \t \t s y m I n f o 0017260 [ e o f M a r k + 1 ] . u s e d 0017300 254 s y m I n f o [ e o f M a 0017320 r k ] . u s e d 254 T R U E ; 0017340 \n \t \t \t \t p r i x 254 1 ; c 0017360 h i x 254 2 ; l h s D e f 0017400 254 0 ; r h s F l a g 254 F 0017420 A L S E ; \n \t \t \t \t } ; \n \t \t \t 0017440 \t \n 0017460 2 = > 0017500 - - d i r e c t i v e s 0017520 : : = \n \t \t \t \t { f l a g 0017540 s 254 A L L [ F A L S E ] ; 0017560 l [ t o p ] 254 I n p u t L 0017600 o c [ ] } ; \n \t \t \t \t \n 0017620 0017640 3 = > - - d i 0017660 r e c t i v e : : = 0017700 " | | I N P U T " \n \t \t \t \t { 0017720 f l a g s [ e c h o ] 254 T R 0017740 U E ; s e t o u t s t r e a m 0017760 [ " . e c h o " ] } ; \n \t \t \t \t 0020000 \n 0020020 4 = > 0020040 - - d i r e c t i v e 0020060 : : = " | | C H A I N " \n 0020100 \t \t \t \t f l a g s [ c h a i n ] 0020120 254 T R U E ; \n \t \t \t \t \n 0020140 0020160 5 = > - - 0020200 d i r e c t i v e : 0020220 : = " | | L I S T S " \n \t \t \t 0020240 \t f l a g s [ l i s t s ] 254 0020260 T R U E ; \n \t \t \t \t \n 0020300 0020320 6 = > - - d i r 0020340 e c t i v e : : = 0020360 " | | P R I N T L R " \n \t \t \t \t 0020400 f l a g s [ p r i n t L R ] 254 0020420 T R U E ; \n \t \t \t \t \n 0020440 0020460 7 = > - - d i 0020500 r e c t i v e : : = 0020520 " | | P R I N T L A L R " \n \t 0020540 \t \t \t f l a g s [ p r i n t L A 0020560 L R ] 254 T R U E ; \n \t \t \t \t 0020600 \n 0020620 8 = > 0020640 - - d i r e c t i v e 0020660 : : = " | | F I R S T " \n 0020700 \t \t \t \t f l a g s [ f i r s t ] 0020720 254 T R U E ; \n \t \t \t \t \n 0020740 0020760 9 = > - - 0021000 d i r e c t i v e : 0021020 : = " | | I D S " \n \t \t \t \t f 0021040 l a g s [ i d s ] 254 T R U E 0021060 ; \n \t \t \t \t \n 0021100 1 0021120 0 = > - - t e r m i n a 0021140 l s : : = " | | T 0021160 A B L E 1 " \n \t \t \t \t { \n \t \t \t 0021200 \t \t I F f l a g s [ e c h o ] 0021220 T H E N { \n \t \t \t \t \t \t o u 0021240 t e o l [ 1 ] ; \n \t \t \t \t \t \t F 0021260 O R o p t : N P G S T y p e 0021300 s . O p t i o n s I N N P G 0021320 S T y p e s . O p t i o n s D 0021340 O \n \t \t \t \t \t \t \t I F f l a g 0021360 s [ o p t ] T H E N o u t s 0021400 t r i n g [ \n \t \t \t \t \t \t \t \t S 0021420 E L E C T o p t F R O M \n \t 0021440 \t \t \t \t \t \t \t \t e c h o = > 0021460 " | | I N P U T " , \n \t \t \t \t 0021500 \t \t \t \t \t c h a i n = > " | 0021520 | C H A I N " , \n \t \t \t \t \t \t 0021540 \t \t \t l i s t s = > " | | L 0021560 I S T S " , \n \t \t \t \t \t \t \t \t 0021600 \t p r i n t L R = > " | | P 0021620 R I N T L R " , \n \t \t \t \t \t \t 0021640 \t \t \t p r i n t L A L R = > 0021660 " | | P R I N T L A L R " , \n 0021700 \t \t \t \t \t \t \t \t \t f i r s t = 0021720 > " | | F I R S T " , \n \t \t 0021740 \t \t \t \t \t \t \t E N D C A S E = 0021760 > " | | I D S " ] ; \n \t \t \t 0022000 \t \t \t \t E N D L O O P ; \n \t \t \t 0022020 \t \t \t } ; \n \t \t \t \t \t P r i n t 0022040 T a b l e H e a d [ ' 1 ] ; \n \t 0022060 \t \t \t \t } ; \n \t \t \t \t \t \n 0022100 0022120 1 1 = > - - t 0022140 e r m i n a l s : : 0022160 = t e r m i n a l s d i s c 0022200 a r d s y m b o l \n \t \t \t \t - 0022220 - n o n t e r m i n a l s 0022240 : : = n o n t e r m i n a l 0022260 s d i s c a r d s y m b o l 0022300 \n \t \t \t \t { \n \t \t \t \t \t l a s 0022320 t S y m b o l 254 v [ t o p + 0022340 2 ] . s ; \n \t \t \t \t \t I F f l 0022360 a g s [ e c h o ] T H E N { 0022400 \n \t \t \t \t \t \t o u t n u m [ l a 0022420 s t S y m b o l , 3 ] ; o u 0022440 t c h a r [ ' , 2 ] ; \n \t \t 0022460 \t \t \t \t [ ] 254 O u t T o k e 0022500 n [ l a s t S y m b o l ] ; \n \t 0022520 \t \t \t \t \t o u t e o l [ 1 ] } ; 0022540 \n \t \t \t \t \t } ; \n \t \t \t \t \t \n 0022560 0022600 1 2 = > - - 0022620 n o n t e r m i n a l s 0022640 : : = " | | T A B L E 2 " \n \t 0022660 \t \t \t { \n \t \t \t \t \t P r i n t T 0022700 a b l e H e a d [ ' 2 ] ; e o 0022720 f M a r k 254 l a s t S y m b 0022740 o l ; \n \t \t \t \t \t n e x t A l i 0022760 a s 254 0 ; - - a s s e 0023000 r t T A B L E 3 e m p t y 0023020 i n c a s e i t i s o m 0023040 i t t e d \n \t \t \t \t \t a l i a s 0023060 e s 254 N I L ; \n \t \t \t \t \t } 0023100 ; \n \t \t \t \t \t \n 0023120 0023140 1 3 = > - - a l i a s e 0023160 s : : = " | | 0023200 T A B L E 3 " \n \t \t \t \t { \n \t \t 0023220 \t \t \t P r i n t T a b l e H e a 0023240 d [ ' 3 ] ; \n \t \t \t \t \t a l i a 0023260 s e s 254 M a k e A l i a s e 0023300 s [ 6 4 ] ; \n \t \t \t \t \t } ; \n \t 0023320 \t \t \t \t \n 0023340 1 4 0023360 = > - - a l i a s e s 0023400 : : = a l i a s e 0023420 s s y m b o l s y m b o l \n 0023440 \t \t \t \t { t e m p : U N S P E 0023460 C I F I E D 254 N P G S C o n 0023500 D e f s . e o f M a r k ; \n \t \t 0023520 \t \t \t I F v [ t o p + 1 ] . s 0023540 > t e m p T H E N E r r o r 0023560 [ c h e c k + 7 , v [ t o p + 1 0023600 ] . s , I n p u t L o c [ ] ] ; 0023620 \n \t \t \t \t \t I F v [ t o p + 2 0023640 ] . s < = t e m p T H E N E 0023660 r r o r [ c h e c k + 8 , v [ t 0023700 o p + 2 ] . s , I n p u t L o c 0023720 [ ] ] ; \n \t \t \t \t \t I F n e x 0023740 t A l i a s = a l i a s e s . l 0023760 e n g t h T H E N \n \t \t \t \t \t 0024000 \t a l i a s e s 254 E x p a n 0024020 d A l i a s e s [ a l i a s e s 0024040 , a l i a s e s . l e n g t h 0024060 / 8 ] ; \n \t \t \t \t \t a l i a s e 0024100 s [ n e x t A l i a s ] 254 [ 0024120 v [ t o p + 1 ] . s , v [ t o p 0024140 + 2 ] . s ] ; n e x t A l i a 0024160 s 254 n e x t A l i a s + 1 ; 0024200 \n \t \t \t \t \t I F f l a g s [ e 0024220 c h o ] T H E N { \n \t \t \t \t 0024240 \t \t o u t c h a r [ ' , t o k 0024260 e n S i z e + 1 - O u t T o k e 0024300 n [ v [ t o p + 1 ] . s ] ] ; 0024320 o u t c h a r [ ' , 1 ] ; \n \t 0024340 \t \t \t \t \t j 254 C A R D I N A 0024360 L [ v [ t o p + 2 ] . s ] * t o 0024400 k e n S i z e ; \n \t \t \t \t \t \t F 0024420 O R i I N [ j . . j + t o 0024440 k e n S i z e ) W H I L E s 0024460 y m T a b [ i ] # 0 C D O o 0024500 u t c h a r [ s y m T a b [ i ] 0024520 , 1 ] E N D L O O P ; \n \t \t \t 0024540 \t \t \t o u t e o l [ 1 ] } ; \n \t 0024560 \t \t \t \t } ; \n \t \t \t \t \t \n 0024600 0024620 1 5 = > - - d 0024640 i s c a r d : : 0024660 = \n \t \t \t \t l [ t o p ] 254 I 0024700 n p u t L o c [ ] ; - - k e 0024720 e p t h e p a r s e r e r 0024740 r o r r e c o v e r y h a p 0024760 p y \n \t \t \t \t \n 0025000 0025020 1 6 = > - - r u l e g r 0025040 o u p : : = s y m 0025060 b o l " : : = " \n \t \t \t \t { S 0025100 e t R u l e C h a i n [ p r i x 0025120 , F A L S E ] ; L h s S y m 0025140 b o l [ v [ t o p ] . s ] } ; \n 0025160 \t \t \t \t \n 0025200 1 7 0025220 = > - - r u l e g r o u p 0025240 : : = p r e f i x 0025260 s y m b o l " : : = " \n \t \t 0025300 \t \t L h s S y m b o l [ v [ t o 0025320 p + 1 ] . s ] ; \n \t \t \t \t \n 0025340 0025360 1 8 = > - - 0025400 r u l e g r o u p : 0025420 : = r u l e g r o u p s y m 0025440 b o l " : : = " \n \t \t \t \t { S 0025460 e t R u l e C h a i n [ p r i x 0025500 , F A L S E ] ; L h s S y m 0025520 b o l [ v [ t o p + 1 ] . s ] } 0025540 ; \n \t \t \t \t \n 0025560 1 0025600 9 = > - - r u l e g r o 0025620 u p : : = r u l e 0025640 g r o u p p r e f i x s y m 0025660 b o l " : : = " \n \t \t \t \t L h 0025700 s S y m b o l [ v [ t o p + 2 ] 0025720 . s ] ; \n \t \t \t \t \n 0025740 0025760 2 0 = > - - r u l e 0026000 g r o u p : : = r 0026020 u l e g r o u p ' | \n \t \t \t \t 0026040 { S e t R u l e C h a i n [ p r 0026060 i x , F A L S E ] ; P r o d 0026100 H e a d e r [ F A L S E ] } ; \n 0026120 \t \t \t \t \n 0026140 2 1 0026160 = > - - r u l e g r o u p 0026200 : : = r u l e g r 0026220 o u p p r e f i x ' | \n \t \t 0026240 \t \t P r o d H e a d e r [ F A L 0026260 S E ] ; \n \t \t \t \t \n 0026300 0026320 2 2 = > - - r u l e 0026340 g r o u p : : = r 0026360 u l e g r o u p s y m b o l \n 0026400 \t \t \t \t { t e m p : C A R D I 0026420 N A L 254 0 ; \n \t \t \t \t \t i 0026440 254 v [ t o p + 1 ] . s ; s y 0026460 m I n f o [ i ] . u s e d 254 0026500 T R U E ; \n \t \t \t \t \t I F i = 0026520 e o f M a r k O R i = e o f 0026540 M a r k + 1 T H E N E r r o 0026560 r [ c h e c k + 9 , 0 , I n p u 0026600 t L o c [ ] ] ; - - g o a l 0026620 s y m b o l s \n \t \t \t \t \t I F 0026640 f l a g s [ e c h o ] T H E N 0026660 { \n \t \t \t \t \t \t I F l i n e 0026700 W i d t h < s y m I n f o [ i ] 0026720 . l e n g t h T H E N { \n \t 0026740 \t \t \t \t \t \t o u t e o l [ 1 ] ; 0026760 o u t c h a r [ ' , t o k e 0027000 n S i z e + 1 8 ] ; l i n e W 0027020 i d t h 254 o u t b u f L i m 0027040 - t o k e n S i z e - 1 8 } 0027060 ; \n \t \t \t \t \t \t I F ( l i n e 0027100 W i d t h 254 ( l i n e W i d 0027120 t h - O u t T o k e n [ i ] - 1 0027140 ) ) > 0 T H E N o u t c 0027160 h a r [ ' , 1 ] } ; \n \t \t \t 0027200 \t \t I F c h i x = r h s C h a 0027220 r . l e n g t h T H E N \n \t \t 0027240 \t \t \t \t r h s C h a r 254 E x 0027260 p a n d R h s C h a r [ r h s C 0027300 h a r , r h s C h a r . l e n 0027320 g t h / 8 ] ; \n \t \t \t \t \t r h s 0027340 C h a r [ c h i x ] 254 i ; c h 0027360 i x 254 c h i x + 1 ; \n \t \t 0027400 \t \t \t I F p r o d I n f o [ p 0027420 r i x - 1 ] . c o u n t = r 0027440 h s L i m T H E N { \n \t \t \t 0027460 \t \t \t p r o d I n f o [ p r i x 0027500 - 1 ] . c o u n t 254 1 ; r 0027520 h s F l a g 254 T R U E } ; \n 0027540 \t \t \t \t \t t e m p 254 p r o d 0027560 I n f o [ p r i x - 1 ] . c o u 0027600 n t ; \n \t \t \t \t \t p r o d I n f 0027620 o [ p r i x - 1 ] . c o u n t 0027640 254 t e m p + 1 ; \n \t \t \t \t \t } 0027660 ; \n \t \t \t \t \t \n 0027700 0027720 2 3 = > - - p r e f i x 0027740 : : = n u m 0027760 \n \t \t \t \t S e t R u l e C h a i 0030000 n [ v [ t o p ] . s , F A L S 0030020 E ] ; \n \t \t \t \t \n 0030040 0030060 2 4 = > - - p r e f i 0030100 x : : = n u 0030120 m n u m \n \t \t \t \t - - p r e 0030140 f i x : : = 0030160 ' ? n u m \n \t \t \t \t S e t R u 0030200 l e C h a i n [ v [ t o p + 1 ] 0030220 . s , F A L S E ] ; \n \t \t \t \t 0030240 \n 0030260 2 5 = > 0030300 - - p r e f i x 0030320 : : = d i s c a r d ' C 0030340 \n \t \t \t \t S e t R u l e C h a i 0030360 n [ p r i x , T R U E ] ; \n \t 0030400 \t \t \t \n 0030420 2 6 0030440 = > - - p r e f i x 0030460 : : = d i s c a r d 0030500 ' C n u m \n \t \t \t \t S e t R 0030520 u l e C h a i n [ v [ t o p + 2 0030540 ] . s , T R U E ] ; \n \t \t \t \t 0030560 \n 0030600 2 7 = > 0030620 - - p r e f i x 0030640 : : = ' ? \n \t \t \t \t S e t 0030660 R u l e C h a i n [ p r i x , 0030700 F A L S E ] ; \n \t \t \t \t \n 0030720 0030740 2 8 = > - - d 0030760 i r e c t i v e s : : 0031000 = d i r e c t i v e s d i r 0031020 e c t i v e \n \t \t \t \t - - d i 0031040 s c a r d : : = 0031060 n u m \n \t \t \t \t - - d i s c 0031100 a r d : : = ' 0031120 ? \n \t \t \t \t - - r u l e s e t 0031140 : : = C r u l 0031160 e g r o u p \n \t \t \t \t - - r u 0031200 l e s e t : : = 0031220 g o a l r u l e r u l e g r 0031240 o u p \n \t \t \t \t - - g o a l r 0031260 u l e : : = " G 0031300 O A L " " : : = " s y m b o 0031320 l s y m b o l \n \t \t \t \t N U L 0031340 L ; \n \t \t \t \t E N D C A S E = 0031360 > E R R O R ; \n \t \t \t \t E N D 0031400 L O O P ; \n \t \t \t } ; \n \t \t \t \t 0031420 \n - - t h e f o l l o w i n 0031440 g p r o c e d u r e i s c 0031460 a l l e d f r o m t h e S 0031500 c a n R e s e t i f n o e 0031520 r r o r s \n \n \t F i n i s h I n 0031540 p u t : P R O C = { \n \t \t 0031560 e m p t y F l a g : B O O L 0031600 254 T R U E ; \n \t \t j , k : 0031620 C A R D I N A L ; \n \t \t - - c 0031640 o m p u t e n o n t e r m i n 0031660 a l s d e r i v i n g e m p 0031700 t y \n \t \t W H I L E e m p t y 0031720 F l a g D O \n \t \t \t e m p t y 0031740 F l a g 254 F A L S E ; \n \t \t 0031760 \t F O R i : C A R D I N A L 0032000 I N [ 1 . . t o t a l T o k 0032020 e n s - e o f M a r k ] D O 0032040 - - e a c h n o n t e r m 0032060 i n a l \n \t \t \t \t I F t o k e 0032100 n I n f o [ i ] . e m p t y T 0032120 H E N L O O P ; - - w h i 0032140 c h d o e s n o t d e r i 0032160 v e e m p t y \n \t \t \t \t j 254 0032200 t o k e n I n f o [ i ] . i n 0032220 d e x ; \n \t \t \t \t F O R p r i 0032240 x : C A R D I N A L I N [ 0032260 j . . j + t o k e n I n f o [ i 0032300 ] . c o u n t ) D O \n \t \t \t \t 0032320 \t - - e a c h p r o d u c t 0032340 i o n o f t h e n o n t e 0032360 r m i n a l \n \t \t \t \t \t k 254 0032400 p r o d I n f o [ p r i x ] . i 0032420 n d e x ; \n \t \t \t \t \t F O R c 0032440 h i x : C A R D I N A L I N 0032460 [ k . . k + p r o d I n f o [ 0032500 p r i x ] . c o u n t ) D O 0032520 - - e a c h r h s c h 0032540 a r a c t e r \n \t \t \t \t \t \t I F 0032560 r h s C h a r [ c h i x ] < = 0032600 e o f M a r k O R ~ t o k e 0032620 n I n f o [ r h s C h a r [ c h 0032640 i x ] - e o f M a r k ] . e m p 0032660 t y T H E N E X I T ; \n \t \t 0032700 \t \t \t \t R E P E A T F I N I S 0032720 H E D = > { t o k e n I n f 0032740 o [ i ] . e m p t y 254 e m p 0032760 t y F l a g 254 T R U E ; E 0033000 X I T } ; \n \t \t \t \t \t \t E N D L 0033020 O O P \n \t \t \t \t \t E N D L O O P 0033040 \n \t \t \t \t E N D L O O P \n \t \t \t 0033060 E N D L O O P ; \n \t \t } ; \n \t \t 0033100 \t \n \t \t - - t h e f o l l o 0033120 w i n g p r o c e d u r e o 0033140 u t p u t s t h e d a t a 0033160 s t r u c t u r e c o n t e n 0033200 t s i n t h e t a b l e s 0033220 : \n \t \t - - P R O D U C T I O 0033240 N I N F O 0033260 T O K E N I N F O 0033300 S Y M I N F O \n \t 0033320 \t - - n u m c o u n t r u 0033340 l e c h a i n l h s i n d 0033360 e x c o u n t e m p t y 0033400 i n d e x l i n k u s 0033420 e d l e n g t h s y m b 0033440 o l \n \t \t - - 4 1 3 0033460 5 1 4 0033500 5 2 3 1 0033520 5 2 4 0033540 1 3 1 . 0033560 . . \n \t \t \n \t C h e c k O u t : 0033600 P U B L I C P R O C = { 0033620 \n \t \t I F f l a g s [ i d s ] 0033640 T H E N { \n \t \t \t s e t e r 0033660 r s t r e a m [ ] ; o u t e o 0033700 l [ 1 ] ; \n \t \t \t o u t s t r i 0033720 n g [ " P R O D U 0033740 C T I O N I N F O T O 0033760 K E N I N F O S Y M I N 0034000 F O " ] ; \n \t \t \t F O R i : 0034020 C A R D I N A L I N [ 0 . . 0034040 M A X [ n u m P r o d , t o t a 0034060 l T o k e n s ] ] D O \n \t \t \t 0034100 \t o u t e o l [ 1 ] ; o u t n 0034120 u m [ i , 4 ] ; o u t c h a r 0034140 [ ' , 1 ] ; \n \t \t \t \t I F i 0034160 > n u m P r o d T H E N o u 0034200 t c h a r [ ' , 2 0 ] \n \t \t \t 0034220 \t E L S E { \n \t \t \t \t \t o u t 0034240 n u m [ p r o d I n f o [ i ] . 0034260 c o u n t , 3 ] ; o u t n u m 0034300 [ p r o d I n f o [ i ] . r u l 0034320 e , 5 ] ; \n \t \t \t \t \t o u t c h 0034340 a r [ I F p r o d I n f o [ i 0034360 ] . c h a i n T H E N ' C 0034400 E L S E ' , 1 ] ; \n \t \t \t 0034420 \t \t o u t n u m [ p r o d I n f 0034440 o [ i ] . l h s , 4 ] ; o u t 0034460 n u m [ p r o d I n f o [ i ] . 0034500 i n d e x , 5 ] ; o u t c h a 0034520 r [ ' , 2 ] } ; \n \t \t \t \t I F 0034540 i I N ( 0 . . t o t a l T 0034560 o k e n s ] T H E N { \n \t \t 0034600 \t \t \t I F i < = e o f M a r k 0034620 T H E N o u t c h a r [ ' 0034640 , 1 1 ] E L S E { \n \t \t \t \t 0034660 \t \t o u t n u m [ t o k e n I n 0034700 f o [ i - e o f M a r k ] . c o 0034720 u n t , 3 ] ; \n \t \t \t \t \t \t o u 0034740 t c h a r [ I F t o k e n I n 0034760 f o [ i - e o f M a r k ] . e m 0035000 p t y T H E N ' E E L S E 0035020 ' , 1 ] ; \n \t \t \t \t \t \t o u 0035040 t n u m [ t o k e n I n f o [ i 0035060 - e o f M a r k ] . i n d e x , 0035100 5 ] ; o u t c h a r [ ' , 2 0035120 ] } ; \n \t \t \t \t \t o u t n u m [ 0035140 s y m I n f o [ i ] . l i n k , 0035160 4 ] ; o u t c h a r [ I F s 0035200 y m I n f o [ i ] . u s e d T 0035220 H E N ' U E L S E ' , 1 0035240 ] ; \n \t \t \t \t \t o u t n u m [ s 0035260 y m I n f o [ i ] . l e n g t h 0035300 , 3 ] ; o u t c h a r [ ' , 0035320 1 ] ; [ ] 254 O u t T o k e 0035340 n [ i ] } \n \t \t \t \t E N D L O O 0035360 P ; \n \t \t \t o u t e o l [ 1 ] ; 0035400 o u t s t r i n g [ " R H S C 0035420 H A R " ] ; l i n e W i d t h 0035440 254 o u t b u f L i m ; \n \t \t 0035460 \t F O R i : C A R D I N A L 0035500 I N [ 0 . . n u m R h s C h 0035520 a r s ] D O \n \t \t \t \t l i n e 0035540 W i d t h 254 l i n e W i d t 0035560 h + t o k e n S i z e + 1 ; \n \t 0035600 \t \t \t I F l i n e W i d t h 0035620 > o u t b u f L i m T H E N 0035640 { o u t e o l [ 1 ] ; o u t 0035660 n u m [ i , 4 ] ; l i n e W i 0035700 d t h 254 4 } ; \n \t \t \t \t o u 0035720 t c h a r [ ' , 1 ] ; [ ] 0035740 254 O u t T o k e n [ r h s C h 0035760 a r [ i ] ] ; \n \t \t \t \t E N D L 0036000 O O P ; \n \t \t \t o u t e o l [ 1 0036020 ] ; r e s e t o u t s t r e a 0036040 m [ ] ; \n \t \t \t } ; \n \t \t } ; \n 0036060 \t \t \t \n \t \t \t \n \t - - e r r o 0036100 r r e c o v e r y \n \t \n \t \t T 0036120 o k e n V a l u e : P U B L I 0036140 C P R O C [ s : T S y m b 0036160 o l ] R E T U R N S [ N P G 0036200 S 1 . V a l u e ] = { \n \t \t 0036220 \t R E T U R N [ N P G S 1 . n 0036240 u l l V a l u e ] ; \n \t \t \t } ; 0036260 \n \t \t \n - - S c a n n 0036300 e r : t e x t i n p u t a 0036320 n d e r r o r r o u t i n e 0036340 s \n \n \t - - t a b l e i n s 0036360 t a l l a t i o n \n \t \n \t \t h a 0036400 s h T a b : H a s h T a b l e 0036420 R e f ; \n \t \t s c a n T a b : 0036440 S c a n T a b l e R e f ; \n \t \t 0036460 v o c a b : V o c a b u l a r 0036500 y R e f ; \n \t \t v o c a b I n d 0036520 e x : I n d e x T a b l e R e 0036540 f ; \n \t \t \n \t \t I n s t a l l S 0036560 c a n T a b l e : P U B L I C 0036600 P R O C = { \n \t \t \t h a s 0036620 h T a b 254 N P G S P a r s e 0036640 T a b l e . I n i t H a s h T a 0036660 b l e [ ] ; \n \t \t \t s c a n T a 0036700 b 254 N P G S P a r s e T a b 0036720 l e . I n i t S c a n T a b l e 0036740 [ ] ; \n \t \t \t v o c a b 254 N 0036760 P G S P a r s e T a b l e . I n 0037000 i t V o c a b u l a r y [ ] ; \n 0037020 \t \t \t v o c a b I n d e x 254 0037040 N P G S P a r s e T a b l e . I 0037060 n i t I n d e x T a b l e [ ] ; 0037100 \n \t \t \t } ; \n \t \t \t \n - - s c 0037120 a n n e r s t a t e \n \n \t s t 0037140 r e a m : S T R E A M 254 N 0037160 I L ; - - t h e i n 0037200 p u t s t r e a m ( a d u 0037220 m m y f o r n o w ) \n \t L o 0037240 g g e r : P R O C [ P R O C 0037260 [ l o g : S T R E A M ] ] 0037300 254 N I L ; \n \t \n \t N U L : C 0037320 H A R = ' \ 0 0 0 ; \n \t \n \t 0037340 b u f f e r : R E F T E X T 0037360 254 N I L ; - - t o 0037400 k e n a s s e m b l y a r e 0037420 a \n \t \n \t n T o k e n s : C A 0037440 R D I N A L 254 0 ; 0037460 - - t o k e n c o u n t \n 0037500 \t n E r r o r s : C A R D I N 0037520 A L ; - - l e x i 0037540 c a l e r r o r s \n \t \n \t c h 0037560 a r : C H A R ; - - c u 0037600 r r e n t ( m o s t r e c e 0037620 n t l y s c a n n e d ) c h 0037640 a r a c t e r \n \t t I : C A R 0037660 D I N A L 254 0 ; - - i 0037700 t s ( s t r e a m ) i n d e 0037720 x \n \t e o f : B O O L ; \n \t \n 0037740 \t N e x t C h a r : P R O C 0037760 = { - - a l s o e x p 0040000 a n d e d i n l i n e w i t 0040020 h i n A t o m \n \t \t t I 254 0040040 t I + 1 ; [ c h a r , 0040060 e o f ] 254 i n c h a r [ ] } 0040100 ; \n \t \t \n \t \t \n \t N e x t T o k 0040120 e n : P U B L I C P R O C 0040140 R E T U R N S [ t : T o k e n 0040160 ] = { \n \t \t - - O P E N t 0040200 ; \n \t \t \n \t \t L o c a t e T o k 0040220 e n : P R O C [ s t r i n g : 0040240 R E F T E X T ] R E T U R 0040260 N S [ C A R D I N A L ] = { 0040300 \n \t \t \t - - r e t u r n s t 0040320 o k e n c o r r e s p o n d i 0040340 n g t o s t r i n g \n \t \t \t 0040360 i , j : C A R D I N A L ; \n 0040400 \t \t \t j 254 h a s h C h a i n 0040420 [ ( s t r i n g . l e n g t h * 0040440 2 5 6 + ( s t r i n g [ 0 ] . O 0040460 R D ) ) M O D ( s y m T a b 0040500 S i z e / 4 ) + 1 ] ; \n \t \t 0040520 \t W H I L E j # 0 D O \n 0040540 \t \t \t \t I F s y m I n f o [ j 0040560 ] . l e n g t h = s t r i n 0040600 g . l e n g t h T H E N { \n 0040620 \t \t \t \t \t i 254 j * t o k e n 0040640 S i z e ; \n \t \t \t \t \t F O R k 0040660 : C A R D I N A L I N [ 0 0040700 . . s t r i n g . l e n g t h ) 0040720 D O \n \t \t \t \t \t \t I F s y m 0040740 T a b [ i + k ] # s t r i n g [ 0040760 k ] T H E N E X I T \n \t \t \t 0041000 \t \t \t R E P E A T F I N I S H 0041020 E D = > R E T U R N [ j ] 0041040 \n \t \t \t \t \t \t E N D L O O P ; \n 0041060 \t \t \t \t \t } ; \n \t \t \t \t j 254 0041100 s y m I n f o [ j ] . l i n k ; 0041120 \n \t \t \t \t E N D L O O P ; \n \t \t 0041140 \t R E T U R N [ 0 ] ; \n \t \t \t 0041160 } ; \n \t \t \t \n \t \t T o k e n T o 0041200 S y m T a b : P R O C [ s t r 0041220 i n g : R E F T E X T , t 0041240 o k e n : C A R D I N A L ] 0041260 = { \n \t \t \t i , j : C A R 0041300 D I N A L ; \n \t \t \t i 254 t o 0041320 k e n * t o k e n S i z e ; \n \t 0041340 \t \t F O R j I N [ 0 . . s 0041360 t r i n g . l e n g t h ) D O 0041400 s y m T a b [ i + j ] 254 s 0041420 t r i n g [ j ] E N D L O O P 0041440 ; \n \t \t \t s y m I n f o [ t o k 0041460 e n ] . l e n g t h 254 s t r 0041500 i n g . l e n g t h ; s y m I 0041520 n f o [ t o k e n ] . u s e d 0041540 254 F A L S E ; \n \t \t \t j 254 0041560 ( s t r i n g . l e n g t h * 2 0041600 5 6 + ( s t r i n g [ 0 ] . O R 0041620 D ) ) M O D ( s y m T a b S 0041640 i z e / 4 ) + 1 ; \n \t \t \t s 0041660 y m I n f o [ t o k e n ] . l i 0041700 n k 254 h a s h C h a i n [ j 0041720 ] ; \n \t \t \t h a s h C h a i n [ 0041740 j ] 254 t o k e n ; \n \t \t \t } 0041760 ; \n \t \t \t \n \t \t T o k e n O r I 0042000 d : P R O C [ s u b : C A R 0042020 D I N A L ] = { \n \t \t \t j , 0042040 s 1 , s 2 : C A R D I N A 0042060 L ; \n \t \t \t h : H a s h I n d 0042100 e x ; \n \t \t \t W H I L E c h a 0042120 r N O T I N [ N U L . . ' 0042140 ] D O \n \t \t \t \t I F s u b 0042160 < t o k e n S i z e T H E N 0042200 b u f f e r [ s u b ] 254 c h 0042220 a r ; \n \t \t \t \t s u b 254 s u 0042240 b + 1 ; N e x t C h a r [ 0042260 ] ; \n \t \t \t \t E N D L O O P ; \n 0042300 \t \t \t I F s u b > t o k e n S 0042320 i z e T H E N { \n \t \t \t \t b 0042340 u f f e r . l e n g t h 254 s 0042360 u b 254 t o k e n S i z e ; 0042400 E r r o r [ 1 , - 1 , t . i n d 0042420 e x ] } ; - - o v e r l e n g 0042440 t h \n \t \t \t I F s u b = 1 0042460 T H E N { \n \t \t \t \t t . c l 0042500 a s s 254 s c a n T a b [ b u 0042520 f f e r [ 0 ] ] ; \n \t \t \t \t I F 0042540 t . c l a s s # 0 T H E 0042560 N R E T U R N } ; \n \t \t \t j 0042600 254 b u f f e r [ 0 ] - 0 C 0042620 ; \n \t \t \t h 254 ( ( j * 1 2 8 0042640 - j ) + C A R D I N A L [ b 0042660 u f f e r [ s u b - 1 ] - 0 C ] 0042700 ) M O D H a s h I n d e x . 0042720 L A S T + 1 ; \n \t \t \t W H I 0042740 L E ( j 254 h a s h T a b [ 0042760 h ] . s y m b o l ) # 0 D 0043000 O \n \t \t \t \t I F v o c a b I 0043020 n d e x [ j ] - ( s 2 254 v o c a 0043040 b I n d e x [ j - 1 ] ) = s 0043060 u b T H E N \n \t \t \t \t \t F O R 0043100 s 1 I N [ 0 . . s u b 0043120 ) D O \n \t \t \t \t \t \t I F b 0043140 u f f e r [ s 1 ] # v o c a 0043160 b . t e x t [ s 2 ] T H E N 0043200 E X I T ; \n \t \t \t \t \t \t s 2 254 0043220 s 2 + 1 ; \n \t \t \t \t \t \t R E P 0043240 E A T F I N I S H E D = > 0043260 { \n \t \t \t \t \t \t \t I F j = 0043300 t o k e n T A B 3 T H E N i 0043320 n s e r t F l a g 254 2 E L 0043340 S E \n \t \t \t \t \t \t \t \t I F j 0043360 = t o k e n T A B 4 T H E N 0043400 i n s e r t F l a g 254 3 ; 0043420 \n \t \t \t \t \t \t \t I F j < = t o 0043440 k e n N U M T H E N E X I T 0043460 ; \n \t \t \t \t \t \t \t t . c l a s s 0043500 254 j ; R E T U R N } ; \n \t 0043520 \t \t \t \t \t E N D L O O P ; \n \t \t 0043540 \t \t I F ( h 254 h a s h T a 0043560 b [ h ] . l i n k ) = 0 T 0043600 H E N E X I T ; \n \t \t \t \t E N 0043620 D L O O P ; \n \t \t \t b u f f e r 0043640 . l e n g t h 254 s u b ; t 0043660 . c l a s s 254 t o k e n I D 0043700 ; t . v a l u e . s 254 L o 0043720 c a t e T o k e n [ b u f f e r 0043740 ] ; \n \t \t \t S E L E C T i n s 0043760 e r t F l a g F R O M \n \t \t \t 0044000 \t 1 = > \n \t \t \t \t - - r e a 0044020 d i n g t e r m i n a l s a 0044040 n d n o n t e r m i n a l s \n 0044060 \t \t \t \t \t I F t . v a l u e 0044100 # N P G S 1 . n u l l V a l u 0044120 e \n \t \t \t \t \t \t T H E N E r 0044140 r o r [ c h e c k + 2 , t . v a 0044160 l u e . s , t . i n d e x ] 0044200 - - m u l t i p l y d e f i 0044220 n e d s y m b o l \n \t \t \t \t \t 0044240 \t E L S E { \n \t \t \t \t \t \t \t 0044260 I F t o k e n = s y m T a b 0044300 . l e n g t h T H E N { \n \t 0044320 \t \t \t \t \t \t \t s y m T a b 254 0044340 E x p a n d S y m T a b [ s y 0044360 m T a b , s y m T a b . l e n 0044400 g t h / 1 6 ] ; \n \t \t \t \t \t \t \t 0044420 \t s y m T a b 254 E x p a n 0044440 d S y m T a b [ s y m T a b , 0044460 s y m I n f o . l e n g t h / 1 0044500 6 ] ; \n \t \t \t \t \t \t \t \t } ; \n 0044520 \t \t \t \t \t \t T o k e n T o S y m 0044540 T a b [ b u f f e r , t o k e 0044560 n ] ; \n \t \t \t \t \t \t t . v a l u 0044600 e . s 254 t o k e n ; - - [ 0044620 s c a l a r [ t o k e n ] ] ; \n 0044640 \t \t \t \t \t \t t o k e n 254 t o 0044660 k e n + 1 ; \n \t \t \t \t \t \t } ; \n 0044700 \t \t \t \t 2 = > \n \t \t \t \t - - 0044720 p r o c e s s i n g a l i a s 0044740 e s \n \t \t \t \t I F t . v a l u 0044760 e = N P G S 1 . n u l l V a l u 0045000 e T H E N { \n \t \t \t \t \t s 1 0045020 254 t o k e n * t o k e n S i 0045040 z e ; \n \t \t \t \t \t I F t o k e 0045060 n = s y m T a b . l e n g t h 0045100 T H E N \n \t \t \t \t \t \t s y m T a 0045120 b 254 E x p a n d S y m T a b 0045140 [ s y m T a b , s y m T a b . 0045160 l e n g t h / 1 6 ] ; \n \t \t \t \t 0045200 \t F O R j I N [ 0 . . b u 0045220 f f e r . l e n g t h ) D O 0045240 s y m T a b [ s 1 + j ] 254 b 0045260 u f f e r [ j ] E N D L O O P 0045300 ; \n \t \t \t \t \t t . v a l u e . s 0045320 254 t o k e n ; - - [ s c a 0045340 l a r [ t o k e n ] ] ; \n \t \t \t 0045360 \t \t t o k e n 254 t o k e n + 0045400 1 ; \n \t \t \t \t \t } ; \n \t \t \t \t 3 0045420 = > \n \t \t \t \t - - p r o c e 0045440 s s i n g p r o d u c t i o n 0045460 s \n \t \t \t \t \t I F t . v a l u 0045500 e = N P G S 1 . n u l l V a 0045520 l u e T H E N E r r o r [ c 0045540 h e c k + 3 , - 3 , t . i n d e 0045560 x ] ; - - s y m b o l n o 0045600 t d e f i n e d \n \t \t \t \t E N 0045620 D C A S E ; \n \t \t \t } ; \n \t \t \t 0045640 \t \n \t \t D O \n \t \t \t W H I L E 0045660 c h a r I N [ N U L . . ' 0045700 ] D O \n \t \t \t \t S E L E C T 0045720 c h a r F R O M \n \t \t \t \t \t 0045740 ' \ 0 3 2 - - ^ Z - - = > \n 0045760 \t \t \t \t \t \t U N T I L c h a r 0046000 = ' \ n D O \n \t \t \t \t \t \t 0046020 \t I F e o f T H E N G O 0046040 T O E n d F i l e ; \n \t \t \t \t 0046060 \t \t \t N e x t C h a r [ ] ; \n \t 0046100 \t \t \t \t \t E N D L O O P ; \n \t \t 0046120 \t \t \t E N D C A S E ; \n \t \t \t \t 0046140 I F e o f T H E N G O T 0046160 O E n d F i l e ; \n \t \t \t \t N 0046200 e x t C h a r [ ] ; \n \t \t \t \t E 0046220 N D L O O P ; \n \t \t \t t . i n d 0046240 e x 254 t I ; \n \t \t \t t . v a 0046260 l u e . s 254 N P G S 1 . n u 0046300 l l V a l u e ; \n \t \t \t \n \t \t \t 0046320 S E L E C T c h a r F R O M 0046340 \n \t \t \t \t I N [ ' 0 . . ' 9 ] 0046360 = > { \n \t \t \t \t \t v a l : 0046400 C A R D I N A L 254 0 ; \n \t \t 0046420 \t \t \t v a l i d : B O O L 254 0046440 T R U E ; \n \t \t \t \t \t m a x V 0046460 a l : C A R D I N A L = C 0046500 A R D I N A L . L A S T ; \n \t \t 0046520 \t \t \t W H I L E c h a r I N 0046540 [ ' 0 . . ' 9 ] D O \n \t \t \t 0046560 \t \t \t I F v a l i d T H E N 0046600 { \n \t \t \t \t \t \t \t d : [ 0 . 0046620 . 9 ] = c h a r . O R D - ' 0046640 0 . O R D ; \n \t \t \t \t \t \t \t v a 0046660 l i d 254 v a l < m a x V a l 0046700 / 1 0 O R ( v a l = m a x V 0046720 a l / 1 0 A N D d < = ( m a 0046740 x V a l M O D 1 0 ) ) ; \n \t 0046760 \t \t \t \t \t \t I F v a l i d T 0047000 H E N v a l 254 1 0 * v a l 0047020 + d } ; \n \t \t \t \t \t \t N e x t C 0047040 h a r [ ] ; \n \t \t \t \t \t \t E N D 0047060 L O O P ; \n \t \t \t \t \t I F ~ v 0047100 a l i d T H E N v a l 254 0047120 m a x V a l ; \n \t \t \t \t \t t . c 0047140 l a s s 254 t o k e n N U M ; 0047160 t . v a l u e . s 254 v a l 0047200 ; G O T O G o t N e x t } 0047220 ; - - [ s c a l a r [ v a l ] 0047240 ] ; G O T O G o t N e x t 0047260 } ; \n \t \t \t \t ' - = > { \n \t 0047300 \t \t \t \t N e x t C h a r [ ] ; \n 0047320 \t \t \t \t \t I F c h a r # ' 0047340 - T H E N { b u f f e r [ 0 0047360 ] 254 ' - ; T o k e n O r I 0047400 d [ 1 ] ; G O T O G o t N 0047420 e x t } ; \n \t \t \t \t \t c h a r 0047440 254 N U L ; \n \t \t \t \t \t D O \n \t 0047460 \t \t \t \t \t p C h a r : C H A R 0047500 = c h a r ; \n \t \t \t \t \t \t I 0047520 F e o f T H E N G O T O 0047540 E n d F i l e ; \n \t \t \t \t \t \t 0047560 N e x t C h a r [ ] ; \n \t \t \t \t 0047600 \t \t S E L E C T c h a r F R 0047620 O M \n \t \t \t \t \t \t \t ' - = > 0047640 I F p C h a r = ' - T 0047660 H E N E X I T ; \n \t \t \t \t \t \t 0047700 \t ' \ n = > E X I T ; \n \t 0047720 \t \t \t \t \t \t E N D C A S E ; \n \t 0047740 \t \t \t \t \t E N D L O O P ; \n \t \t 0047760 \t \t \t N e x t C h a r [ ] ; \n \t 0050000 \t \t \t \t } ; \n \t \t \t \t E N D C A 0050020 S E = > { T o k e n O r I d 0050040 [ 0 ] ; G O T O G o t N e 0050060 x t } ; \n \t \t \t R E P E A T \n \t 0050100 \t \t G o t N e x t = > N U 0050120 L L ; \n \t \t \t E n d F i l e = 0050140 > { t . c l a s s 254 e n d 0050160 M a r k e r ; t . i n d e x 0050200 254 t I ; t . v a l u e . s 0050220 254 N P G S 1 . n u l l V a l u 0050240 e } ; \n \t \t \t E N D L O O P ; \n 0050260 \t \t n T o k e n s 254 n T o k 0050300 e n s + 1 ; \n \t \t } ; \n \t \t 0050320 \n \t - - i n i t i a l i z a t 0050340 i o n / f i n a l i z a t i o n 0050360 \n \t \n \t \t S c a n I n i t : P 0050400 U B L I C P R O C [ s o u r 0050420 c e : S T R E A M , l o g g 0050440 e r : P R O C [ P R O C [ 0050460 l o g : S T R E A M ] ] ] = 0050500 { \n \t \t \t s t r e a m 254 s 0050520 o u r c e ; L o g g e r 254 0050540 l o g g e r ; \n \t \t \t b u f f 0050560 e r 254 N E W [ T E X T [ t o 0050600 k e n S i z e ] ] ; \n \t \t \t t I 0050620 254 0 ; \n \t \t \t [ c h a r , 0050640 e o f ] 254 i n c h a r [ ] ; 0050660 \n \t \t \t n T o k e n s 254 n E 0050700 r r o r s 254 0 ; \n \t \t \t b u 0050720 f f e r . l e n g t h 254 t o 0050740 k e n S i z e ; \n \t \t \t \n \t \t \t 0050760 - - i n i t i a l i s e s y 0051000 m b o l t a b l e \n \t \t \t t o 0051020 k e n 254 1 ; i n s e r t F 0051040 l a g 254 1 ; \n \t \t \t s y m T 0051060 a b 254 M a k e S y m T a b [ 0051100 ( s y m T a b S i z e + 1 ) * t 0051120 o k e n S i z e ] ; \n \t \t \t s y 0051140 m I n f o 254 M a k e S y m I 0051160 n f o [ s y m T a b S i z e + 1 0051200 ] ; \n \t \t \t F O R i : C A R 0051220 D I N A L I N [ 1 . . s y m 0051240 T a b S i z e ] D O \n \t \t \t \t 0051260 s y m I n f o [ i ] 254 [ l i 0051300 n k : 0 , l e n g t h : 0 , 0051320 u s e d : F A L S E ] ; \n \t \t \t 0051340 \t E N D L O O P ; \n \t \t \t h a s 0051360 h C h a i n 254 N E W [ H a s 0051400 h C h a i n A r r a y 254 A L 0051420 L [ 0 ] ] ; \n \t \t \t } ; \n \t \t \t 0051440 \n \t \t S c a n R e s e t : P U 0051460 B L I C P R O C = { \n \t \t 0051500 \t s t r e a m 254 N I L ; \n \t 0051520 \t \t L o g g e r 254 N I L ; \n 0051540 \t \t \t C h e c k O u t [ ] ; \n \t 0051560 \t \t b u f f e r 254 N I L ; \n 0051600 \t \t \t } ; \n \t \t \t \n \t \t S c a n 0051620 S t a t s : P U B L I C P R 0051640 O C R E T U R N S [ C A R D I 0051660 N A L , C A R D I N A L ] = 0051700 { \n \t \t \t R E T U R N [ n T 0051720 o k e n s , n E r r o r s ] ; 0051740 \n \t \t \t } ; \n \t \t \t \n \t - - e 0051760 r r o r h a n d l i n g \n \t \n 0052000 \t \t R e s e t S c a n I n d e x 0052020 : P U B L I C P R O C [ i n 0052040 d e x : C A R D I N A L ] R 0052060 E T U R N S [ s u c c e s s : 0052100 B O O L 254 T R U E ] = { \n \t 0052120 \t \t I F i n d e x = t I 0052140 T H E N R E T U R N ; \n \t \t \t 0052160 s e t i n d e x [ i n d e x ] ; 0052200 \n \t \t \t [ c h a r , e o f ] 0052220 254 i n c h a r [ ] ; \n \t \t \t t 0052240 I 254 i n d e x ; \n \t \t \t } ; 0052260 \n \t \t \t \n \t \t P r i n t T e x t 0052300 L i n e : P R O C [ o r i g i 0052320 n : C A R D I N A L ] R E T 0052340 U R N S [ s t a r t : C A R D 0052360 I N A L ] = { \n \t \t \t l i n 0052400 e I n d e x : C A R D I N A L 0052420 ; \n \t \t \t c h a r : C H A R ; 0052440 \n \t \t \t n : [ 1 . . 1 0 0 ] ; 0052460 \n \t \t \t s t a r t 254 l i n e 0052500 I n d e x 254 o r i g i n ; \n 0052520 \t \t \t F O R n I N [ 1 . . 0052540 1 0 0 ] U N T I L l i n e I 0052560 n d e x = 0 D O \n \t \t \t \t 0052600 l i n e I n d e x 254 l i n e 0052620 I n d e x - 1 ; \n \t \t \t \t s 0052640 e t i n d e x [ l i n e I n d e 0052660 x ] ; \n \t \t \t \t I F i n c h a 0052700 r [ ] . c = ' \ n T H E N 0052720 E X I T ; \n \t \t \t \t s t a r t 0052740 254 l i n e I n d e x ; \n \t \t 0052760 \t \t E N D L O O P ; \n \t \t \t s e 0053000 t i n d e x [ s t a r t ] ; \n \t 0053020 \t \t F O R n I N [ 1 . . 1 0053040 0 0 ] U N T I L ( [ c : c 0053060 h a r ] 254 i n c h a r [ ] ) 0053100 . e n d D O \n \t \t \t \t S E L E 0053120 C T c h a r F R O M \n \t \t \t 0053140 \t \t ' \ n , ' \ 0 3 2 - - ^ 0053160 Z - - = > E X I T ; \n \t \t \t 0053200 \t \t E N D C A S E = > o u t 0053220 c h a r [ c h a r , 1 ] ; \n \t \t 0053240 \t \t E N D L O O P ; \n \t \t \t o u 0053260 t e o l [ 1 ] ; \n \t \t \t } ; \n \t 0053300 \t \t \n \t \t E r r o r C o n t e x 0053320 t : P U B L I C P R O C [ 0053340 t o : S T R E A M , m e s s 0053360 a g e : R O P E , t o k e n 0053400 I n d e x : C A R D I N A L ] 0053420 = { \n \t \t \t s a v e I n d e 0053440 x : C A R D I N A L = g e 0053460 t i n d e x [ ] ; \n \t \t \t o r i 0053500 g i n : C A R D I N A L = 0053520 t o k e n I n d e x ; \n \t \t \t c 0053540 h a r : C H A R ; \n \t \t \t s e 0053560 t i n d e x [ P r i n t T e x t 0053600 L i n e [ o r i g i n ] ] ; \n \t 0053620 \t \t U N T I L g e t i n d e x 0053640 [ ] = o r i g i n O R ( 0053660 [ c : c h a r ] 254 i n c h 0053700 a r [ ] ) . e n d D O \n \t \t \t 0053720 \t o u t c h a r [ I F c h a r 0053740 = ' \ n T H E N ' \ n 0053760 E L S E ' , 1 ] ; \n \t \t \t \t 0054000 E N D L O O P ; \n \t \t \t o u t s 0054020 t r i n g [ " ^ [ " ] ; o u 0054040 t n u m [ t o k e n I n d e x , 0054060 1 ] ; \n \t \t \t o u t c h a r [ ' 0054100 ] , 1 ] ; o u t e o l [ 1 ] 0054120 ; o u t s t r i n g [ m e s 0054140 s a g e ] ; \n \t \t \t s e t i n d 0054160 e x [ s a v e I n d e x ] ; \n \t 0054200 \t \t } ; \n \t \t \t \n \t \t \t \n \t \t E 0054220 r r o r : P R O C [ c o d e 0054240 : C A R D I N A L , c o n t 0054260 r o l : I N T E G E R , i n 0054300 d e x : C A R D I N A L ] = 0054320 { \n \t \t \n \t \t \t I n n e r : 0054340 P R O C [ l o g : S T R E A 0054360 M - - a d u m m y f o r 0054400 n o w - - ] ~ { \n \t \t \t 0054420 \t E r r o r C o n t e x t [ l o 0054440 g , \n \t \t \t \t \t S E L E C T c 0054460 o d e F R O M \n \t \t \t \t \t \t 1 0054500 = > " W A R N I N G - 0054520 O v e r l e n g t h s y m b o 0054540 l ( i n c r e a s e T O K E 0054560 N S I Z E ? ) t r u n c a t e 0054600 d t o - " , \n \t \t \t \t \t \t 0054620 2 = > " W A R N I N G - 0054640 N o t a c h a i n p r o 0054660 d u c t i o n - " , \n \t \t \t 0054700 \t \t \t 3 = > " W A R N I N 0054720 G - U n u s e d ( U ) o r 0054740 u n d e f i n e d ( D ) s y m 0054760 b o l s ( r e f e r t o T 0055000 A B L E 1 a n d 2 ) " , \n \t 0055020 \t \t \t \t \t 4 = > " E R R O 0055040 R - N o n t e r m i n a l 0055060 w i t h t o o m a n y r u 0055100 l e s ( i n c r e a s e A L 0055120 T E R N A T E L I M ? ) - " 0055140 , \n \t \t \t \t \t \t 5 = > " E 0055160 R R O R - M u l t i p l e 0055200 d e f i n i t i o n s o f s 0055220 y m b o l - " , \n \t \t \t \t \t 0055240 \t 6 = > " E R R O R - 0055260 S y m b o l n o t d e f i n 0055300 e d - " , \n \t \t \t \t \t \t 7 0055320 = > " E R R O R - T e r 0055340 m i n a l p r e c e d e s : 0055360 : = - " , \n \t \t \t \t \t \t 8 0055400 = > " E R R O R - T o o 0055420 m a n y r h s s y m b o l 0055440 s i n p r o d u c t i o n 0055460 ( i n c r e a s e R H S L I M 0055500 ? ) - " , \n \t \t \t \t \t \t 9 0055520 = > " E R R O R - I n t 0055540 e r n a l f i e l d w i l l 0055560 o v e r f l o w - i n c r 0055600 e a s e P S S L I M " , \n \t \t 0055620 \t \t \t \t 1 0 = > " E R R O R 0055640 - A l i a s e d s y m b o 0055660 l n o t a t e r m i n a l 0055700 s y m b o l - " , \n \t \t \t 0055720 \t \t \t 1 1 = > " E R R O R 0055740 - A l i a s e s m u s t n 0055760 o t b e t e r m i n a l s 0056000 y m b o l s - " , \n \t \t \t \t 0056020 \t \t 1 2 = > " E R R O R - 0056040 G o a l s y m b o l s u s 0056060 e d i n r h s " , \n \t \t \t \t 0056100 \t \t 1 3 = > " E R R O R - 0056120 N u m b e r g r e a t e r 0056140 t h a n " , \n \t \t \t \t \t \t E N 0056160 D C A S E = > N I L , \n \t \t 0056200 \t \t \t i n d e x ] ; \n \t \t \t \t S 0056220 E L E C T - c o n t r o l F 0056240 R O M \n \t \t \t \t \t < 0 = > [ 0056260 ] 254 O u t T o k e n [ c o n 0056300 t r o l ] ; \n \t \t \t \t \t 0 = > 0056320 N U L L ; \n \t \t \t \t \t 1 = > 0056340 o u t s t r i n g [ R o p e . 0056360 F r o m R e f T e x t [ b u f f 0056400 e r ] ] ; \n \t \t \t \t \t 2 = > 0056420 o u t s t r i n g [ " s e e p 0056440 r e v i o u s m e s s a g e " 0056460 ] ; \n \t \t \t \t \t 3 = > { o u 0056500 t s t r i n g [ R o p e . F r o 0056520 m R e f T e x t [ b u f f e r ] 0056540 ] ; o u t s t r i n g [ " n 0056560 o t i n T A B L E 1 o r 0056600 2 " ] } ; \n \t \t \t \t \t 4 = > 0056620 N U L L ; - - n o t u s 0056640 e d \n \t \t \t \t \t 5 = > o u t 0056660 s t r i n g [ " M A X R U L E " 0056700 ] ; \n \t \t \t \t \t E N D C A S E 0056720 = > o u t n u m [ - c o n t r 0056740 o l - s p e c E r r o r C a s e 0056760 s , 5 ] ; \n \t \t \t \t o u t e o 0057000 l [ 2 ] ; \n \t \t \t \t } ; \n \t \t \t 0057020 \t \n \t \t \t L o g g e r [ I n n e 0057040 r ] ; \n \t \t \t I F c o d e > c 0057060 h e c k T H E N n E r r o r 0057100 s 254 n E r r o r s + 1 E L 0057120 S E w a r n i n g s L o g g e 0057140 d 254 T R U E ; \n \t \t \t } ; \n 0057160 \t \t \t \n \t \t } . \n \n 0057172