Imports System
Imports uCalcSoftware
Public Module Program
   Public Sub Main()
      Dim uc As New uCalc()
      '// 1. Define the lexical rule.
      '// The regex matches '0x' followed by hex digits.
      '// The TokenType::TokenTransform tells the parser to pre-process this token.
      uc.ExpressionTokens.Add("0x[0-9a-fA-F]+", TokenType.TokenTransform)
      
      '// 2. Define the transformation rule.
      '// This captures the hex digits and replaces the whole token with a call to BaseConvert.
      uc.TokenTransformer.FromTo("{'0x'}{val:'[0-9a-fA-F]+'}", "BaseConvert('{val}', 16)")
      
      '// 3. Now, the new literal format can be used in expressions.
      Console.WriteLine(uc.Eval("0xFF + 0xA")) '// 255 + 10
      Console.WriteLine(uc.EvalStr("Hex(0x100)")) '// Hex(256)
   End Sub
End Module