@=~ ~p typesetter = texinfo ~p maximum_input_line_length = infinity ~O~~{ VISUAL view1(ROOT): TITLE "Visual regular expression"; /* Konstrukte zum Zusammensetzen */ BUTTON IMAGE "button-repetition" INFOTEXT "Repetition" INSERTS pRepetition; BUTTON IMAGE "button-alternatives" INFOTEXT "Alternatives" INSERTS pAlternative; BUTTON IMAGE "button-newAlternative" INFOTEXT "New alternative" INSERTS pAltPattern; BUTTON IMAGE "button-restriction" INFOTEXT "Restriction" INSERTS pRestriction; /* Grundlegende Muster */ BUTTON IMAGE "button-string" INFOTEXT "Sequence of characters" INSERTS pString; BUTTON IMAGE "button-range" INFOTEXT "Range of characters" INSERTS pCharInterval; /* Vordefinierte Muster */ BUTTON "ANYCHAR" INFOTEXT "Arbitrary character\n(inclusive 'newline')" INSERTS pAnyChar; BUTTON "TAB" INFOTEXT "Tabulator character" INSERTS pTab; BUTTON "NEWLINE" INFOTEXT "Newline character" INSERTS pNewline; /* BUTTON "WORD-START" INSERTS pWordStart; BUTTON "WORD-END" INSERTS pWordEnd; BUTTON "LINE-START" INSERTS pLineStart; BUTTON "LINE-END" INSERTS pLineEnd; */ END; ~} ~O~~{ extern char *charCodingHead(int selection); extern char *charCodingTail(int selection); ~} ~O~~{ char *charCodingHead(int selection) { if(selection == 0) return ""; return "#"; } char *charCodingTail(int selection) { switch(selection) { case 0: return ""; case 1: return " oct"; case 2: return ""; case 3: return " hex"; default: return ""; } } ~} ~O~~{ $/Visual/VisPattern.gnrc+instance=view1:inst $/Visual/StdDrawings.fw ~} ~O~~{ /* Konkatenation ============= */ SYMBOL PatternConcat INHERITS VP_SimpleList COMPUTE SYNT.VP_OptDirection=visEast; SYNT.VP_OptBaselineStyle = "-width 1"; SYNT.VP_OptMinWidth1=10; SYNT.VP_OptMinWidth2=10; SYNT.VP_OptElementDistance=10; SYNT.VP_OptAlignInWidth=VisAlignBuoy; SYNT.VP_OptFrameDrawing=ADDROF(BaseLineDrawing); END; SYMBOL _List_Pattern INHERITS VP_ListContext END; SYMBOL Pattern INHERITS VP_ListNode END; /* Zeichenkette ============ */ SYMBOL String INHERITS VP_TextTerminal COMPUTE SYNT.VP_OptText=THIS.persValue; SYNT.VP_OptFrameDrawing=ADDROF(StringFrameDrawing); END; /* Zeichen-Intervall ================= */ SYMBOL CharInterval INHERITS VP_TextTerminal COMPUTE SYNT.VP_OptText=GETVLSTRING(sprintf(VLStringBuffer,"[%s%s%s...%s%s%s]", charCodingHead(THIS.persLowerBoundCoding), VLCharPtr(THIS.persLowerBound), charCodingTail(THIS.persLowerBoundCoding), charCodingHead(THIS.persUpperBoundCoding), VLCharPtr(THIS.persUpperBound), charCodingTail(THIS.persUpperBoundCoding) )); SYNT.VP_OptFrameDrawing=ADDROF(SpecialFrameDrawing); END; /* Einschraenkung ============== */ SYMBOL Restriction INHERITS VP_Form COMPUTE SYNT.VP_OptDrawing=ADDROF(RestrictionDrawing); END; SYMBOL RestrictionPositive INHERITS VP_Container COMPUTE SYNT.VP_OblContainerName="Positive"; END; SYMBOL RestrictionNegative INHERITS VP_Container COMPUTE SYNT.VP_OblContainerName="Negative"; END; /* Wiederholung ============ */ SYMBOL Repetition INHERITS VP_Form COMPUTE SYNT.VP_OptDrawing=ADDROF(RepetitionDrawing); END; SYMBOL RepetitionBody INHERITS VP_Container COMPUTE SYNT.VP_OblContainerName="Body"; END; SYMBOL RepetitionRange INHERITS VP_ContainerSSS, VP_TextTerminal COMPUTE SYNT.VP_OblContainerName="Range"; SYNT.VP_OptText=GETVLSTRING(sprintf(VLStringBuffer,"%s...%s", VLCharPtr(THIS.persStart), VLCharPtr(THIS.persEnd))); SYNT.VP_OptFont="default"; SYNT.VP_OptFrameDrawing=ADDROF(RawFrameDrawing); END; /* Alternativen ============ */ SYMBOL Alternative INHERITS VP_SimpleList COMPUTE SYNT.VP_OptMinWidth1=20; SYNT.VP_OptElementDistance=10; SYNT.VP_OptAlignInLength=VisAlignScale; SYNT.VP_OptAlignInWidth=VisAlignScale; SYNT.VP_OptFrameDrawing=ADDROF(AlternativeDrawing); END; SYMBOL _List_AlternativePattern INHERITS VP_ListContext END; SYMBOL AlternativePattern INHERITS VP_ListNode END; /* Vordefinierte Muster ==================== */ SYMBOL PredefClass INHERITS VP_TextTerminal COMPUTE SYNT.VP_OptFrameDrawing=ADDROF(SpecialFrameDrawing); END; SYMBOL AnyChar INHERITS PredefClass COMPUTE SYNT.VP_OptText="ANYCHAR"; END; SYMBOL Newline INHERITS PredefClass COMPUTE SYNT.VP_OptText="NL"; END; SYMBOL Tab INHERITS PredefClass COMPUTE SYNT.VP_OptText="TAB"; END; SYMBOL WordStart INHERITS PredefClass COMPUTE SYNT.VP_OptText="<"; END; SYMBOL WordEnd INHERITS PredefClass COMPUTE SYNT.VP_OptText=">"; END; SYMBOL LineStart INHERITS PredefClass COMPUTE SYNT.VP_OptText="^"; END; SYMBOL LineEnd INHERITS PredefClass COMPUTE SYNT.VP_OptText="$"; END; ~}