victorfrye / microsoftgraveyard

🪦 The virtual graveyard for remembering those killed by Microsoft
https://microsoftgraveyard.com
MIT License
92 stars 6 forks source link

Oslo Platform Language Workbench #73

Closed jreuben11 closed 4 months ago

jreuben11 commented 5 months ago

Olso was a Language Workbench with three main components:

  1. a modeling language (code-named M) for textual DSLs
  2. a design surface (code-named Quadrant) for graphical DSLs
  3. a repository that stored semantic models in a relational database.

The textual language environment was bootstrapped and provided three base languages:

  1. MGrammar: defined grammars for Syntax Directed Translation.
  2. MSchema: defined schemas for a Semantic Model
  3. MGraph: a textual language for representing the population of a Semantic Model. So while MSchema represented types, MGraph represents instances.

You could represent any model in MGraph. With MGrammar you could define a grammar for your own DSL which allowed you to write scripts in your own DSL and build a parser to translate them into something more useful. There was a grammar compiler (called mg) that took an input file in MGrammar and compiled it into an .mgx file. Oslo's tools compiled the grammar into a binary form of the parse rules. There's then a separate tool (mgx) that could take an input script and a compiled grammar and outputs the MGraph representation of the syntax tree of the input script. you could take the compiled grammar and add it to your own code as a resource. With this you can call a general parser mechanism that Oslo provided as a .NET framework, supply the reference to the compiled grammar file, and generate an in-memory syntax tree. Yould would then write code to walk the tree and populate a semantic model defined with MSchema. Once you've done this you could easily take that model and store it in the repository so that it can accessed via SQL tools. T You could also manipulate the semantic model instance with Quadrant. You could define a graphical notation for a schema and then the system projected the model instance creating a diagram using that notation.
links:

victorfrye commented 4 months ago

Hey! So, like #77 and #80, Oslo as described here seems to be a suite of products and an unreleased project. One reference article I found here and here suggests the pieces of Oslo started to fall apart before any release but that it also may have evolved and shipped with other products. Maybe Quadrant is one of the actual products and that should be included in the graveyard? To me, there is still a vagueness in what is Oslo and is whether or not it is a distinct product, especially one with nostalgia that must be included. Let me know your thoughts or if you have additional insights. Thanks.