The document discusses several challenges in designing domain-specific languages (DSLs). It notes that while reusing the target platform's expressions is pragmatic, it can lead to dispersed information and complexity. An alternative proposed is developing expressions as a reusable library, offering advantages like non-dispersed information and good tooling while requiring additional learning. Concrete syntax challenges include grammar mixing and ambiguity, which can be addressed with techniques like scannerless parsing and contextual lexing. Abstract syntax poses challenges for meta-model reuse and linking elements. Validation rules may not be weakened and compilers/interpreters require contract specifications. Customizing generated artifacts requires non-invasive changes.
From Programming to Modeling And Back AgainMarkus Voelter
Is programming = modeling? Are there differences, conceptual and tool-wise? Should there be differences? What if we programmed the way we model? Or vice versa? In this slidedeck I explore this question and introduce interesting developments in the space of projectional editing and modern parser technology. This leads to the concept of modular programming languages and a new way of looking at programming. I will demonstrate the idea with tools that are available today, for example TMF Xtext, JetBrains MPS and Intentional’s Domain Workbench.
From Programming to Modeling And Back AgainMarkus Voelter
Is programming = modeling? Are there differences, conceptual and tool-wise? Should there be differences? What if we programmed the way we model? Or vice versa? In this slidedeck I explore this question and introduce interesting developments in the space of projectional editing and modern parser technology. This leads to the concept of modular programming languages and a new way of looking at programming. I will demonstrate the idea with tools that are available today, for example TMF Xtext, JetBrains MPS and Intentional’s Domain Workbench.
Architecture DSLs are a useful tool to capture the cornerstones of platform or product line architectures. In addition, interesting analyses can be performed on the models, and much of the infrastructure and configuration code can be generated. On the flip side, these DSLs themselves must be architected consciously: while many architectural abstractions are specific to any given platform or product line, many other aspects are generic and hence can be reused for several architecture DSLs. In this talk I trace how my thinking on architecture modeling has changed over time, and how this is reflected in the architecture DSLs I have built (or helped to build), and how evolving tools have made these changes possible.
Introduction to SDL Passolo - the leading software localization tool. See what the differences are between document translation and software localization.
Architecture DSLs are a useful tool to capture the cornerstones of platform or product line architectures. In addition, interesting analyses can be performed on the models, and much of the infrastructure and configuration code can be generated. On the flip side, these DSLs themselves must be architected consciously: while many architectural abstractions are specific to any given platform or product line, many other aspects are generic and hence can be reused for several architecture DSLs. In this talk I trace how my thinking on architecture modeling has changed over time, and how this is reflected in the architecture DSLs I have built (or helped to build), and how evolving tools have made these changes possible.
Introduction to SDL Passolo - the leading software localization tool. See what the differences are between document translation and software localization.
Getting the most out of Java [Nordic Coding-2010]Sven Efftinge
In this talk we explain how we use the more recent concepts of the Java programming language in order to improve readability and maintainability of our code.
Everybody knows : Web is the platform of the future. Developing for the browser unfortunately requires us to learn and write JavaScript. Not only that but we also have to integrate the JavaScript client code with the server side, which often runs on the JVM (i.e. is written in Java). So we have to work in two different languages with completely different tools and APIs, and cannot share code between the client and the server.
The Google Web Toolkit (GWT) provides a way to write your client side web application entirely in Java and have it automatically translated to fast and compact JavaScript. It allows you to access all the browser functionality through a statically typed API. You only have to learn and use one language and you can use your code on the client as well as on the server.
The downside : Java is a bad match for the asynchronous programming model required on the browser and generally forces us to write and read a lot of boilerplate code.
In this session you'll see how programming GWT applications with Eclipse Xtend provides the best of both worlds:
Static typing with advanced IDE support meets a powerful and expressive language - right at your finger tips.
Xtext makes it easy to define domain specific languages, but making your DSL a first class programming artifact with support for expressions and integration with Java is a hard thing if you do it from scratch. The Xbase library is an integral part of the Xtext framework. Xbase implements the bridge from DSLs to Java. It greatly simplifies your language implementation, if you want to run your DSL on the JVM. Xbase consists of a very powerful Java-like expression grammar and implements all the necessary infrastructure to link your DSL against existing Java types, compile it to executable code and validate it against the JVM specific constraints. In this session I want to explain how Xbase works under the covers and dive into its APIs. You will see, how to enhance your language and make it highly expressive and powerful without introducing an artificial gap to the Java platform. If you want your DSL to be a first class programming artifact, come to this session and see how to benefit best from Xbase.
Are you responsible for developing satellite on-board software? Are you the Dutch government and you have to efficiently implement the public benefits law? Are you a healthcare startup, developing companion apps that help patients through a treatment? Are you an insurance company struggling to create new, and evolve existing products quickly to keep up with the market? These are all examples of organisations who have built their own domain-specific programming language to streamline the development of applications that have a non-trivial algorithmic core. All have built their languages with Jetbrains MPS, an open source language development tool optimized for ecosystems of collaborating languages with mixed graphical, textual, tabular and mathematical notations. This talk has four parts. I start by motivating the need for DSLs based on real-world examples, including the ones above. I will then present a few high-level design practices that guide our language development work. Third, I will develop a simple language extension to give you a feel for how MPS works. And finally, I will point you to things you can read to get you started with your own language development practice.
Graphic and interaction design are two fields critical to software development that — unlike code have — have not yet nourished a successful collaboration model. What can we learn from the Wordpress community’s latest attempts to involve designers in the open source process? Can we simply apply the same collaboration methods from code to design? And what other examples and models are available for us to borrow from? What are the challenges of networked collaboration in the creative process? Can they and how might they be solved? Or is it just that designers don’t like to work together? Mushon will be presenting and leading a discussion on the subject with examples from the Wordpress community, his own work, and the research done in his Open Source Design class taught in Parsons’ AAS Program in Graphic Design. Speaker: Mushon Zer-Aviv.
More on http://mushon.com
Envisioning the Future of Language WorkbenchesMarkus Voelter
Over the last couple of years, I have used MPS successfully to build interesting (modeling and programming) languages in a wide variety of domains, targeting both business users and engineers. I’ve used MPS because it is currently the most powerful language workbench, lots of things are good about iz, in particular, its support for a multitude of notations and language modularity. But it is also obvious that MPS is not going to be viable for the medium to long term future; the most obvious reason for this statement is that it is not web/cloud-based. In this keynote, I will quickly recap why and how we have been successful with MPS, and point out how language workbenches could look like in the future; I will outline challenges, opportunities and research problems. I hope to spawn discussions for the remainder of the workshop.
Building DSLs: Marriage of High Essence and Groovy MetaprogrammingSkills Matter
DSLs or Domain Specific Languages focus on a domain or a particular problem. They serve as an effective human-machine interaction tool as they're highly expressive. Their scope is fairly focused and that keeps them simple and small from the user's point of view. However, designing and implementing DSLs is not easy. Typically this involves steep learning curve and difficult parsing techniques. This is where Groovy comes in. You can take advantage of the flexible syntax of Groovy and it's metaprogramming capability to create what are called internal DSLs, that is, DSLs hosted using a higher level language.
In this fast paced highly interactive presentation you will start out learning the characteristics and types of DSLs. Then you will learn about the challenges in designing DSLs and deep dive into Groovy features that can ease the pain of implementing DSLs. Then, using some live coding, Venkat will show you how to create and implement internal DSLs using Groovy. Along the way you'll learn some tricks to facilitate desirable syntax for your DSL.
External or internal domain-specific languages (DSLs) or (fluent)
APIs? Whoever you are – a developer or a user of a DSL –
you usually have to choose side; you should not! What about
metamorphic DSLs that change their shape according to your
needs? Our 4-years journey of providing the "right" support
(in the domain of feature modeling), led us to develop an external
DSL, different shapes of an internal API, and maintain
all these languages. A key insight is that there is no one-size-fits-
all solution or no clear superiority of a solution compared
to another. On the contrary, we found that it does make sense
to continue the maintenance of an external and internal DSL.
Based on our experience and on an analysis of the DSL engineering
field, the vision that we foresee for the future of
software languages is their ability to be self-adaptable to the
most appropriate shape (including the corresponding integrated
development environment) according to a particular
usage or task. We call metamorphic DSL such a language,
able to change from one shape to another shape.
The talk has been presented at SPLASH conference in Portland (USA), Onward! Essays track.
Paper is here: https://hal.archives-ouvertes.fr/hal-01061576/fr
A Brief introduction about most popular programming languages and their uses in different scenarios. This presentation explores the top programming languages and their potential in different areas of Technology.
In this deck I describe twenty best practices for using external DSLs to develop software (also know as Model-Driven Development). The best practices are based on my personal experience, but they are also rated based on feedback I received from a number of colleagues to express the level of confidence experts have in the particular best practice.
The slides cover three main aspects: language definition, model processing as well as process and organizational issues. Examples include the importance of notations, viewpoints and partitioning, the role of constraints, model transformations and testing as well as some thoughts on documentation, reviews and project roles.
Putting twenty best practices into 5.000 words of course results in each best practice being quite brief. However, it also means each is highly condensed and to the point. I believe the slides remind developers of most of the critical aspects of using DSLs, and it can serve as a checklist when starting an MD* project.
The Spoofax Language Workbench (SPLASH 2010)lennartkats
Spoofax is a language workbench for efficient, agile development of textual domain-specific languages with state-of-the-art IDE support. It provides a comprehensive environment that integrates syntax definition, program transformation, code generation, and declarative specification of IDE components.
Simplicity, ease of use, clean syntax and clear semantics are the characteristics of a good DSL that enable the users to focus on the problem. It is non-trivial to define, develop and maintain a DSL, especially using traditional compiler techniques. The Ruby programming language solves this issue to a certain extent.
Topics Covered
* Fundamentals of DSLs.
* Introduction of Ruby features for writing DSLs.
* Writing a DSL - The speakers' experience, with examples.
* Challenges and Issues.
Speaker Profiles:
Harshal Hayatnagarkar is a researcher at Tata Research Development and Design Centre, Pune (a division of TCS) with many years of experience in writing large-scale trading systems, DSLs and high performance machine learning systems. Currently he is writing a DSL for information visualization using Ruby.
Rohan Kini: is a Senior Developer at ThoughtWorks. He has been working with Ruby since 2005 on one of the earliest Ruby projects in India. He specializes in development of large-scale, web-based applications and scripting languages.
Auto-GWT : Better GWT Programming with XtendSven Efftinge
Presentation from GWT.create 2015 EU
Auto-GWT (auto-gwt.org) is a library for the Google Web Toolkit, that frees your code from unneccessary and complicated boilerplate and at the same time pushes the IDE capabilities to a new level. Auto-GWT is based on Xtend (xtendlang.org).
Xtend is a modern programming language that is 100% compatibly with existing Java libraries and even translates to readable Java source code. With it's slick syntax and powerful features such as lambdas, operator overloading and compile-time macros you can turn any verbose piece of Java code into a small and elegant piece of expressive Xtend code.
In this session we will show how Xtend can be used to program GWT applications and how well the typical GWT idioms are supported by the language.
At least since the release of Java 8, functional programming has become mainstream in the Java community. Things like collection processing, lazy evaluation and concurrent programming are much easier to describe in a functional style than in the traditional procedural or object-oriented way.
Xtend is a Java dialect hosted at Eclipse. Designed to remove the syntactic noise, it offers a superior syntax and additional abstractions to provide the full power of functional programming to Java developers. As it compiles to Java 5 code, it will enable functional programming even for Android and GWT developers.
In this tutorial, you will learn the basic principles of functional programming and the Xtend idioms to write code the functional way: concise, easy to understand, and yet powerful. No prior knowledge of functional programming or Xtend required.
In this presentation I talk about all kinds of myths and missconceptions regarding code generation and modeling in general. I also cover the some don'ts and dos.
Premium MEAN Stack Development Solutions for Modern BusinessesSynapseIndia
Stay ahead of the curve with our premium MEAN Stack Development Solutions. Our expert developers utilize MongoDB, Express.js, AngularJS, and Node.js to create modern and responsive web applications. Trust us for cutting-edge solutions that drive your business growth and success.
Know more: https://www.synapseindia.com/technology/mean-stack-development-company.html
Business Valuation Principles for EntrepreneursBen Wann
This insightful presentation is designed to equip entrepreneurs with the essential knowledge and tools needed to accurately value their businesses. Understanding business valuation is crucial for making informed decisions, whether you're seeking investment, planning to sell, or simply want to gauge your company's worth.
Implicitly or explicitly all competing businesses employ a strategy to select a mix
of marketing resources. Formulating such competitive strategies fundamentally
involves recognizing relationships between elements of the marketing mix (e.g.,
price and product quality), as well as assessing competitive and market conditions
(i.e., industry structure in the language of economics).
3.0 Project 2_ Developing My Brand Identity Kit.pptxtanyjahb
A personal brand exploration presentation summarizes an individual's unique qualities and goals, covering strengths, values, passions, and target audience. It helps individuals understand what makes them stand out, their desired image, and how they aim to achieve it.
Putting the SPARK into Virtual Training.pptxCynthia Clay
This 60-minute webinar, sponsored by Adobe, was delivered for the Training Mag Network. It explored the five elements of SPARK: Storytelling, Purpose, Action, Relationships, and Kudos. Knowing how to tell a well-structured story is key to building long-term memory. Stating a clear purpose that doesn't take away from the discovery learning process is critical. Ensuring that people move from theory to practical application is imperative. Creating strong social learning is the key to commitment and engagement. Validating and affirming participants' comments is the way to create a positive learning environment.
LA HUG - Video Testimonials with Chynna Morgan - June 2024Lital Barkan
Have you ever heard that user-generated content or video testimonials can take your brand to the next level? We will explore how you can effectively use video testimonials to leverage and boost your sales, content strategy, and increase your CRM data.🤯
We will dig deeper into:
1. How to capture video testimonials that convert from your audience 🎥
2. How to leverage your testimonials to boost your sales 💲
3. How you can capture more CRM data to understand your audience better through video testimonials. 📊
[Note: This is a partial preview. To download this presentation, visit:
https://www.oeconsulting.com.sg/training-presentations]
Sustainability has become an increasingly critical topic as the world recognizes the need to protect our planet and its resources for future generations. Sustainability means meeting our current needs without compromising the ability of future generations to meet theirs. It involves long-term planning and consideration of the consequences of our actions. The goal is to create strategies that ensure the long-term viability of People, Planet, and Profit.
Leading companies such as Nike, Toyota, and Siemens are prioritizing sustainable innovation in their business models, setting an example for others to follow. In this Sustainability training presentation, you will learn key concepts, principles, and practices of sustainability applicable across industries. This training aims to create awareness and educate employees, senior executives, consultants, and other key stakeholders, including investors, policymakers, and supply chain partners, on the importance and implementation of sustainability.
LEARNING OBJECTIVES
1. Develop a comprehensive understanding of the fundamental principles and concepts that form the foundation of sustainability within corporate environments.
2. Explore the sustainability implementation model, focusing on effective measures and reporting strategies to track and communicate sustainability efforts.
3. Identify and define best practices and critical success factors essential for achieving sustainability goals within organizations.
CONTENTS
1. Introduction and Key Concepts of Sustainability
2. Principles and Practices of Sustainability
3. Measures and Reporting in Sustainability
4. Sustainability Implementation & Best Practices
To download the complete presentation, visit: https://www.oeconsulting.com.sg/training-presentations
What is the TDS Return Filing Due Date for FY 2024-25.pdfseoforlegalpillers
It is crucial for the taxpayers to understand about the TDS Return Filing Due Date, so that they can fulfill your TDS obligations efficiently. Taxpayers can avoid penalties by sticking to the deadlines and by accurate filing of TDS. Timely filing of TDS will make sure about the availability of tax credits. You can also seek the professional guidance of experts like Legal Pillers for timely filing of the TDS Return.
Unveiling the Secrets How Does Generative AI Work.pdfSam H
At its core, generative artificial intelligence relies on the concept of generative models, which serve as engines that churn out entirely new data resembling their training data. It is like a sculptor who has studied so many forms found in nature and then uses this knowledge to create sculptures from his imagination that have never been seen before anywhere else. If taken to cyberspace, gans work almost the same way.
Memorandum Of Association Constitution of Company.pptseri bangash
www.seribangash.com
A Memorandum of Association (MOA) is a legal document that outlines the fundamental principles and objectives upon which a company operates. It serves as the company's charter or constitution and defines the scope of its activities. Here's a detailed note on the MOA:
Contents of Memorandum of Association:
Name Clause: This clause states the name of the company, which should end with words like "Limited" or "Ltd." for a public limited company and "Private Limited" or "Pvt. Ltd." for a private limited company.
https://seribangash.com/article-of-association-is-legal-doc-of-company/
Registered Office Clause: It specifies the location where the company's registered office is situated. This office is where all official communications and notices are sent.
Objective Clause: This clause delineates the main objectives for which the company is formed. It's important to define these objectives clearly, as the company cannot undertake activities beyond those mentioned in this clause.
www.seribangash.com
Liability Clause: It outlines the extent of liability of the company's members. In the case of companies limited by shares, the liability of members is limited to the amount unpaid on their shares. For companies limited by guarantee, members' liability is limited to the amount they undertake to contribute if the company is wound up.
https://seribangash.com/promotors-is-person-conceived-formation-company/
Capital Clause: This clause specifies the authorized capital of the company, i.e., the maximum amount of share capital the company is authorized to issue. It also mentions the division of this capital into shares and their respective nominal value.
Association Clause: It simply states that the subscribers wish to form a company and agree to become members of it, in accordance with the terms of the MOA.
Importance of Memorandum of Association:
Legal Requirement: The MOA is a legal requirement for the formation of a company. It must be filed with the Registrar of Companies during the incorporation process.
Constitutional Document: It serves as the company's constitutional document, defining its scope, powers, and limitations.
Protection of Members: It protects the interests of the company's members by clearly defining the objectives and limiting their liability.
External Communication: It provides clarity to external parties, such as investors, creditors, and regulatory authorities, regarding the company's objectives and powers.
https://seribangash.com/difference-public-and-private-company-law/
Binding Authority: The company and its members are bound by the provisions of the MOA. Any action taken beyond its scope may be considered ultra vires (beyond the powers) of the company and therefore void.
Amendment of MOA:
While the MOA lays down the company's fundamental principles, it is not entirely immutable. It can be amended, but only under specific circumstances and in compliance with legal procedures. Amendments typically require shareholder
Skye Residences | Extended Stay Residences Near Toronto Airportmarketingjdass
Experience unparalleled EXTENDED STAY and comfort at Skye Residences located just minutes from Toronto Airport. Discover sophisticated accommodations tailored for discerning travelers.
Website Link :
https://skyeresidences.com/
https://skyeresidences.com/about-us/
https://skyeresidences.com/gallery/
https://skyeresidences.com/rooms/
https://skyeresidences.com/near-by-attractions/
https://skyeresidences.com/commute/
https://skyeresidences.com/contact/
https://skyeresidences.com/queen-suite-with-sofa-bed/
https://skyeresidences.com/queen-suite-with-sofa-bed-and-balcony/
https://skyeresidences.com/queen-suite-with-sofa-bed-accessible/
https://skyeresidences.com/2-bedroom-deluxe-queen-suite-with-sofa-bed/
https://skyeresidences.com/2-bedroom-deluxe-king-queen-suite-with-sofa-bed/
https://skyeresidences.com/2-bedroom-deluxe-queen-suite-with-sofa-bed-accessible/
#Skye Residences Etobicoke, #Skye Residences Near Toronto Airport, #Skye Residences Toronto, #Skye Hotel Toronto, #Skye Hotel Near Toronto Airport, #Hotel Near Toronto Airport, #Near Toronto Airport Accommodation, #Suites Near Toronto Airport, #Etobicoke Suites Near Airport, #Hotel Near Toronto Pearson International Airport, #Toronto Airport Suite Rentals, #Pearson Airport Hotel Suites
5. Lots of problems are solved
textual
DSL frameworks
graphical
DSL frameworks
6. Lots of problems are solved
textual
DSL frameworks
graphical
DSL frameworks
nice transformation
languages
7. Lots of problems are solved
textual
DSL frameworks
graphical
DSL frameworks
nice transformation
languages
open source IDEs
8. Lots of problems are solved
textual
DSL frameworks
graphical
DSL frameworks
nice validation nice transformation
languages languages
open source IDEs
9. Lots of problems are solved
textual
DSL frameworks
nice template graphical
languages DSL frameworks
nice validation nice transformation
languages languages
open source IDEs
10. Lots of problems are solved
textual
DSL frameworks
nice template graphical
languages DSL frameworks
proven infrastructure
nice validation nice transformation
languages languages
open source IDEs
16. Information hiding in computer science is the
principle of the hiding of design decisions in a
computer program that are most likely to change,
thus protecting other parts of the program from
change if the design decision is changed. The
protection involves providing a stable interface which
shields the remainder of the program from the
implementation (the details that are most likely to
change).
Hiding
implementation details?
18. atio n of c
Se par once
rns?
In computer science, separation of concerns (SoC) is
the process of breaking a computer program into
distinct features that overlap in functionality as little as
possible. A concern is any piece of interest or focus in a
program. Typically, concerns are synonymous with
features or behaviors.
28. Protected Regions
• generated and manually written code mixed
up
• manual deletion of artifacts
• platform dependent information
29. Protected Regions
• generated and manually written code mixed
up
• manual deletion of artifacts
• platform dependent information
• information is dispersed!
38. Black box
target language literals
• bound to target platform
• no option for MDA friends
• no tooling!
39. Black box
target language literals
• bound to target platform
• no option for MDA friends
• no tooling!
• long turnarounds!
40.
41. reuse target platform
developers know it
libraries
very good tooling
proven
dispersed information
complexity in code generation
hard to built interpreters
42. reuse target platform
developers know it
libraries
very good tooling
proven
dispersed information
complexity in code generation
hard to built interpreters
43. reuse target platform
developers know it
libraries
very good tooling
proven
dispersed information
complexity in code generation
hard to built interpreters
44. reuse target platform
developers know it
libraries
very good tooling
proven
dispersed information
complexity in code generation
hard to built interpreters
45. reuse target platform
developers know it
libraries
very good tooling
proven
dispersed information
complexity in code generation
hard to built interpreters
46. reuse target platform
developers know it
libraries
very good tooling
proven
dispersed information
complexity in code generation
hard to built interpreters
47. reuse target platform
developers know it
libraries
very good tooling
proven
dispersed information
complexity in code generation
hard to built interpreters
48. reuse target platform
developers know it
libraries
very good tooling
proven
dispersed information
complexity in code generation
hard to built interpreters
49. reuse target platform invent expressions
developers know it non-dispersed information
libraries very complex
very good tooling very expensive
relatively low potential for
proven
further abstraction
dispersed information
complexity in code generation
hard to built interpreters
50. reuse target platform invent expressions
developers know it non-dispersed information
libraries very complex
very good tooling very expensive
relatively low potential for
proven
further abstraction
dispersed information
complexity in code generation
hard to built interpreters
51. reuse target platform invent expressions
developers know it non-dispersed information
libraries very complex
very good tooling very expensive
relatively low potential for
proven
further abstraction
dispersed information
complexity in code generation
hard to built interpreters
52. reuse target platform invent expressions
developers know it non-dispersed information
libraries very complex
very good tooling very expensive
relatively low potential for
proven
further abstraction
dispersed information
complexity in code generation
hard to built interpreters
53. reuse target platform invent expressions
developers know it non-dispersed information
libraries very complex
very good tooling very expensive
relatively low potential for
proven
further abstraction
dispersed information
complexity in code generation
hard to built interpreters
56. But what if ...
reuse target platform expression as library
developers know it non-dispersed information
libraries nicer expression language
- closures
very good tooling
- type inference
proven - operator overloading
dispersed information extendable (e.g. custom literals)
complexity in code generation good tooling
hard to built interpreters additional learning curve
57. But what if ...
reuse target platform expression as library
developers know it non-dispersed information
libraries nicer expression language
- closures
very good tooling
- type inference
proven - operator overloading
dispersed information extendable (e.g. custom literals)
complexity in code generation good tooling
hard to built interpreters additional learning curve
58. But what if ...
reuse target platform expression as library
developers know it non-dispersed information
libraries nicer expression language
- closures
very good tooling
- type inference
proven - operator overloading
dispersed information extendable (e.g. custom literals)
complexity in code generation good tooling
hard to built interpreters additional learning curve
59. But what if ...
reuse target platform expression as library
developers know it non-dispersed information
libraries nicer expression language
- closures
very good tooling
- type inference
proven - operator overloading
dispersed information extendable (e.g. custom literals)
complexity in code generation good tooling
hard to built interpreters additional learning curve
60. But what if ...
reuse target platform expression as library
developers know it non-dispersed information
libraries nicer expression language
- closures
very good tooling
- type inference
proven - operator overloading
dispersed information extendable (e.g. custom literals)
complexity in code generation good tooling
hard to built interpreters additional learning curve
61. But what if ...
reuse target platform expression as library
developers know it non-dispersed information
libraries nicer expression language
- closures
very good tooling
- type inference
proven - operator overloading
dispersed information extendable (e.g. custom literals)
complexity in code generation good tooling
hard to built interpreters additional learning curve
64. concrete syntax grammar mixing
abstract syntax meta model reuse
constraints static analysis and validation
execution time compiler and interpreter
development time IDE support
65. concrete syntax grammar mixing
abstract syntax meta model reuse
constraints static analysis and validation
execution time compiler and interpreter
development time IDE support
66. concrete syntax grammar mixing
abstract syntax meta model reuse
constraints static analysis and validation
execution time compiler and interpreter
development time IDE support
67. concrete syntax grammar mixing
abstract syntax meta model reuse
constraints static analysis and validation
execution time compiler and interpreter
development time IDE support
68. concrete syntax grammar mixing
abstract syntax meta model reuse
constraints static analysis and validation
execution time compiler and interpreter
development time IDE support
69. concrete syntax grammar mixing
abstract syntax meta model reuse
constraints static analysis and validation
execution time compiler and interpreter
development time IDE support
70. concrete syntax grammar mixing
abstract syntax meta model reuse
constraints static analysis and validation
execution time compiler and interpreter
development time IDE support
71. concrete syntax grammar mixing
abstract syntax meta model reuse
constraints static analysis and validation
execution time compiler and interpreter
development time IDE support
72. concrete syntax grammar mixing
abstract syntax meta model reuse
constraints static analysis and validation
execution time compiler and interpreter
development time IDE support
73. concrete syntax grammar mixing
abstract syntax meta model reuse
constraints static analysis and validation
execution time compiler and interpreter
development time IDE support
105. Context-aware scanning
can be confusing
import “http://namespace/” as
generate import “http://namespace/” as alias
import “http://namespace/” as generate
import “http://namespace/” as alias
106. Context-aware scanning
can be confusing
Import:
import “http://namespace/” as lias
generate import ort ‘U RI’ as a
imp “http://namespace/” as alias
nerate:
“http://namespace/” s algenerate
Ge import as ias
te name ‘URI’ a as alias
import “http://namespace/”
genera
107. Context-aware scanning
can be confusing
import “http://namespace/” as
generate import “http://namespace/” as alias
import “http://namespace/” as generate
import “http://namespace/” as alias
108. Be cautious!
• be careful with new keywords
• minimize set of terminals
• think about extensibility