Скрипт-ридер в Objective-c - PullRequest
       3

Скрипт-ридер в Objective-c

0 голосов
/ 29 октября 2011

Я пытаюсь создать простой язык разметки, и мне нужно мое приложение Cocoa, чтобы иметь возможность его читать.Я бы предпочел, чтобы этот код был написан на Objective-c, но я рад использовать любой другой язык.

Вот моя текущая проблема.Я использую этот код:

for (int character = 1; character < ([script length] - 1); character ++) {
    NSLog(@"%@", [[script substringToIndex:character] substringFromIndex:([[script substringToIndex:character] length] - 2)]);

К сожалению, если я пропущу через него строку [button], в консоли отладки это будет показано:сообщение об ошибке, но мне нужно знать, как читать сценарий и распознавать определенные теги, такие как [button].Кто-нибудь может дать мне ссылку на что-нибудь полезное на эту тему?

Ответы [ 2 ]

2 голосов
/ 29 октября 2011

Просто чтобы привести примеры:

NSString *str = @"[Button]";
NSUInteger i, len = [str length];

for (i = 1; i <= len; ++i)
    NSLog(@"%@", [str substringToIndex:i]);

for (i = 0; i < len; ++i)
    NSLog(@"%c", [str characterAtIndex:i]);

Выход:

[
[B
[Bu
[But
[Butt
[Butto
[Button
[Button]
[
B
u
t
t
o
n
]

И еще более интересный случай:

for (i = 0; i < len; ++i)
    NSLog([NSString stringWithFormat:@"%%%dc", i+1],
          [str characterAtIndex:i]);

Который производит:

[
 B
  u
   t
    t
     o
      n
       ]
2 голосов
/ 29 октября 2011

Все зависит от того, насколько сложным должен быть ваш язык сценариев, и насколько эффективным и надежным он должен быть.

В общем, если вам не нужен богатый синтаксис, вам лучше всего использовать XML или JSON для своего синтаксиса и просто применять свою семантику к одному из них.

В противном случае, синтаксический анализ - довольно большое и сложное поле в программировании, и вам следует немного изучить его, прежде чем погрузиться в него (есть десятки хороших ссылок, в Интернете и в книгах). За десятилетия своего опыта я написал около 20 «простых» парсеров, и могу засвидетельствовать, что это никогда не было так просто, как вы ожидаете.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...