Successfully reported this slideshow.
We use your LinkedIn profile and activity data to personalize ads and to show you more relevant ads. You can change your ad preferences anytime.

Language Workbench Language Wheel

264 views

Published on

A short presentation about language workbench developed by M. Barash (http://dsl-course.org)

Published in: Software
  • Be the first to comment

  • Be the first to like this

Language Workbench Language Wheel

  1. 1. Language Wheel identifierbuilt-in concepts if language “front-end” workbench predefined concepts custom concepts expression statement idea define languages using a wizard-like interface for class … type system web-based by Mikhail Barash, March 2018 flavor affects all aspects of a language 50+ concepts several type systems can be defined for a language Language Wheel  Xtext MPS validations, type system, code generation, … 1 … strive to separate language concepts and “technical concepts” “illustrative” influenced by XtextMPS Cedalion Nemerle only 1 active though
  2. 2. Language Wheel abstract & concrete syntax by Mikhail Barash, March 2018 2 represented as a “card” concept encapsulates both abstract and concrete syntax similar to Xtext no clear separation between language aspects less abstract way to define a language helps achieving “illustrative” way to define a language concept features projection feature name type concept projection textual only minimally required information about a child no cardinality, … translation to target language illustrative type system “constraints” on features grammar rule and features formatting if ( 2+2>5 ) then { … rather than if ( condition ) { … …
  3. 3. Language Wheel concept card by Mikhail Barash, March 2018 3 int x ; name undeclared ident type: integer (fixed) name: ident; private int x; IntegerField abstract syntax = list of features projection translation to target language name x = 2*3+y; assignee existing ident type: type2 to be computed assignee: ident; value: expr; x = 2*3+y; AssignmentStatement value expr type: type1 should be same as type2 ident expr à la Xtend template expressions edited in projectional style MyLanguage concepts predefined projections for predefined concepts available

×