Skip to content

Commit

Permalink
Add a page of useful links for developers.
Browse files Browse the repository at this point in the history
  • Loading branch information
reventlov committed Oct 9, 2024
1 parent 886cfbb commit 46ce45c
Showing 1 changed file with 54 additions and 0 deletions.
54 changes: 54 additions & 0 deletions doc/devloper_resources.md
Original file line number Diff line number Diff line change
@@ -0,0 +1,54 @@
# Links and Resources for Emboss Developers

## C++

* [ISO C++ drafts](https://github.com/cplusplus/draft/tree/main/papers)
* [C++14 final draft](https://github.com/cplusplus/draft/blob/main/papers/N3797.pdf)
* [C++17 initial draft (C++14 + minor fixes)](https://github.com/cplusplus/draft/blob/main/papers/n4140.pdf)
* [Final publicly-available drafts for each C++ revision](https://www.open-std.org/jtc1/sc22/wg21/docs/standards)
* [cppreference](https://en.cppreference.com/)
* [cplusplus.com reference](https://cplusplus.com/reference/)
* [Compiler Explorer (Godbolt)](https://godbolt.org/)


### C++ Weirdness

* [Some background about `uint8_t` vs `unsigned char` from GCC archives](https://gcc.gnu.org/bugzilla/show_bug.cgi?id=66110#c10)
* [A bug story: data alignment on x86](https://pzemtsov.github.io/2016/11/06/bug-story-alignment-on-x86.html)
* [Casting unsigned to signed on OpenVMS HP C++ on Itanium](https://stackoverflow.com/questions/7601731/how-does-one-safely-static-cast-between-unsigned-int-and-int)


## Python

* [Python official documentation, current](https://docs.python.org/3/)
* [Python official documentation, v3.9 (oldest non-EOL until October 2025)](https://docs.python.org/3.9/)
* [CPython lifecycle calendar](https://devguide.python.org/versions/)


## Bit Manipulation Tricks

* [Sean Eron Anderson's Bit Twiddling Hacks page](https://graphics.stanford.edu/~seander/bithacks.html)
* But be careful copying code snippets: some of the C code is either
non-portable or invokes undefined behavior.
* [*Hacker's Delight*, Second Edition, by Henry S. Warren, Jr. (book)](https://en.wikipedia.org/wiki/Hacker%27s_Delight)


## Parsers

* ["On the translation of languages from left to right", Knuth, D., 1965][1]

[1]: https://doi.org/10.1016/S0019-9958(65)90426-2
* The paper that introduced shift-reduce parsers, and the "Canonical LR"
table generation algorithm.
* ["Efficient Computation of LALR(1) Look-Ahead Sets", DeRemer, D. & Pennello, T., 1982](https://dl.acm.org/doi/pdf/10.1145/69622.357187)
* The paper that introduced the LALR(1) table generation algorithm used
in Berkeley YACC and GNU Bison.
* ["Generating LR Syntax Error Messages from Examples", Jeffery, C., 2003](http://dx.doi.org/10.1145/937563.937566)
* [Link to non-paywalled copy](https://www.cs.tufts.edu/~nr/cs257/archive/clinton-jefferey/lr-error-messages.pdf)
* The paper that introduced the *Merr* error marking system. Emboss uses
this algorithm for specifying parser errors.
* ["The IELR(1) algorithm for generating minimal LR(1) parser tables for non-LR(1) grammars with conflict resolution", Denny, J. & Malloy, B., 2010](https://doi.org/10.1016/j.scico.2009.08.001)
* An algorithm for generating minimal parser tables for LR(1) languages.
* ["Practical LR Parser Generation", Zimmerman, J., 2022](https://doi.org/10.48550/arXiv.2209.08383)
* Many improvements on LR(1) parsing.
* [*Compilers: Principles, Techniques, and Tools*, Second Edition, by Alfred V. Aho, Monica S. Lam, Ravi Sethi, and Jeffrey D. Ullman (the "Dragon Book")](https://en.wikipedia.org/wiki/Compilers:_Principles,_Techniques,_and_Tools)

0 comments on commit 46ce45c

Please sign in to comment.