Получение лексем из pascal-кода

Пытаюсь сделать регулярное выражение для получения лексем из pascal-кода. Арифметические и логические операции, цифры, оператор присваивания находит, а как изменить его, чтобы находил и целые слова?

using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Text.RegularExpressions;
using System.Threading.Tasks;
 
namespace Compiller1
{
    class Program
    {
        static void Main(string[] args)
        {
 
            string pattern = @"[\d]+|[+-]+|[-.?!)(,:;=<>]+";
 
            Regex rg = new Regex(pattern);
 
            string tokens = "begin if x>0 then x:=1";
 
            MatchCollection matchedTokens = rg.Matches(tokens);
            for (int count = 0; count < matchedTokens.Count; count++)
                Console.WriteLine(matchedTokens[count].Value);
            Console.ReadLine();
        }
    }
}

Ответы (1 шт):

Автор решения: Qwertiy

Как-то так: https://regex101.com/r/iSuIzk/1

'[^']*'|#\d+|(?=[\d.])\d*\.?\d*|end\.|\w+|\(\*((?!\*\)).)*\*\)|[-+*\/:<>]=?|[,;()]
→ Ссылка