That's how I want or I guess
Code: Select all
Procedure Get(String$)
Protected Result, Index, Param1, Param2, Param3, Param1$
If ExamineRegularExpression(0, String$)
While NextRegularExpressionMatch(0)
Select RegularExpressionGroup(0, 1)
Case "a"
Result +5+ Get(RegularExpressionGroup(0, 2))
Case "b"
Result -3+ Get(RegularExpressionGroup(0, 2))
Case "c"
Result +20+ Get(RegularExpressionGroup(0, 2))
EndSelect
Wend
EndIf
ProcedureReturn Result
EndProcedure
If CreateRegularExpression(0, "(\w+)\((.*)\)")
Debug Get("c(b(a()))")
EndIf
And this, as you propose
normeusCode: Select all
Procedure Get(String$)
Protected Result, Index, Param1, Param2, Param3, Param1$
If ExamineRegularExpression(0, String$)
While NextRegularExpressionMatch(0)
Select RegularExpressionGroup(0, 1)
Case "a"
Result+5
If ExamineRegularExpression(1, RegularExpressionGroup(0, 2))
While NextRegularExpressionMatch(1)
Select RegularExpressionGroup(1, 1)
Case "a"
Result+5
Case "b"
Result-3
If ExamineRegularExpression(2, RegularExpressionGroup(1, 2))
While NextRegularExpressionMatch(2)
Select RegularExpressionGroup(2, 1)
Case "a"
Result+5
Case "b"
Result-3
Case "c"
Result+20
EndSelect
Wend
EndIf
Case "c"
Result+20
EndSelect
Wend
EndIf
Case "b"
Result-3
If ExamineRegularExpression(1, RegularExpressionGroup(0, 2))
While NextRegularExpressionMatch(1)
Select RegularExpressionGroup(1, 1)
Case "a"
Result+5
Case "b"
Result-3
If ExamineRegularExpression(2, RegularExpressionGroup(1, 2))
While NextRegularExpressionMatch(2)
Select RegularExpressionGroup(2, 1)
Case "a"
Result+5
Case "b"
Result-3
Case "c"
Result+20
EndSelect
Wend
EndIf
Case "c"
Result+20
EndSelect
Wend
EndIf
Case "c"
Result+20
If ExamineRegularExpression(1, RegularExpressionGroup(0, 2))
While NextRegularExpressionMatch(1)
Select RegularExpressionGroup(1, 1)
Case "a"
Result+5
Case "b"
Result-3
If ExamineRegularExpression(2, RegularExpressionGroup(1, 2))
While NextRegularExpressionMatch(2)
Select RegularExpressionGroup(2, 1)
Case "a"
Result+5
Case "b"
Result-3
Case "c"
Result+20
EndSelect
Wend
EndIf
Case "c"
Result+20
EndSelect
Wend
EndIf
EndSelect
Wend
EndIf
ProcedureReturn Result
EndProcedure
If CreateRegularExpression(0, "(\w+)\((.*)\)") And
CreateRegularExpression(1, "(\w+)\((.*)\)") And
CreateRegularExpression(2, "(\w+)\((.*)\)")
Debug Get("c(b(a()))")
EndIf
if the string is such "c(b(a()))" it works because there is one loop, and if the string is such "c(b(a())) c(b(a()))"?