String 用数字解析字符串列表

String 用数字解析字符串列表,string,list,scheme,String,List,Scheme,我有一张单子。每个单词都有一个数值 '(("Home" 15)("Baby" 20) ("Mother" 28)...)). 我必须写一个程序,它会得到这样的结果: (function-name "[Home (Baby3) 2] Mother")) 并计算它们的价值 每个单词都以大写字母开头,单词中的所有其他单词都是小写字母 每个单词都从上面的列表中获取其值 每个单词都需要乘以下面的数字。如果没有数字,则为1 在上述示例中: "[Home (Baby3) 2] Mother" =

我有一张单子。每个单词都有一个数值

 '(("Home" 15)("Baby" 20) ("Mother" 28)...)).
我必须写一个程序,它会得到这样的结果:

(function-name "[Home (Baby3) 2] Mother")) 
并计算它们的价值

  • 每个单词都以大写字母开头,单词中的所有其他单词都是小写字母
  • 每个单词都从上面的列表中获取其值
  • 每个单词都需要乘以下面的数字。如果没有数字,则为1
在上述示例中:

"[Home (Baby3) 2] Mother" =  Home*1 + (Baby*3)*2 +Mother*1=15*1+20*3*2+28=163
我不知道怎么开始。有什么想法吗

我开始写代码。 但是,我不知道如何处理2个括号[,例如] [家[Baby3]2]。
我怎么知道是第一个还是第二个?(不使用计数器和设置之类的工具!)

考虑将问题分为几个阶段。一种可能的分解是:

  • 了解如何获取任意字符串并将其解析为数据结构。e、 g.给定
    “[Home(Baby3)2]Mother”
    ,编写一个解析函数,将其转换为更易于理解的结构化值
    ”((Home(Baby3)2)Mother)
    ,或其一些变体

  • 给定这样一个结构化的值,根据问题中描述的规则编写一个函数来解释它


  • 你知道如何做这两件事吗?

    你不能仅仅为了让别人帮你做作业而利用这个地方。你至少应该考虑一些可能的方法,解释你的想法,并询问关于这些方法是否好的建议。更好的是,尝试一种方法,看看你在哪里遇到了问题,然后问。+1…没有更多的话要说,除非OP显示出更大的效率,我开始编写代码。但是,我不知道如何处理2个括号[,对于eaxmple[Home[Baby3]2],我怎么知道]是第一个括号还是第二个括号?(不使用计数器和集合之类的东西!)考虑阅读递归下降解析,这是解析括号字符串的一种相当简单的方法。我在中间有这样一个解析器的例子,但是它处理你可能不需要处理的问题。堆栈溢出应该有几个递归下降解析的引用,包括: