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