| |
|
|
p.specht
| |
|
| XProfan 11Computer: Gerät, daß es in Mikrosekunden erlaubt, 50.000 Fehler zu machen, zB 'daß' statt 'das'... | 04.07.2021 ▲ |
|
|
|
|
Sven Bader | Danke für die Vorlage! Ich habe es noch verfeinert, Klammern in Zeichenketten und Kommentaren werden ignoriert. Als Nebenprodukt werden so auch noch offene Zeichenketten als Fehler erkannt.
Proc BracketBalance
Parameters line$
Declare c$, u&, d&, str%
WhileLoop len(line$)
c$ = mid$(line$,&Loop,1)
case (c$ = "\q") : str% = If(str% = 0, 1, 0)
If (str% = 0)'nur wenn nicht in einer Zeichenkette
If (c$ = "'") AND (str% = 0)'bei Kommentar ist Schluss
break
EndIf
case (c$ = "(") : inc u&
case (c$ = ")") : inc d&
EndIf
EndWhile
'0 = ok, 1 = Klammern unausgewogen, 2 = Zeichenkette nicht gschlossen, 3 = beides kaputt
return (if(u& <> d&,1,0) + if(str% = 1, 2, 0))
EndProc
declare s1$, s2$, s3$, s4$
s1$ = "Das ist ein (\qguter\q) Test! 'mit Kommentar :-)"
s2$ = "Das ist ein (\qguter) Test! 'mit Kommentar :-)"
s3$ = "Das ist ein (\qguter\q Test! 'mit Kommentar :-)"
s4$ = "Das ist ein (guter) \qTest! 'mit Kommentar :-)"
print BracketBalance(s1$) + " " + s1$'0 = ok
print BracketBalance(s2$) + " " + s2$'3 = beides kaputt (Klammer nur weil zweite ausversehen in Zeichenkette)
print BracketBalance(s3$) + " " + s3$'1 = Klammern unausgewogen
print BracketBalance(s4$) + " " + s4$'2 = Zeichenkette nicht gschlossen
waitinput
end
|
|
|
| |
|
|