diff --git a/autotests/folding/test.rexx.fold b/autotests/folding/test.rexx.fold new file mode 100644 index 0000000..378f8b7 --- /dev/null +++ b/autotests/folding/test.rexx.fold @@ -0,0 +1,52 @@ +/* REXX */ +ASCB_PTR = C2X(STORAGE(D2X(X2D("224")),4)) +SAY X2B(ASCB_PTR) +/* COMMENTS */ +/****************************************************************** + END OF COMMENTS */ +SAY 'ENTER YOUR NAME' +PULL NAME +DO WHILE NAME \= 'QUIT' + SAY 'HELLO THERE' NAME + PULL NAME +END +X = OUTTRAP('LU.') +"LU" +X = OUTTRAP('OFF') +SAY 'THE NUMBER OF LINES:' LU.0 +DO I = 1 TO LU.0 + SAY LU.I /* SAYS THE OUTPUT FROM LU */ +END +SAY 'GOOD-BYE.' +IF DATE('D') \= "13" THEN DO + Y = TESTSELECT(15,'RAD') + SAY Y + SAY Y || " <-- TESTSELECT" +END +EXIT 1 +/* FUNCTIONS */ +TESTSELECT: PROCEDURE /* TESTING SELECT */ + PARSE ARG NUM CAR . + SELECT + WHEN NUM < 25 THEN + STATUS = "25%" + WHEN NUM < 50 THEN + DO + IF CAR = 'RAD' THEN + STATUS = 'DOPE' + ELSE + STATUS = 'SICK' + END + WHEN NUM < 200 THEN DO + NOP + END + WHEN NUM < 75 THEN + STATUS = 'SEVENTY FIVE' + OTHERWISE + IF CAR = 'RAD' THEN + STATUS = 'COOL' + STATUS = 'COOL' + ELSE + STATUS = 'RADICAL' +END +RETURN STATUS diff --git a/autotests/html/test.rexx.html b/autotests/html/test.rexx.html new file mode 100644 index 0000000..d528f24 --- /dev/null +++ b/autotests/html/test.rexx.html @@ -0,0 +1,59 @@ + + + +test.rexx + +
+/* REXX */                                                         
+ASCB_PTR = C2X(STORAGE(D2X(X2D("224")),4))                         
+SAY X2B(ASCB_PTR)                                                  
+/* COMMENTS */                                                     
+/******************************************************************
+   END OF COMMENTS */                                              
+SAY 'ENTER YOUR NAME'                                              
+PULL NAME                                                          
+DO WHILE NAME \= 'QUIT'                                            
+   SAY 'HELLO THERE' NAME                                          
+   PULL NAME                                                       
+END                                                                
+X = OUTTRAP('LU.')                                                 
+"LU"                                                               
+X = OUTTRAP('OFF')                                                 
+SAY 'THE NUMBER OF LINES:' LU.0                                    
+DO I = 1 TO LU.0                                                   
+  SAY LU.I /* SAYS THE OUTPUT FROM LU */                           
+END                                                                
+SAY 'GOOD-BYE.'                                                    
+IF DATE('D') \= "13" THEN DO                                       
+  Y = TESTSELECT(15,'RAD')                                         
+  SAY Y                                                            
+  SAY Y || " <-- TESTSELECT"               
+END                                        
+EXIT 1                                     
+/* FUNCTIONS */                            
+TESTSELECT: PROCEDURE /* TESTING SELECT */ 
+ PARSE ARG NUM CAR .                       
+ SELECT                                    
+   WHEN NUM < 25 THEN                      
+     STATUS = "25%"                        
+   WHEN NUM < 50 THEN                      
+     DO                                    
+       IF CAR = 'RAD' THEN                 
+          STATUS = 'DOPE'                  
+       ELSE                                
+          STATUS = 'SICK'                  
+     END                                   
+   WHEN NUM < 200 THEN DO                  
+     NOP                                   
+   END                                     
+   WHEN NUM < 75 THEN                      
+     STATUS = 'SEVENTY FIVE'               
+   OTHERWISE                               
+     IF CAR = 'RAD' THEN                   
+       STATUS = 'COOL'
+      STATUS = 'COOL'   
+    ELSE                
+      STATUS = 'RADICAL'
+END                     
+RETURN STATUS           
+
diff --git a/autotests/input/test.rexx b/autotests/input/test.rexx new file mode 100644 index 0000000..3e25125 --- /dev/null +++ b/autotests/input/test.rexx @@ -0,0 +1,52 @@ +/* REXX */ +ASCB_PTR = C2X(STORAGE(D2X(X2D("224")),4)) +SAY X2B(ASCB_PTR) +/* COMMENTS */ +/****************************************************************** + END OF COMMENTS */ +SAY 'ENTER YOUR NAME' +PULL NAME +DO WHILE NAME \= 'QUIT' + SAY 'HELLO THERE' NAME + PULL NAME +END +X = OUTTRAP('LU.') +"LU" +X = OUTTRAP('OFF') +SAY 'THE NUMBER OF LINES:' LU.0 +DO I = 1 TO LU.0 + SAY LU.I /* SAYS THE OUTPUT FROM LU */ +END +SAY 'GOOD-BYE.' +IF DATE('D') \= "13" THEN DO + Y = TESTSELECT(15,'RAD') + SAY Y + SAY Y || " <-- TESTSELECT" +END +EXIT 1 +/* FUNCTIONS */ +TESTSELECT: PROCEDURE /* TESTING SELECT */ + PARSE ARG NUM CAR . + SELECT + WHEN NUM < 25 THEN + STATUS = "25%" + WHEN NUM < 50 THEN + DO + IF CAR = 'RAD' THEN + STATUS = 'DOPE' + ELSE + STATUS = 'SICK' + END + WHEN NUM < 200 THEN DO + NOP + END + WHEN NUM < 75 THEN + STATUS = 'SEVENTY FIVE' + OTHERWISE + IF CAR = 'RAD' THEN + STATUS = 'COOL' + STATUS = 'COOL' + ELSE + STATUS = 'RADICAL' +END +RETURN STATUS diff --git a/autotests/reference/test.rexx.ref b/autotests/reference/test.rexx.ref new file mode 100644 index 0000000..6e69ce4 --- /dev/null +++ b/autotests/reference/test.rexx.ref @@ -0,0 +1,52 @@ +/* REXX */
+ASCB_PTR = C2X(STORAGE(D2X(X2D("224")),4))
+SAY X2B(ASCB_PTR)
+/* COMMENTS */
+/******************************************************************
+ END OF COMMENTS */
+SAY 'ENTER YOUR NAME'
+PULL NAME
+DO WHILE NAME \= 'QUIT'
+ SAY 'HELLO THERE' NAME
+ PULL NAME
+END
+X = OUTTRAP('LU.')
+"LU"
+X = OUTTRAP('OFF')
+SAY 'THE NUMBER OF LINES:' LU.0
+DO I = 1 TO LU.0
+ SAY LU.I /* SAYS THE OUTPUT FROM LU */
+END
+SAY 'GOOD-BYE.'
+IF DATE('D') \= "13" THEN DO
+ Y = TESTSELECT(15,'RAD')
+ SAY Y
+ SAY Y || " <-- TESTSELECT"
+END
+EXIT 1
+/* FUNCTIONS */
+TESTSELECT: PROCEDURE /* TESTING SELECT */
+ PARSE ARG NUM CAR .
+ SELECT
+ WHEN NUM < 25 THEN
+ STATUS = "25%"
+ WHEN NUM < 50 THEN
+ DO
+ IF CAR = 'RAD' THEN
+ STATUS = 'DOPE'
+ ELSE
+ STATUS = 'SICK'
+ END
+ WHEN NUM < 200 THEN DO
+ NOP
+ END
+ WHEN NUM < 75 THEN
+ STATUS = 'SEVENTY FIVE'
+ OTHERWISE
+ IF CAR = 'RAD' THEN
+ STATUS = 'COOL'
+ STATUS = 'COOL'
+ ELSE
+ STATUS = 'RADICAL'
+END
+RETURN STATUS
diff --git a/data/syntax/rexx.xml b/data/syntax/rexx.xml index 28c8062..a51eb3f 100644 --- a/data/syntax/rexx.xml +++ b/data/syntax/rexx.xml @@ -1,134 +1,199 @@ - + - - arg - drop - else - end - exit - forever - if - interpret - iterate - leave - nop - options - otherwise - pull - push - queue - return - say - select - syntax - then - - - abbrev - abs - address - bitand - bitor - bitxor - b2x - center - charin - charout - chars - c2d - c2x - compare - condition - copies - datatype - date - delstr - delword - digits - d2c - d2x - errortext - form - format - fuzz - insert - lastpos - left - linein - lineout - lines - max - min - overlay - pos - queued - random - reverse - right - sign - sourceline - space - stream - strip - substr - subword - symbol - time - trace - translate - trunc - value - verify - word - wordindex - wordlength - wordpos - words - xrange - x2b - x2c - x2d - + + ADDRESS + ARG + CALL + DROP + EXIT + INTERPRET + NOP + NUMERIC + OPTIONS + PARSE + PROCEDURE + PULL + PUSH + QUEUE + RETURN + SAY + SYNTAX + TRACE + UPPER + RC + RESULT + SIGL + + + VALUE + WITH + RESULT + DIGITS + SCIENTIFIC + ENGINEERING + FORM + FUZZ + ALL + COMMANDS + ERROR + FAILURE + Intermediates + LABELS + NORMAL + OFF + RESULTS + + + do + to + by + for + while + until + leave + iterate + forever + + + select + when + then + otherwise + do + if + else + end + + + ABBREV + ABS + ADDRESS + ARG + B2X + BITAND + BITOR + BITXOR + C2D + C2X + CHARS + CHARIN + CHARSIN + CENTER + CENTRE + COMPARE + CONDITION + COPIES + D2C + D2X + DATATYPE + DATE + DBCS + DELSTR + DELWORD + DIGITS + ERRORTEXT + EXTERNALS + FIND + FORM + FORMAT + FUZZ + GETMSG + INDEX + INSERT + JUSTIFY + LASTPOS + LEFT + LENGTH + LINEIN + LINEOUT + LINESIZE + LISTDSI + MAX + MIN + MSG + MVSVAR + OUTTRAP + OVERLAY + POS + PROMPT + QUEUED + RANDOM + REVERSE + RIGHT + SETLANG + SIGN + SOURCELINE + SPACE + STORAGE + STRIP + STREAM + SUBSTR + SUBWORD + SYMBOL + SYSCPUS + SYSDSN + SYSVAR + TIME + TRACE + TRANSLATE + TRUNC + USERID + VALUE + VERIFY + WORD + WORDINDEX + WORDLENGTH + WORDPOS + WORDS + X2B + X2C + X2D + XRANGE + - + + + + - + + - +