::: if the first digit starts with + or - it fails
:::if the culture is not English it fails because of decimal character
:::if one write 1*+1 it fails
:::All that I solved by small modifications in Lexxer
'Lexxer tokenizes the input string for parsing Public Shared Function Lexxer(str As String) As Queue(Of [Object]) If str Is Nothing OrElse str.Length = 0 Then Throw New Exception("empty string") End If Dim Temp_queue As Queue(Of [Object]) = New Queue(Of Object)() Dim Temp_string As New StringBuilder(str) 'usedforsignednumbers.'If there were two operators in a row (eg, "1 * - 1"), 'thesecondminusisanegationsignDimTokensInARowAsInteger=1'it starts implicit with "=" sumbol 'dealwithdifferentculturesDimDecimalSeparatorAsString=_System.Globalization.CultureInfo.CurrentCulture.NumberFormat.NumberDecimalSeparator()
:::and
:::replace each "." by DecimalSeparator
:::And then change the signed number detection
'two tokens in a row and the second token being '-' or '+' means it a negative number'eg:"1 * - 1"meanstokens{"1","*","-1"}not{"1","*","-","1"}DimTemp_SymbAsObject=Symbols.[ADD]IfTokensInARow>=2Then_Temp_Symb=Temp_queue.ElementAt(Temp_queue.Count-1)IfTokensInARow>=2AndAlso_(Temp_Symb.Equals(Symbols.[SUB])OrElse_Temp_Symb.Equals(Symbols.[ADD]))ThenParseDigits=Temp_Symb.ToString&ParseDigits
If you would like to refer to this comment somewhere else in this project, copy and paste the following link:
::: if the first digit starts with + or - it fails
:::if the culture is not English it fails because of decimal character
:::if one write 1*+1 it fails
:::All that I solved by small modifications in Lexxer
:::and
:::replace each "." by DecimalSeparator
:::And then change the signed number detection