This shows the execution order given JavaScript's Call Stack, Event Loop, and any asynchronous APIs provided in the JS execution environment (in this example; Web APIs in a Browser environment)
Given the code
Collection of License badges for your Project's README file.
This list includes the most common open source and open data licenses.
Easily copy and paste the code under the badges into your Markdown files.
Translations: (No guarantee that the translations are up-to-date)
| /** | |
| * LR-parsing. | |
| * | |
| * Canonical collection of LR(0) items. | |
| * | |
| * by Dmitry Soshnikov <[email protected]> | |
| * MIT Style License (C) 2015 | |
| * | |
| * See this "rock-painting" to get the picture of what we're building here: | |
| * |
All of the below properties or methods, when requested/called in JavaScript, will trigger the browser to synchronously calculate the style and layout*. This is also called reflow or layout thrashing, and is common performance bottleneck.
Generally, all APIs that synchronously provide layout metrics will trigger forced reflow / layout. Read on for additional cases and details.
elem.offsetLeft, elem.offsetTop, elem.offsetWidth, elem.offsetHeight, elem.offsetParent| /** | |
| * Building LL(1) parsing table from First and Follow sets. | |
| * | |
| * by Dmitry Soshnikov <[email protected]> | |
| * MIT Style License | |
| * | |
| * This diff is a continuation of what we started in the previous two diffs: | |
| * | |
| * Dependencies: | |
| * |
| /** | |
| * LL(1) parser. Building parsing table, part 1: First and Follow sets. | |
| * | |
| * NOTICE: see full implementation in the Syntax tool, here: | |
| * https://github.com/DmitrySoshnikov/syntax/blob/master/src/sets-generator.js | |
| * | |
| * by Dmitry Soshnikov <[email protected]> | |
| * MIT Style License | |
| * | |
| * An LL(1)-parser is a top-down, fast predictive non-recursive parser, |
| /** | |
| * = LL parser = | |
| * | |
| * by Dmitry Soshnikov <[email protected]> | |
| * MIT Style license | |
| * | |
| * Often one can see manually written LL parsers implemented as | |
| * recursive descent. Approach in this diff is a classical parse table | |
| * state machine. | |
| * |
Here's a little walkthrough of how Yannick and I are using feature branches and pull requests to develop new features and adding them to the project. Below are the steps I take when working on a new feature. Hopefully this, along with watching the process on Github, will serve as a starting point to having everyone use a similar workflow.
Questions, comments, and suggestions for improvements welcome!
When starting a new feature, I make sure to start with the latest and greatest codebase:
git checkout master
(by @andrestaltz)
If you prefer to watch video tutorials with live-coding, then check out this series I recorded with the same contents as in this article: Egghead.io - Introduction to Reactive Programming.