[Date Prev] | [Thread Prev] | [Thread Next] | [Date Next] -- [Date Index] | [Thread Index] | [List Home]
Subject: Pseudocode compacting
This was just an exercise I did to compact the pseudocode in XRI Resolution 2.0 WD11-ED06, section 12.6. By assuming the semantics of looping constructs in "modern procedural languages", I was able to save 13 lines. The new pseudocode is attached, and I'm listing the diff here: --- sel.old 2007-10-22 22:15:15.000000000 +0000 +++ sel.new 2007-10-22 22:34:30.000000000 +0000 @@ -9,19 +9,11 @@ NEXT SEP ELSE SET Positive.x=TRUE - NEXT SEL ENDIF ELSEIF match on this SEL is DEFAULT ;see 10.3.2 & 12.3.4 - IF Positive.x=TRUE ;see 12.3.5 - NEXT SEL - ELSEIF nodefault="x" ;see 10.3.2 - NEXT SEL - ELSE + IF Positive.x != TRUE AND nodefault != x ;see 12.3.5 SET Default.x=TRUE - NEXT SEL ENDIF - ELSEIF match on this SEL is NEGATIVE ;see 12.3.1 - NEXT SEL ENDIF ENDFOR IF Matched.x=FALSE ;see 12.3.3 @@ -42,10 +34,7 @@ ADD SEP TO DEFAULT SET ;see 12.4.4 ENDIF ENDFOR -IF SELECTED SET != EMPTY ;see 12.5.1 - RETURN SELECTED SET -ENDIF -IF DEFAULT SET != EMPTY ;see 12.5.2 +IF SELECTED SET = EMPTY ;see 12.5.1 FOR EACH SEP IN DEFAULT SET IF (Positive.Type=TRUE AND Positive.Path=TRUE) OR (Positive.Type=TRUE AND Positive.MediaType=TRUE) OR @@ -53,20 +42,18 @@ ADD SEP TO SELECTED SET ENDIF ENDFOR - IF SELECTED SET != EMPTY - RETURN SELECTED SET - ENDIF - FOR EACH SEP IN DEFAULT SET - IF Positive.Type=TRUE OR - Positive.Path=TRUE OR - Positive.MediaType=TRUE - ADD SEP TO SELECTED SET - ENDIF - ENDFOR - IF SELECTED SET != EMPTY - RETURN SELECTED SET - ELSE - RETURN DEFAULT SET + IF SELECTED SET = EMPTY + FOR EACH SEP IN DEFAULT SET + IF Positive.Type=TRUE OR + Positive.Path=TRUE OR + Positive.MediaType=TRUE + ADD SEP TO SELECTED SET + ENDIF + ENDFOR ENDIF ENDIF -RETURN EMPTY SET +IF SELECTED SET != EMPTY + RETURN SELECTED SET +ELSE + RETURN DEFAULT SET +ENDIF =wil
FOR EACH SEP CREATE set of SEL match flags SET all flags to FALSE FOR EACH SEL of category x (where x=Type, Path, or Mediatype) SET Matched.x=TRUE IF match on this SEL is POSITIVE IF select="true" ;see 12.4.2 ADD SEP TO SELECTED SET NEXT SEP ELSE SET Positive.x=TRUE ENDIF ELSEIF match on this SEL is DEFAULT ;see 10.3.2 & 12.3.4 IF Positive.x != TRUE AND nodefault != x ;see 12.3.5 SET Default.x=TRUE ENDIF ENDIF ENDFOR IF Matched.x=FALSE ;see 12.3.3 IF nodefault_x != TRUE ;see 10.3.2 SET Default.x=TRUE ENDIF ENDIF IF Positive.Type=TRUE AND Positive.Path=TRUE AND Positive.Mediatype=TRUE ;see 12.4.3 ADD SEP TO SELECTED SET NEXT SEP ELSEIF SELECTED SET != EMPTY ;see 12.5.1 NEXT SEP ELSEIF (Positive.Type=TRUE OR Default.Type=TRUE) AND (Positive.Path=TRUE OR Default.Path=TRUE) AND (Positive.MediaType=TRUE OR Default.MediaType=TRUE) ADD SEP TO DEFAULT SET ;see 12.4.4 ENDIF ENDFOR IF SELECTED SET = EMPTY ;see 12.5.1 FOR EACH SEP IN DEFAULT SET IF (Positive.Type=TRUE AND Positive.Path=TRUE) OR (Positive.Type=TRUE AND Positive.MediaType=TRUE) OR (Positive.Path=TRUE AND Positive.MediaType=TRUE) ADD SEP TO SELECTED SET ENDIF ENDFOR IF SELECTED SET = EMPTY FOR EACH SEP IN DEFAULT SET IF Positive.Type=TRUE OR Positive.Path=TRUE OR Positive.MediaType=TRUE ADD SEP TO SELECTED SET ENDIF ENDFOR ENDIF ENDIF IF SELECTED SET != EMPTY RETURN SELECTED SET ELSE RETURN DEFAULT SET ENDIF
[Date Prev] | [Thread Prev] | [Thread Next] | [Date Next] -- [Date Index] | [Thread Index] | [List Home]