Алгебраическая нотация с регулярным выражением


Я написал алгебраической нотации использовать для перемещений в игре и на данный момент я пишу код для парсинга информации из записи. Я делаю это с помощью регулярных выражений. Это закодировано в Haxe.

Например, две функции в парсере будет выглядеть так:

public function getMoveType(gameText:String):String
{
   var moveTypeRegEx:EReg = ~/MatchThis/;
   moveTypeRegEx.match(gameText);
   var moveType:String = moveTypeRegEx.matched(0); //this returns entire string that was matched.
   return moveType;
}

public function getPlayerName(gameText:String):String
{
    var playerNameRegEx:EReg = ~/MatchThis/;
    playerNameRegEx.match(gameText);
    var playerName:String = playerNameRegEx.matched(0);
    return playerName;
}
  1. Как это могло быть написано лучше, чтобы сделать его более читабельным и более организованной?
  2. Было бы лучше иметь GameRegExes файл класса, который содержит все регулярные выражения, мне нужно с функциями добытчика, чтобы эти регулярные выражения?

Пожалуйста, дайте мне знать, если я слишком расплывчато.



202
3
задан 10 октября 2011 в 12:10 Источник Поделиться
Комментарии
1 ответ

Использование регулярных выражений является деталью реализации.

Я думаю, что вы должны продолжать структурировать API в качестве функции высшего уровня ввода, такие как игра текстовая, и деструктурировать его в конечный продукт, что клиенты вашего API хотите.

Тем не менее, вы можете определить собственный помощник, который принимает регулярное выражение и выполняет работу сопоставления текста и извлечения группы 0. Затем каждый из ваших публичных функций делегирует большую часть работы, что просто предоставив ему соответствующие регулярному выражению, и, возможно, индекс группы, чтобы вернуться.

private function gameTextExtractor(gameText:String, regex:EReg):String
{
regex.match(gameText);
return regex.matched(0);
}

1
ответ дан 10 октября 2011 в 01:10 Источник Поделиться