Appendix E: Bibliography and Footnotes

N4JS Project. (2018). N4JS Language Specification. Retrieved from https://www.eclipse.org/n4js/spec/N4JSSpec.html

Xpect, Project Website. Retrieved from https://projects.eclipse.org/projects/modeling.xpect

Bray, Tim. (2017). RFC 8259: The javascript object notation (json) data interchange format.

International, ECMA. (2017). Standard ECMA-404, The JSON Data Interchange Syntax.

Bray, Tim. (2014). RFC 7158: The JavaScript Object Notation ({JSON}) Data Interchange Format.

Seriot, Nicolas. (2018). Parsing JSON is a Minefield. Retrieved from http://seriot.ch/parsing_json.php

ECMA. (2015). ECMAScript 2015 Language Specification. Retrieved from http://www.ecma-international.org/publications/files/ECMA-ST/Ecma-262.pdf

WhatWG. Loader: A Collection of Interesting Ideas. Retrieved from http://whatwg.github.io/loader/


1. This is not yet implemented as of September 2015; types are still stored in a separate cache, the ASTMetaInfoCache.
2. In the future, the top-down order could become more important if inference of expected types is also integrated into post-processing.
3. The DeferredTypeRef has replaced the old ComputedTypeRef that had been used until Summer 2015; those were resolved lazily when the type was actually needed (triggered on demand). For a discussion of this change see Background and in particular Comparison of inference of type of AST nodes before / after refactoring..
4. First, according to the build order.
5. These are not really input values but rather values changed during the following invocation of the IBuilderState that need to be carried over from one invocation to the next.
6. Once the build phase has ended, this copied and modified Xtext index will replace the actual state of the builder state and will be persisted on graceful application shutdown.
7. This set of URIs will contain the URIs of all resources that are available in the copied Xtext index but not yet directly processed by the builder in the current build phase. These URIs will later be used as candidates for all resources that might be marked as affected ones and queued by the builder for forthcoming build phases.
8. This set eventually represents all changes that were made during the current build phase. Note that allChanges might contain resource description deltas that do not represent an actual change, it is processed by the builder but the underlying information stored in the user data is still unchanged.
9. Note that deltas for to-be-deleted resources were already added to allDeltas upfront in step Process Deleted.
10. This happens through a call to CurrentDescriptions#register(Delta)
11. Unlike in step Enqueue Affected Resources, we now use changedDeltas instead of allDeltas as a basis.
12. One could think of an optimization to only register those types that are not just imported or declared, but whose features are really in use. E.g., in one file another type be imported (and even used as type of variable), but non of its member is used. So changes to these members wouldn’t affect the current resources. However this might miss certain cases. E.g., when a method in the super class is removed and now the method with same signature of a consumed role would be used. The method of the role has no been used before, yet must not be ignored. Thus, currently all super classes, roles and interfaces and referenced classes are added as dependency regardless if their members are called.
13. https://developer.apple.com/library/mac/documentation/Carbon/Reference/WebKit_JavaScriptCore_Ref/_index.html
14. but note that most utility methods obtain the transpiler state automatically; so, most of the time, you won’t need to obtain the state yourself.
15. Currently we use our own fork of Xpect https://github.com/NumberFour/Xpect and the respective p2-repository https://numberfour.github.io/Xpect/updatesite/nightly/
16. version at the time of writing is Xtext 2.12
17. https://github.com/eclipse/xtext-core/issues/12
18. Calculates a list of external library projects that have to be build and another list of projects that have to be cleaned.

Quick Links