Получение лексем из 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+|\(\*((?!\*\)).)*\*\)|[-+*\/:<>]=?|[,;()]