freeCodeCamp/curriculum/challenges/chinese/08-coding-interview-prep/rosetta-code/s-expressions.chinese.md

68 lines
2.9 KiB
Markdown
Raw Blame History

This file contains ambiguous Unicode characters!

This file contains ambiguous Unicode characters that may be confused with others in your current locale. If your use case is intentional and legitimate, you can safely ignore this warning. Use the Escape button to highlight these characters.

---
title: S-Expressions
id: 59667989bf71cf555dd5d2ff
challengeType: 5
videoUrl: ''
localeTitle: S-表达式
---
## Description
<section id="description"><p> <a href="https://en.wikipedia.org/wiki/S-Expression" title="wpS表达式">S-Expressions</a>是一种解析和存储数据的便捷方式。 </p>任务: <p>为S-Expressions编写一个简单的读取器/解析器,处理引用的和不带引号的字符串,整数和浮点数。 </p><p>该函数应从字符串中读取单个但嵌套的S-Expression并将其作为嵌套数组返回。 </p><p>除非包含在带引号的字符串中,否则可以忽略换行符和其他空格。 </p><p><tt></tt> ”内部引用的字符串不会被解释,但会被视为字符串的一部分。 </p><p>处理字符串中的转义引号是可选的;因此“ <tt>foo”bar</tt> “可能被视为字符串” <tt>foo“bar</tt> ”,或作为错误。 </p><p>为此,读者无需识别“ <tt>\</tt> ”以进行转义,但如果语言具有适当的数据类型,则还应识别数字。 </p><p>请注意,除了“ <tt>()”</tt> “(” <tt>\</tt> “,如果支持转义)和空格,没有特殊字符。其他任何内容都是允许的,不带引号。 </p><p>读者应该能够阅读以下输入</p><p></p><pre> 数据“引用数据”123 4.5
(数据(!@4.5)“(更多”“数据”))))
</pre><p></p><p>并将其转换为本机数据结构。 (有关本机数据结构的示例,请参阅<a href="http://rosettacode.org/wiki/#Pike" title="#Pike">Pike</a> <a href="http://rosettacode.org/wiki/#Python" title="#蟒蛇">Python</a><a href="http://rosettacode.org/wiki/#Ruby" title="#红宝石">Ruby</a>实现。) </p></section>
## Instructions
<section id="instructions">
</section>
## Tests
<section id='tests'>
```yml
tests:
- text: <code>parseSexpr</code>是一个函数。
testString: 'assert(typeof parseSexpr === "function", "<code>parseSexpr</code> is a function.");'
- text: '<code>parseSexpr(&quot;(data1 data2 data3)&quot;)</code>应返回[“data1”“data2”“data3”]“)'
testString: 'assert.deepEqual(parseSexpr(simpleSExpr), simpleSolution, "<code>parseSexpr("(data1 data2 data3)")</code> should return ["data1", "data2", "data3"]");'
- text: '<code>parseSexpr(&#39;(data1 data2 data3)&#39;)</code>应该返回一个包含3个元素的数组“'
testString: 'assert.deepEqual(parseSexpr(basicSExpr), basicSolution, "<code>parseSexpr("(data1 data2 data3)")</code> should return an array with 3 elements");'
```
</section>
## Challenge Seed
<section id='challengeSeed'>
<div id='js-seed'>
```js
function parseSexpr(str) {
// Good luck!
return true;
}
```
</div>
### After Test
<div id='js-teardown'>
```js
console.info('after the test');
```
</div>
</section>
## Solution
<section id='solution'>
```js
// solution required
```
</section>