2015-10-31 2 views
2

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

Мне сложно проверить каждый элемент из строки, чтобы увидеть, является ли это символом-разделителем или обычным символом, а затем распечатать результат. Может кто-нибудь объяснить, как это сделать без слишком много осложнений? Любая помощь будет принята с благодарностью!

+0

У вас может быть строка со всеми символами разделителя и написать процедуру, которая возвращает true, если данный символ может быть найден в этой строке. Или у вас может быть таблица с 256 записями, где код символа будет использоваться в качестве индекса, поэтому вы должны установить все записи, соответствующие разделителям, на ненулевые, а остальные - на ноль (или наоборот). – Michael

+0

Благодарим вас за комментарий. Как написать рутину, как в первом варианте? Мне нужно сделать это как можно проще. –

+1

Как вы напишете программу в 'C'? Это, как правило, хорошее место для начала. –

ответ

0

Что вам нужно сделать, это написать текстовый токенизатор. Это, как правило, первый шаг в написании многих анализаторов текста, включая компиляторы. Для моего псевдокода я предполагаю, что введенный пользователем текст имеет переменную с именем «s».

int i = 0; 
int l = strlen(s); 

while(i < l) 
{ 
    int start = i; // Will need the start address later 

    // Scan forward in 's' until a delimiter is found 
    while(i < l && s[i] != ',' && s[i] != '.' && s[i] != ' ' && s[i] != '-') 
    { 
    i += 1; 
    } 

    if(i == start) 
    { 
    i += 1; 
    continue; // Multiple delimiters 
    } 

    s[i] = 0;   // Replace the delimiter with null. 
    print &s[start]; // Standard out 
    i += 1;   // Move to the next character 
} 
Смежные вопросы