在MIPS程序集中查找句子中的每个单词

时间:2015-10-31 22:34:06

标签: arrays string assembly mips

我正在尝试学习MIPS,我想编写一个程序,要求用户输入一个输入句子,然后在新行上打印出每个单词。条件是当存在诸如',','','。',' - '之类的字符时,它应该转到下一个数字或字母而不打印标点符号。

我发现很难检查字符串中的每个元素以查看它是分隔字符还是普通字符,然后打印出结果。有人可以解释如何做到这一点,没有太多的复杂情况? 任何帮助将不胜感激!

1 个答案:

答案 0 :(得分: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
}