Arrays 在MIPS汇编中查找句子中的每个单词

Arrays 在MIPS汇编中查找句子中的每个单词,arrays,string,assembly,mips,Arrays,String,Assembly,Mips,我正在尝试学习MIPS,我想写一个程序,要求用户输入一个句子,然后在新行上打印出每个单词。条件是,当存在诸如“,”,“,”,“-”等字符时,它应该转到下一个数字或字母,而不打印标点符号 我发现很难检查字符串中的每个元素,看它是分隔字符还是普通字符,然后打印出结果。有人能解释一下如何做到这一点而不太复杂吗? 任何帮助都将不胜感激 您需要做的是编写一个字符串标记器。这通常是编写许多文本分析器(包括编译器)的第一步。对于我的伪代码,我假设用户输入的文本位于名为“s”的变量中 inti=0; int l

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

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

您需要做的是编写一个字符串标记器。这通常是编写许多文本分析器(包括编译器)的第一步。对于我的伪代码,我假设用户输入的文本位于名为“s”的变量中

inti=0;
int l=strlen(s);
而(i
您可以拥有一个包含所有分隔符字符的字符串,并编写一个例程,如果在该字符串中可以找到给定字符,则该例程将返回true。或者您可以有一个包含256个条目的表,其中字符代码将用作索引,因此您可以将与分隔符对应的所有条目设置为非零,将其余条目设置为零(反之亦然)。谢谢您的评论。如何像第一个选项那样编写例程?我需要做得尽可能简单。你将如何用
C
编写程序?这通常是一个好的开始。
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
}