3月20日にリリース予定のJDK10では12のJEPが提案され、実装/実現される見通しです。今回注目の新機能はJEP286: Local-Variable Type Inference- ローカル変数の型省略(var記法)です。このセッションではこのJEPの解説を中心に、その他主なJEPの紹介を行います。
Recipes to build Code Generators for Non-Xtext Models with XtendKarsten Thoms
This document discusses code generators for non-Xtext models using Xtend. It provides an overview of creating minimal generators using JSON and Xtend templates, and more full-featured generators using the Xtext framework and EMF models. Key aspects covered include model navigation in Xtend templates, extensions, dynamic dispatch, IDE support, modularization, dependency injection, and incremental generation.
3月20日にリリース予定のJDK10では12のJEPが提案され、実装/実現される見通しです。今回注目の新機能はJEP286: Local-Variable Type Inference- ローカル変数の型省略(var記法)です。このセッションではこのJEPの解説を中心に、その他主なJEPの紹介を行います。
Recipes to build Code Generators for Non-Xtext Models with XtendKarsten Thoms
This document discusses code generators for non-Xtext models using Xtend. It provides an overview of creating minimal generators using JSON and Xtend templates, and more full-featured generators using the Xtext framework and EMF models. Key aspects covered include model navigation in Xtend templates, extensions, dynamic dispatch, IDE support, modularization, dependency injection, and incremental generation.
Xtext Grammar Language describes how to define grammars for the Xtext language development framework. Key points include:
- Grammars define the structure and elements of a language through rules like Statemachine, Event, and Transition.
- Terminals split text into tokens while hidden terminals are ignored by the parser. Datatype rules return values instead of objects.
- The parser creates EObjects when rules assign to the current pointer. Actions ensure object creation when no assignment occurs.
- Issues like ambiguities, left recursion, and left factoring can be resolved through techniques like keywords, predicates, and assigned actions.
- The grammar maps language structures to Ecore classes and features through rule return types
The document discusses the Eclipse Modeling Framework (EMF). It describes how EMF can be used to create Ecore models from Java, XML Schema, UML, or MOF. EMF provides a runtime library to process Ecore models and instances. It also allows generating Java code from Ecore models. The document provides examples of Ecore metamodels and model instances, and explains concepts like proxies, lazy loading, fragments, transactions and global singletons in EMF.
This document provides tips and best practices for using the Eclipse Modeling Framework (EMF). It discusses designing a model provider API, using item providers, working with the common command framework, reloading working models, finding EMF references, why notifications are called adapters, resource proxies, on-demand loading, useful commands, the role of the editing domain, optimizing Ecore models, defining custom data types, maintaining in-memory lists, creating unique lists, suppressing object creation, controlling command appearance, using custom adapter factories, refreshing viewers and selections, using item providers for labels and content, registering custom resource factories, encrypting/decrypting streams, querying XML data using EMF, serializing QNames, loading resources
The document discusses serializing EMF models with Xtext. It covers:
- The new Xtext serializer is better than the old one in terms of errors, performance and deprecation.
- Serialization is used for quickfixes, refactoring, persistence, generators and more. It guarantees syntactical correctness and handles comments/whitespace.
- The serializer must parse a serialized model back to the original, and serialize modifications with minimal textual diffs. Ambiguities can cause parsing/serialization mismatches.
- The architecture uses state machines and observer pattern. Hooks allow customizing cross-references, keywords, values and more during serialization.
This document introduces Xtend, a programming language created for Java developers. Xtend aims to improve on Java by incorporating features from other JVM languages while maintaining 100% Java interoperability. Key features include Java's type system and libraries, IDE support, functional programming capabilities, extension methods, and exceptional domain-specific language support through the use of active annotations that can participate in compilation and enhance derived Java code. The document concludes with a thank you and information about the creators of Xtend.
FXDiagram is a diagramming framework based on Eclipse Graphiti that focuses on user experience by providing flawless graphics, smooth behavior, self-explaining interactions, and easy content selection with good defaults and little customization. It integrates with Xtext and adds a thin diagram layer on top with a high-level mapping API to enable bi-directional mapping between diagrams and models without the quirks of other frameworks.
This document discusses options for creating graphical views for Xtext models. It recommends using unidirectional mapping from models to diagrams to keep views read-only and simple. Graphviz is recommended for its simplicity and powerful layout algorithms. Zest provides views based on GEF with additional configuration options. Building custom GEF views allows maximum freedom but has rendering limitations. JavaFX overcomes GEF limitations and has an intuitive API. The conclusion recommends focusing on usability, using graphical views to avoid editor issues, and leveraging modern frameworks with custom behavior.
Jazoon 2010 - Building DSLs with EclipsePeter Friese
The document discusses building domain-specific languages (DSLs) with Eclipse. It introduces DSLs and their benefits, including raising the level of abstraction and focusing on solving specific problems. It then presents Xtext, an Eclipse framework for defining grammars and generating languages, parsers, and editors. Xtext allows defining a DSL using a grammar, which is then used to generate a meta-model, parser, and base editor infrastructure for the language.
Eclipse DemoCamp in Paris: Language Development with XtextSebastian Zarnekow
This document provides an overview of the Programming Languages Framework, which includes infrastructure for language definition, editing, and code generation. It demonstrates how the framework can be used to define a sample programming language and develop tools like an editor and generator for it. Contact and resource information is also provided for learning more.
Research work presented at MoDELS Doctoral Symposium (2014) focused on providing tools complementary to Xtext in order to reduce the amount of hand-written artifacts required to give support to General Purpose Languages.
The research is focused on providing high level of abstraction languages to complement Xtext grammars, so that the current amount of hand written source code required to give support to General Purpose Languages is automatically generated from those higher level of abstraction languages. In particular, the aforementioned languages will capture information mostly related to:
a) Name Resolution
b) Syntax rewrites
This research is contextualized on the OCL and QVT specifications. One of the goals is to provide Xtext-based high quality parsers and editors for the Eclipse OCL and Eclipse QVTo projects.
The document discusses using Xtext to develop a textual modeling language for AUTOSAR systems. It describes how Xtext allows creating a scalable language that can efficiently model large AUTOSAR projects. Xtext's extensibility, via the Guice framework, enables non-trivial customizations to support different AUTOSAR releases. Benchmark tests showed the Xtext-based language parsed a large model over 10 times faster than other tools.
This document discusses user experience (UX) in the context of Xtext and diagram editors. It outlines some of the key ingredients of good UX, like usability and consistency. When using diagram frameworks with Xtext, quirks can arise which impact the UX. However, by taking control over UX with tools like FXDiagram, these quirks can be avoided and the user experience improved. The document promotes UX as important for why users like products and advocates taking back control over UX.
The document discusses a language IDE framework called Xtext that allows users to define their own domain-specific languages. Xtext can generate a full IDE for a custom language, including features like syntax highlighting, code completion, and validation. It also discusses how Xtext supports building IDEs for existing languages and new features of Xtext like hover support and improved build performance.
This document discusses domain-specific languages (DSLs) and the Xtext framework for developing DSLs. It provides an overview of what is needed to build a DSL, including a parser, type checker, code generator, and IDE features. The document also summarizes the history and key features of Xtext, such as its grammar-driven and proven compiler architecture, and demonstrates Xtext through examples.
This document discusses scoping, linking, and indexing in Xtext. It provides an overview of containment references versus cross references, and how cross references are implemented in DSL grammars and Xtext editors through features like hyperlinking, validation, content assist, and find references. It then covers the three main uses of scopes in Xtext: linking, content assist, and serializing. Details are given on the default scoping configuration and how scopes are implemented, including name qualification, imports, and cross-file references using the index.
The document discusses computer programming scopes. It defines scope as the part of a program where a name binding is valid, where the name can be used to refer to an entity. Outside of the scope, the name may refer to a different entity or nothing at all. Scope is also known as visibility, from the perspective of the referenced entity. Scope refers to the set of all visible entities or valid names within a portion of a program.
Event : Visual Studio Users Community Japan #1
Date : 2019/09/14
ソフトウェア/サービス開発において最も後回しにされるものの代表が「パフォーマンスの向上」です。C#/.NET の最大の武器は開発生産性ですが、C# 7.0 以降はパフォーマンス向上のための機能追加が多数行われています。いくつかのポイントを押さえることで実装時からより高速なコードを書くことができるようになります。
このドキュメントでは、そんなポイントとなる箇所をふんだんにお届けします。
iOS オールスターズ2でお話しした資料です! Swift らしさってなんだろう、そんなところを API デザインガイドラインと Swift 標準ライブラリの表現に着目して 7 つほど紹介してみました。あくまでも "指針" なので『そういう風に考えていくのね』みたいに捉えて、そこからは "自分らしい" 言葉を紡いでいってくれたらいいのかなって思います。