Skip to content

Commit 4ad6ba4

Browse files
authored
Update README.md
1 parent ecba528 commit 4ad6ba4

File tree

1 file changed

+15
-10
lines changed

1 file changed

+15
-10
lines changed

README.md

Lines changed: 15 additions & 10 deletions
Original file line numberDiff line numberDiff line change
@@ -2,25 +2,30 @@
22

33
A list of open source projects that students can contribute to for student projects. Please feel free to join an existing project and collaborate. All your contributions to any project you've collaborated on will count toward your student achievements.
44

5-
## Library Projects
6-
7-
### react-pure-component-starter
8-
9-
#### [Update ESLint](https://github.com/ericelliott/react-pure-component-starter/issues/196) #easy
10-
11-
ESLint has deprecated some old rules. Bring the `.eslintrc` up to date with the current rule names. Run `npm run lint` to spot failures, and correct the error messages.
12-
5+
## Contribute to Open Source Libraries
136

147
### rtype
158

169
#### [Runtime rtype parser](https://github.com/ericelliott/rtype/issues/62) #advanced
1710

18-
Experience with compilers, type theory, language design would be helpful.
11+
You'll learn about how programming language compilers parse source code, extract its meaning, and compile output from it.
12+
13+
Write a function that takes an rtype interface description as a string and returns an object that can be used for runtime type checking.
14+
15+
```js
16+
parseSignature(signature: String) => {
17+
checkInputs: Predicate,
18+
checkOutput: Predicate,
19+
checkError: Predicate
20+
}
21+
```
1922

20-
Write a function that takes an rtype interface description as a string and returns an object that can be used for runtime introspection and type checking.
23+
The target function will get wrapped by a utility such as [rfx](https://github.com/ericelliott/rfx). When the wrapper function gets called, it will pass inputs to `checkInputs()`. If it returns true, only then does the original function get called. When the function returns, its output will be similarly checked by `checkOutput()` before it gets returned to the original caller. If the function throws, the error will also be checked, by `checkError()`.
2124

2225
Useful background:
2326

27+
* [How to Build a Compiler](https://www.youtube.com/watch?v=Tar4WgAfMr4) Great video by James Kyle
28+
* [How to Build a Compiler source](https://github.com/thejameskyle/the-super-tiny-compiler) Source companion to the James Kyle video
2429
* The [Stanford Compilers course](https://www.coursera.org/course/compilers) (free online lectures)
2530

2631
If you're curious about types, see the [introduction to types](https://class.coursera.org/compilers/lecture/45) from the Stanford Compiler course.

0 commit comments

Comments
 (0)