471:
83:
is a tool for designing domain-specific languages. It uses projectional editing which allows overcoming the limits of language parsers, and building DSL editors, such as ones with tables and diagrams. It implements language-oriented programming. MPS combines an environment for language definition, a
138:
is an open-source software framework for developing programming languages and domain-specific languages (DSLs). Unlike standard parser generators, Xtext generates not only a parser, but also a class model for the abstract syntax tree. In addition, it provides a fully featured, customizable
144:
Meeduse is an EMF-based framework that allows one to build, prove and animate executable domain-specific languages (xDSLs) using the B Method. The tool embeds ProB, and animator and model-checker of the B
101:
Melange is a language workbench that provides a modular approach for customizing, assembling and integrating multiple domain-specific language (DSL) specifications and implementations.
90:
is an open-source academic language workbench. The
Kermeta workbench uses three different meta-languages: one meta-language for the abstract syntax (aligned with
240:
Feltey, Daniel; Florence, Spencer P.; Knutson, Tim; St-Amour, Vincent; Culpepper, Ryan; Flatt, Matthew; Findler, Robert Bruce; Felleisen, Matthias (2016).
71:
is a cross-platform language development workbench including compiler, JIT compiler, IDE and command-line tools designed to accommodate creating both
508:
365:
Proceedings of the 25th Annual ACM SIGPLAN Conference on Object-Oriented
Programming, Systems, Languages, and Applications, OOPSLA 2010
29:
24:
software development paradigm. A language workbench will typically include tools to support the definition, reuse and composition of
33:
107:. is an open-source language workbench for generating parsers, type checkers, compilers, interpreters, as well as IDE plugins for
537:
155:
68:
21:
532:
527:
170:
116:
95:
542:
501:
72:
50:
25:
75:
and completely new languages with facilities to add new notation, constrain constructs, and create IDE tools.
165:
293:
56:
494:
120:
360:
127:
108:
160:
104:
413:
368:
361:"The Spoofax language workbench: rules for declarative specification of languages and IDEs."
241:
219:
478:
451:
271:
194:
84:
language workbench, and an
Integrated Development Environment (IDE) for such languages.
521:
80:
270:
Tobin-Hochstadt, S.; St-Amour, V.; Culpepper, R.; Flatt, M.; Felleisen, M. (2011).
418:
401:
123:
372:
98:) and one for the behavioral semantics (called the Kermeta Language itself).
44:
470:
55:
Specification of the execution semantics, e.g. through interpretation and
402:"Alliance of Model Driven Engineering with a proof-based Formal Approach"
112:
87:
456:
433:
220:"Language Workbenches: The Killer-App for Domain Specific Languages?"
406:
Innovations in
Systems and Software Engineering (ISSE), NASA Journal
20:
is a tool or set of tools that enables software development in the
135:
317:
91:
386:
345:
32:. Language workbenches were introduced and popularized by
331:
400:
Idani, Akram; Ledru, Yves; Vega, German (December 2020).
482:
49:Specification of the editing environments for the
318:"JetBrains MPS: Domain-Specific Language Creator"
279:Programming Language Design and Implementation
94:); one for the static semantics (aligned with
502:
8:
359:Kats, Lennart C. L.; Visser, Eelco (2010).
213:
211:
188:
186:
509:
495:
43:Specification of the language concepts or
417:
126:for syntax, and formalisms derived from
182:
39:Language workbenches usually support:
7:
467:
465:
30:integrated development environment
14:
249:2016 Language Workbench Challenge
469:
346:"The Spoofax Language Workbench"
218:Fowler, Martin (12 June 2005).
294:"Creating Languages in Racket"
1:
156:Language-oriented programming
22:language-oriented programming
481:. You can help Knowledge by
477:This computing article is a
457:Language Workbench Challenge
171:Category:Language workbench
559:
464:
419:10.1007/s11334-020-00366-3
242:"Languages the Racket Way"
298:Communications of the ACM
73:domain-specific languages
26:domain-specific languages
272:"Languages as Libraries"
51:domain-specific language
373:10.1145/1869459.1869497
292:Flatt, Matthew (2012).
166:Intentional programming
538:Software development
28:together with their
195:"LanguageWorkbench"
533:2005 introductions
528:Language workbench
452:Language Workbench
139:Eclipse-based IDE.
18:language workbench
490:
489:
161:Compiler-compiler
550:
511:
504:
497:
473:
466:
438:
437:
430:
424:
423:
421:
397:
391:
390:
383:
377:
376:
356:
350:
349:
342:
336:
335:
328:
322:
321:
314:
308:
307:
305:
304:
289:
283:
282:
276:
267:
261:
260:
258:
256:
246:
237:
231:
230:
228:
226:
215:
206:
205:
203:
201:
193:Fowler, Martin.
190:
558:
557:
553:
552:
551:
549:
548:
547:
543:Computing stubs
518:
517:
516:
515:
462:
450:Martin Fowler,
447:
442:
441:
432:
431:
427:
399:
398:
394:
385:
384:
380:
358:
357:
353:
344:
343:
339:
330:
329:
325:
316:
315:
311:
302:
300:
291:
290:
286:
274:
269:
268:
264:
254:
252:
244:
239:
238:
234:
224:
222:
217:
216:
209:
199:
197:
192:
191:
184:
179:
152:
65:
57:code generation
12:
11:
5:
556:
554:
546:
545:
540:
535:
530:
520:
519:
514:
513:
506:
499:
491:
488:
487:
474:
460:
459:
454:
446:
445:External links
443:
440:
439:
425:
412:(3): 289–307.
392:
378:
351:
337:
323:
309:
284:
262:
232:
207:
181:
180:
178:
175:
174:
173:
168:
163:
158:
151:
148:
147:
146:
141:
140:
132:
131:
130:for semantics.
102:
99:
85:
77:
76:
64:
61:
60:
59:
53:
47:
13:
10:
9:
6:
4:
3:
2:
555:
544:
541:
539:
536:
534:
531:
529:
526:
525:
523:
512:
507:
505:
500:
498:
493:
492:
486:
484:
480:
475:
472:
468:
463:
458:
455:
453:
449:
448:
444:
435:
429:
426:
420:
415:
411:
407:
403:
396:
393:
388:
382:
379:
374:
370:
366:
362:
355:
352:
347:
341:
338:
333:
327:
324:
319:
313:
310:
299:
295:
288:
285:
280:
273:
266:
263:
250:
243:
236:
233:
221:
214:
212:
208:
196:
189:
187:
183:
176:
172:
169:
167:
164:
162:
159:
157:
154:
153:
149:
143:
142:
137:
134:
133:
129:
125:
122:
118:
114:
110:
106:
103:
100:
97:
93:
89:
86:
82:
81:JetBrains MPS
79:
78:
74:
70:
67:
66:
62:
58:
54:
52:
48:
46:
42:
41:
40:
37:
35:
34:Martin Fowler
31:
27:
23:
19:
483:expanding it
476:
461:
428:
409:
405:
395:
381:
364:
354:
340:
326:
312:
301:. Retrieved
297:
287:
278:
265:
253:. Retrieved
248:
235:
223:. Retrieved
198:. Retrieved
38:
17:
15:
128:Stratego/XT
121:scannerless
522:Categories
303:2012-04-08
177:References
124:GLR parser
115:. It uses
434:"Meeduse"
332:"Melange"
45:metamodel
36:in 2005.
225:14 April
200:14 April
150:See also
113:IntelliJ
63:Examples
387:"Xtext"
145:Method.
109:Eclipse
105:Spoofax
88:Kermeta
255:9 June
119:and a
69:Racket
275:(PDF)
245:(PDF)
136:Xtext
479:stub
257:2019
251:(65)
227:2015
202:2015
111:and
92:Emof
414:doi
369:doi
117:SDF
96:OCL
524::
408:.
404:.
367:.
363:.
296:.
277:.
247:.
210:^
185:^
16:A
510:e
503:t
496:v
485:.
436:.
422:.
416::
410:6
389:.
375:.
371::
348:.
334:.
320:.
306:.
281:.
259:.
229:.
204:.
Text is available under the Creative Commons Attribution-ShareAlike License. Additional terms may apply.