Разбор текстового файла в SQLite, чтобы можно было запрашивать данные с помощью цели c? - PullRequest
0 голосов
/ 08 февраля 2012

Использование target-c Я хочу проанализировать различное количество текстовых файлов в базе данных SQLite, чтобы затем запросить эти данные.Текст будет в следующем формате:

PokerStars Hand #74875631942:  Hold'em No Limit ($0.50/$1.00 USD) - 2012/02/01 17:08:58 ET
Table 'Psyche II' 2-max Seat #2 is the button
Seat 1: demaredemare ($100 in chips) 
Seat 2: Bren Stokes ($100 in chips) 
Bren Stokes: posts small blind $0.50
demaredemare: posts big blind $1
*** HOLE CARDS ***
Dealt to Bren Stokes [Th 9d]
Bren Stokes: raises $2 to $3
demaredemare: folds 
Uncalled bet ($2) returned to Bren Stokes
Bren Stokes collected $2 from pot
Bren Stokes: doesn't show hand 
*** SUMMARY ***
Total pot $2 | Rake $0 
Seat 1: demaredemare (big blind) folded before Flop
Seat 2: Bren Stokes (button) (small blind) collected ($2)



PokerStars Hand #74875657847:  Hold'em No Limit ($0.50/$1.00 USD) - 2012/02/01 17:09:23 ET
Table 'Psyche II' 2-max Seat #1 is the button
Seat 1: demaredemare ($99 in chips) 
Seat 2: Bren Stokes ($101 in chips) 
demaredemare: posts small blind $0.50
Bren Stokes: posts big blind $1
*** HOLE CARDS ***
Dealt to Bren Stokes [9d Qs]
demaredemare: raises $1 to $2
Bren Stokes: calls $1
*** FLOP *** [Tc Ah 8c]
Bren Stokes: checks 
demaredemare: bets $2
Bren Stokes: calls $2
*** TURN *** [Tc Ah 8c] [4c]
Bren Stokes: checks 
demaredemare: checks 
*** RIVER *** [Tc Ah 8c 4c] [4s]
Bren Stokes: checks 
demaredemare: checks 
*** SHOW DOWN ***
Bren Stokes: shows [9d Qs] (a pair of Fours)
demaredemare: shows [3d Qh] (a pair of Fours)
Bren Stokes collected $3.82 from pot
demaredemare collected $3.82 from pot
*** SUMMARY ***
Total pot $8 | Rake $0.36 
Board [Tc Ah 8c 4c 4s]
Seat 1: demaredemare (button) (small blind) showed [3d Qh] and won ($3.82) with a pair of     Fours
Seat 2: Bren Stokes (big blind) showed [9d Qs] and won ($3.82) with a pair of Fours

Поскольку мне нужно «извлекать» различную информацию из каждой строки, я считаю, что для этого мне понадобится парсер?Однако я видел некоторый код, такой как: NSString stringWithContentsOfFile NSArray fileContents componentsSeparatedByString NSMutableDictionary NSScanner NSBundle ...... Как, по вашему мнению, лучше всего подойти и решить эту проблему?Ваша помощь очень ценится.

Любите свою работу!

1 Ответ

0 голосов
/ 09 февраля 2012

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

Что касается вопроса о том, какой генератор использовать, вы, вероятно, можете позволить себе немного выбирать. Если вы решите пойти по этому пути, важно создать грамматику для входной строки. Как только вы разработаете эту грамматику в каком-либо варианте BNF, вы сможете легко преобразовать ее в любой генератор, который вы выберете.

Если вы можете использовать немного C ++, вы можете использовать Boost.spirit. Чтобы разработать саму грамматику, вы можете просто использовать проверенный маршрут flex / bison, чтобы быстро приступить к работе.

...