User talk:MichaelWodrich: Difference between revisions
Content added Content deleted
No edit summary |
|||
(One intermediate revision by the same user not shown) | |||
Line 1: | Line 1: | ||
=={{header|XProfan}}== |
=={{header|XProfan}}== |
||
* Language Category created |
|||
Delimiter in string "#" or ";" will be ignored. |
|||
* First entry in "Strip comments from a string" |
|||
<lang xprofan> |
|||
* strip_block_comments |
|||
Proc Min |
|||
Declare int PC, i, float e, t |
|||
PC = %PCount |
|||
e = @!(1) |
|||
If PC > 1 |
|||
For i, 2, PC |
|||
t = @!(i) |
|||
e = if( (e == 0.0) and (t == 0.0), -(-e - t), if(t < e, t, e) ) |
|||
EndFor |
|||
EndIf |
|||
Return e |
|||
EndProc |
|||
Proc Odd |
|||
Parameters int n |
|||
Return TestBit(n,0) |
|||
EndProc |
|||
Proc strip_comments |
|||
Parameters string s, delim |
|||
Declare int posi[] |
|||
Declare int i, min_p, p |
|||
min_p = $7FFFFFFF |
|||
For i, 1, Len(delim) |
|||
posi[ i ] = InStr( mid$(delim,i,1), s ) |
|||
Case posi[ i ] > 0 : min_p = Min( posi[ i ], min_p ) |
|||
EndFor |
|||
posi[ 0 ] = InStr( chr$(34), s ) |
|||
// if there is a string delimiter on the left side... |
|||
If (posi[0] > 0) and (posi[0] < min_p) |
|||
// ...and counting of delimiter is odd, then the sign is part of a string |
|||
If Odd( Len( Left$(s,min_p) ) - Len( translate$( Left$(s,min_p), Chr$(34), "" )) ) |
|||
p = posi[ 0 ] + 1 |
|||
min_p = $7FFFFFFF |
|||
Repeat |
|||
// closing quote |
|||
posi[ 0 ] = InStr( chr$(34), s, p ) |
|||
'Case posi[0] > 0 : posi[0] = posi[0] + p |
|||
p = posi[ 0 ] + 1 |
|||
// find new positions after that |
|||
For i, 1, Len(delim) |
|||
posi[ i ] = InStr( mid$(delim,i,1), s, p ) |
|||
Case posi[ i ] > 0 : min_p = Min( posi[ i ], min_p ) |
|||
EndFor |
|||
posi[ 0 ] = InStr( chr$(34), s, p ) |
|||
// if there is a string delimiter on the left side... |
|||
If (posi[0] > 0) and (posi[0] < min_p) |
|||
// ...and counting of delimiter is odd, then the sign is part of a string |
|||
If Odd( Len( Left$(s,min_p) ) - Len( translate$( Left$(s,min_p), Chr$(34), "" )) ) |
|||
p = posi[ 0 ] + 1 |
|||
min_p = $7FFFFFFF |
|||
// and again.... |
|||
CONTINUE |
|||
EndIf |
|||
EndIf |
|||
BREAK |
|||
Until min_p = 0 |
|||
EndIf |
|||
EndIf |
|||
Return Trim$( Left$( s, min_p - 1 ) ) |
|||
EndProc |
|||
cls |
|||
declare string s, t |
|||
s = " apples, pears # and bananas" |
|||
t = strip_comments( s, "#;" ) |
|||
Print s + "|\n-> [" + t + "]\n" |
|||
s = " apples, pears ; and bananas" |
|||
t = strip_comments( s, "#;" ) |
|||
Print s + "|\n-> [" + t + "]\n" |
|||
s = " apples, pears \t " |
|||
t = strip_comments( s, "#;" ) |
|||
Print s + "|\n-> [" + t + "]\n" |
|||
s = " " + chr$(34) + " #oh, my god " + chr$(34) + " apples, pears # and bananas" |
|||
t = strip_comments( s, "#;" ) |
|||
Print s + "|\n-> [" + t + "]\n" |
|||
waitkey |
|||
end</lang> |
|||
Output: |
|||
<pre> |
|||
[apples, pears] |
|||
[apples, pears] |
|||
[apples, pears] |
|||
[" #oh, my god " apples, pears] |
|||
</pre> |
Latest revision as of 00:28, 2 November 2020
XProfan
- Language Category created
- First entry in "Strip comments from a string"
- strip_block_comments