Я работаю над проектом для моего университета, требуя, чтобы пойти, хотя прилично больших файлов (> 50МБ), и я использовал прогибается в основном переписать файл, состоящий из строки, такие какЯвляется ли flex-lexer идеальным (быстрым) конвертером для простого распознавания и замены регулярных выражений?
1 1:41 3:54 7:40 13:8
2 4:7 7:8 23:85
в
1 1 3 7 13
2 4 7 23
(в основном, превращая number_a:number_b
в number_a
, и печать вывод в файл при исполнении)
Мой вопрос, так как я пишу оставшуюся часть моей программы в C++: в том, что хороший исх lex, так как flex должен быть быстрым (f
в гибком состоянии для быстрого), или я просто ошибаюсь, и есть намного более простой и эффективный способ сделать это на C++?
Я довольно новичок в C++, поэтому у меня много C-кодирующих рефлексов и мало информации о всех доступных инструментах и их производительности.
Вот кусок кода я писал в гибком:
%{
#include<stdio.h>
unsigned int nb_doc = 1;//prend en compte le premier doc
unsigned int i;
%}
couple_entiers [0-9]+:[0-9]+
retour_chariot \n[0-9]+
autre .
%%
{couple_entiers} {i=0;
while(yytext[i] != ':'){
printf("%c",yytext[i]);
i++;
}
}
{retour_chariot} {nb_doC++; printf("%s",yytext);}
{autre} {printf("%s",yytext);}
%%
int main (void){
yylex();
printf("\n\n%d",nb_doc);
return 0;
}
Flex быстро. Но достаточно ли это? Есть множество вещей, которые вы могли бы сделать, чтобы попытаться ускорить свою программу. Кроме того, существует множество простых способов написания кода в чистом C++. Но вам нужно будет делать больше? Если вы напишете простую функцию «читать строку, испускаете каждый другой номер» в C++, она будет быстрой, но не «поймет» строки, и поэтому, если вам нужно добавить больше функциональности, у вас возникнут проблемы. Если вы сохраните свой гибкий код, вы можете легко сделать что-то со вторыми числами в парах. Что более вероятно? –
На самом деле, скорее всего, в этом случае я не буду нуждаться в дополнительных функциях, но просто поднимая точку, я понимаю, что это хорошо; и поскольку я знаю только о первой части проекта, я буду стараться держать ее в состоянии гибкости, просто чтобы все это было гибким. –
@AustinHastings на самом деле учитель просто добавил еще несколько вещей, например, создание случайных наборов «частей» моего файла и несколько других функций: ваш комментарий был просто золотым, спасибо снова! –