Ejemplo n.º 1
0
void add_data_from_line(Memory& mem, string& line)
{
	regex regex_apostrophe("'");
	std::regex_replace(line, regex_apostrophe, "’");
	regex regex_word("([a-zA-záéíóúñÁÉÍÓÚÑ'’]+)");
	sregex_iterator find_word(line.begin(), line.end(), regex_word);
	for (sregex_iterator find_end; find_word != find_end; ++find_word) {
		string word_found = find_word->str();
		word_found = to_lower_case(word_found);
		update_word(mem.word_list, word_found);
	}
	vector<regex> regex_punc = {
		regex("\\."),
		regex(","),
		regex(";"),
		regex(":"),
		regex("!"),
		regex("\\?"),
		regex("(?:[-–—]\\s*){1,2}"),
		regex("…|(?:\\.\\s*){3}")
	};
	for (int i = 0; i < PUNC_NUM; ++i) {
		sregex_iterator find_punc(line.begin(), line.end(), regex_punc[i]);
		mem.punc_freq[i] += std::distance(find_punc, sregex_iterator());
	}
	regex regex_split_line("^([^.!?…]*[.!?…])?((?:[^.!?…]*[.!?…])*?)([^.!?…]*)$");
	std::sregex_token_iterator split_line_prev(line.begin(), line.end(), regex_split_line, 1);
	std::sregex_token_iterator split_line_cont(line.begin(), line.end(), regex_split_line, 2);
	std::sregex_token_iterator split_line_xtra(line.begin(), line.end(), regex_split_line, 3);
	string sentence_prev = *split_line_prev;
	int sentence_prev_len = get_word_count(sentence_prev);
	if (sentence_prev_len > 0) {
		sentence_prev_len += mem.sentence_carry;
		mem.sentence_len.push_back(sentence_prev_len);
		mem.sentence_carry = 0;
	}
	string sentence_cont = *split_line_cont;
	regex regex_split_sentence("([^\\.!?…]*)[\\.!?…]");
	sregex_iterator find_sentence(sentence_cont.begin(), sentence_cont.end(), regex_split_sentence);
	for (sregex_iterator find_end; find_sentence != find_end; ++find_sentence) {
		string sentence_found = find_sentence->str();
		int sentence_len = get_word_count(sentence_found);
		mem.sentence_len.push_back(sentence_len);
		mem.sentence_carry = 0;
	}
	string sentence_xtra = *split_line_xtra;
	int sentence_xtra_len = get_word_count(sentence_xtra);
	if (sentence_xtra_len > 0) {
		mem.sentence_carry += sentence_xtra_len;
	}
}
Ejemplo n.º 2
0
int main()
{
	input();
	int word_count = get_word_count();
	printf("Words = %d\n", word_count);
	int num_sum = get_num_sum();
	printf("Sum of numbers = %d\n", num_sum);
	getch();
	return 0;
}
Ejemplo n.º 3
0
static ssize_t word_count_write(struct file *file, const char __user * buf, size_t count, loff_t *ppos)
{
	ssize_t written = count;
	
	copy_from_user(mem, buf, count);
	mem[count] = '\0';
	word_count=get_word_count(mem);
	read_flag='n';
	printk("write: %d Byte \n", (int)count);
	
	return written;
}
Ejemplo n.º 4
0
static ssize_t word_count_write(struct file *file, const char __user *buf,
        size_t count, loff_t *ppos)
{
	ssize_t written = count;

	if (copy_from_user(mem, buf, count))
	{
		return -EINVAL;
	}
	mem[count] = '\0';
	word_count = get_word_count(mem);
	printk("write:word count:%d\n", (int) word_count);

	return written;
}
Ejemplo n.º 5
0
//------------------------------------------------------------------------------
str_iter line_state::get_end_word() const
{
    int n = get_word_count();
    return (n ? get_word(n - 1) : str_iter());
}
Ejemplo n.º 6
0
//------------------------------------------------------------------------------
bool line_state::get_end_word(str_base& out) const
{
    int n = get_word_count();
    return (n ? get_word(n - 1, out) : false);
}