Imports System
Imports uCalcSoftware
Public Module Program
   Public Sub Main()
      Dim uc As New uCalc()
      '// Practical: Basic Syntax Highlighter
      Dim t As New uCalc.Transformer()
      
      '// Define categories with integer tags
      Dim TAG_KEYWORD = 1
      Dim TAG_STRING = 2
      Dim TAG_COMMENT = 3
      
      '// Define rules and tag them
      t.Pattern("{ if | else | for | while }").SetTag(TAG_KEYWORD)
      t.Pattern("{@String}").SetTag(TAG_STRING)
      t.Pattern("// {text}").SetTag(TAG_COMMENT)
      
      t.Text = "for (i=0; i<10; i++) { s = ""hello""; // comment }"
      t.Find()
      
      For Each match In t.Matches
         Dim tag = match.Rule.Tag
         If tag = TAG_KEYWORD Then
            Console.WriteLine($"TAG_KEYWORD: {match.Text}")
            ElseIf tag = TAG_STRING Then
            Console.WriteLine($"TAG_STRING: {match.Text}")
            ElseIf tag = TAG_COMMENT Then
            Console.WriteLine($"TAG_COMMENT: {match.Text}")
         End If
      Next
   End Sub
End Module