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