SlideShare une entreprise Scribd logo
1  sur  21
Télécharger pour lire hors ligne
Motivation
     Language Factories
  Language Components
            Case Study
   The Research Agenda




     Language Factories

  Tony Clark1                Laurence Tratt2

             1 School of Computing

            Thames Valley University
                  London, UK
         2 Bournemouth       University, UK


                Onward! 2009



Tony Clark, Laurence Tratt     Language Factories
Motivation
                        Language Factories
                     Language Components
                               Case Study
                      The Research Agenda


Outline


  1   Motivation

  2   Language Factories

  3   Language Components

  4   Case Study

  5   The Research Agenda



                   Tony Clark, Laurence Tratt   Language Factories
Motivation
                     Language Factories
                  Language Components
                            Case Study
                   The Research Agenda


Language Horticulture


      ...a good programmer in these times does not just
      write programs. A good programmer builds a working
      vocabulary. In other words, a good programmer does
      language design, though not from scratch, but by
      building on the frame of a base language.
      ...from now on, a main goal in designing a language
      should be to plan for growth.

  Guy L. Steele, Jr. Growing a language, 1998




                Tony Clark, Laurence Tratt   Language Factories
Motivation
                      Language Factories
                   Language Components
                             Case Study
                    The Research Agenda


Growing a Language

                                              Large structured languages grow...




  From little acorns...




                 Tony Clark, Laurence Tratt     Language Factories
Motivation
                      Language Factories
                   Language Components
                             Case Study
                    The Research Agenda


Growing a Language

                                              Large structured languages grow...




  From little acorns...




                 Tony Clark, Laurence Tratt     Language Factories
Motivation
                   Language Factories
                Language Components
                          Case Study
                 The Research Agenda


But It Takes Too Long and is Difficult to Control




              Tony Clark, Laurence Tratt   Language Factories
Motivation
                     Language Factories
                  Language Components
                            Case Study
                   The Research Agenda


Defining Languages is Hard



      Lots of interest in DSLs: malleable
      syntax and semantics.
      Using GPLs to implement DSLs is not
      the best way.
      DSL definition is a specialist activity.
      DSLs are a desire lacking a philosophy.




                Tony Clark, Laurence Tratt   Language Factories
Motivation
                     Language Factories
                  Language Components
                            Case Study
                   The Research Agenda


Current Situation


     Languages are difficult to evolve.
     Languages evolve slowly: how long between major
     language versions?
     Technologies are evolving to help with this:
         Stratego
         XMF
         Converge
         MPS
         Oslo
     More needs to be done...


                Tony Clark, Laurence Tratt   Language Factories
Motivation
                      Language Factories
                   Language Components
                             Case Study
                    The Research Agenda


How Are Software Systems Designed?



      Components
      Reuse
      Interfaces
      Extension
      Change Analysis




               Tony Clark, Laurence Tratt   Language Factories
Motivation
                    Language Factories
                 Language Components
                           Case Study
                  The Research Agenda


Language Factories - Research Agenda

     A component-based approach to the definition and
     construction of languages, tools.
     Language Factories aim to support:
         Reuse of common language components.
         Agile language engineering.
         Language refactoring.
         Language analysis including impact analysis.
     Product Lines for Languages
     Users:
         Language Factory Developers
         Language Factory Users
         Application Developers
         Application Users

               Tony Clark, Laurence Tratt   Language Factories
Motivation
                     Language Factories
                  Language Components
                            Case Study
                   The Research Agenda


Realising Language Factories


     Different formalisms, tools, degrees of automation.
     Varying levels of precision:
         Virtual LFs: designed and partly implemented.
         Idealised LFs: language workbenches (Martin Fowler).
         Many shared of grey in between (e.g. componentized
         abstract syntax).
     Can be realised with current languages (with
     compromises).




                Tony Clark, Laurence Tratt   Language Factories
Motivation
                     Language Factories
                  Language Components
                            Case Study
                   The Research Agenda


Language Components
  Abstract Syntax              Single definition of a data type.
  Concrete Syntax(es)          e.g. a context free grammar.
  Syntactic Mapping            Concrete syntax(es) to abstract syntax.
  Semantic Aspect(s)           Language meaning:
                                        Operational.
                                        Denotational.
                                        Types.
                                        Code Generation.
                                        Serialization.
  Tooling                      Composable editors, checkers, etc.
  Constraints                  Conditions on language use.
  Interfaces                   What is offered and what is required?
                Tony Clark, Laurence Tratt   Language Factories
Motivation
                  Language Factories
               Language Components
                         Case Study
                The Research Agenda


An Example Language

  component Landing_gear(height:int, speed:float) {
    stm {
      state Moving_Up
      state Moving_Down
      state Deployed
      state Stowed
      transition up from Deployed to Moving_Up
        height_change[height>500ft and speed>100kn/s]
      transition down from Stowed to Moving_Down
        deploy
    }
  }

             Tony Clark, Laurence Tratt   Language Factories
Motivation
                    Language Factories
                 Language Components
                           Case Study
                  The Research Agenda


A Language Is Composed of Parts
   Given components:                                    @
                                                      / 
      Expr                                           /     
      Measurements                          ACComponent     @
                                                          / 
      StateMachine(Guards)                               /      
                                              StateMachine       +
      ACComponent(Body)                                        / 
                                                              /    
   Can combine and recombine:                           Expr       Measurement

                                                        @
                                                      / 
                                                     /     
                                            ACComponent     @
                                                          / 
                                                         /    
                                              StateMachine     Expr


               Tony Clark, Laurence Tratt   Language Factories
Motivation
                     Language Factories
                  Language Components
                            Case Study
                   The Research Agenda


A Reusable Expression Language

  lang Expr:
    ast: Var(Str) | Add(Expr, Expr)                 | Num(Int)
    grammar:
      expr -> name:Id                               <Var(name)>
             | lhs:Expr ’+’ rhs:Expr                <Add(lhs, rhs)>
             | num:Int                              <Num(num)>

    semantics java:
      Var(x)      -> [j| ${x} |]
      Add(x, y)   -> [j| ${java(x)}.plus(${java(y)}) |]
      Num(x)      -> [j| new ExprInt(${x}) |]
    constraints:
      exists_class(ExprInt)
      exists_class(Expr)
      exists_static_method(Expr,plus)
  end

                Tony Clark, Laurence Tratt   Language Factories
Motivation
                     Language Factories
                  Language Components
                            Case Study
                   The Research Agenda


A Reusable Expression Language

  lang Expr:
    ast: Var(Str) | Add(Expr, Expr)                 | Num(Int)
    grammar:
      expr -> name:Id                               <Var(name)>
             | lhs:Expr ’+’ rhs:Expr                <Add(lhs, rhs)>
             | num:Int                              <Num(num)>

    semantics java:
      Var(x)      -> [j| ${x} |]
      Add(x, y)   -> [j| ${java(x)}.plus(${java(y)}) |]
      Num(x)      -> [j| new ExprInt(${x}) |]
    constraints:
      exists_class(ExprInt)
      exists_class(Expr)
      exists_static_method(Expr,plus)
  end

                Tony Clark, Laurence Tratt   Language Factories
Motivation
                      Language Factories
                   Language Components
                             Case Study
                    The Research Agenda


A Reusable Expression Language
  lang Expr:
    ast: Var(Str) | Add(Expr, Expr) | Num(Int)
    grammar:
      expr -> name:Id                             <Var(name)>
             | lhs:Expr ’+’ rhs:Expr <Add(lhs, rhs)>
             | num:Int                            <Num(num)>
    semantics eval(env):
        Var(x)       -> lookup(env, x)
        Add(x, y) -> eval(x, env) + eval(y, env)
        Num(x)       -> x
    semantics java:
      Var(x)         -> [j| ${x} |]
      Add(x, y)      -> [j| ${java(x)}.plus(${java(y)}) |]
      Num(x)         -> [j| new ExprInt(${x}) |]
    constraints:
      exists_class(ExprInt)
      exists_class(Expr)
      exists_static_method(Expr,plus) Factories
                 Tony Clark, Laurence Tratt Language
Motivation
                     Language Factories
                  Language Components
                            Case Study
                   The Research Agenda


A Reusable Expression Language

  lang Expr:
    ast: Var(Str) | Add(Expr, Expr)                 | Num(Int)
    grammar:
      expr -> name:Id                               <Var(name)>
             | lhs:Expr ’+’ rhs:Expr                <Add(lhs, rhs)>
             | num:Int                              <Num(num)>

    semantics java:
      Var(x)      -> [j| ${x} |]
      Add(x, y)   -> [j| ${java(x)}.plus(${java(y)}) |]
      Num(x)      -> [j| new ExprInt(${x}) |]
    constraints:
      exists_class(ExprInt)
      exists_class(Expr)
      exists_static_method(Expr,plus)
  end

                Tony Clark, Laurence Tratt   Language Factories
Motivation
                     Language Factories
                  Language Components
                            Case Study
                   The Research Agenda


A Reusable Expression Language

  lang Expr:
    ast: Var(Str) | Add(Expr, Expr)                 | Num(Int)
    grammar:
      expr -> name:Id                               <Var(name)>
             | lhs:Expr ’+’ rhs:Expr                <Add(lhs, rhs)>
             | num:Int                              <Num(num)>

    semantics java:
      Var(x)      -> [j| ${x} |]
      Add(x, y)   -> [j| ${java(x)}.plus(${java(y)}) |]
      Num(x)      -> [j| new ExprInt(${x}) |]
    constraints:
      exists_class(ExprInt)
      exists_class(Expr)
      exists_static_method(Expr,plus)
  end

                Tony Clark, Laurence Tratt   Language Factories
Motivation
                    Language Factories
                 Language Components
                           Case Study
                  The Research Agenda


Representing Measurements

  lang Measurement:
    ast: Ft(Float) | KnPerH(Float) | MiPerH(Float)
    grammar:
      measure -> dst:Float ’ft’    <Ft(dst)
               | dst:Float ’kn/h’ <KnPerH(dst)>
               | dst:Float ’mph’ <MiPerH(dst)>
    semantics java:
      Ft(x)      -> [j| new ExprFeet(${x}) |]
      KnPerS(x) -> [j| new ExprKnPerH(${x}) |]
      MiPerS(x) ->
        [j| new ExprKnPerH(${x*0.869}) |]
    constraints:
        exists_class(ExprFeet)
        exists_class(ExprKnPerH)
  end

               Tony Clark, Laurence Tratt   Language Factories
Motivation
                     Language Factories
                  Language Components
                            Case Study
                   The Research Agenda


Language Factories: The Research Agenda


     Need syntax reuse and composition.
     Need semantics (operational, translational, ...) reuse and
     composition.
     Need composable type systems.
     Need composable tools.
     Need language templates (components with parameters).
     Need LF meta-languages and type systems.
     Need LF workbenches.



                Tony Clark, Laurence Tratt   Language Factories

Contenu connexe

Tendances

Native Language Identification - Brief review to the state of the art
Native Language Identification - Brief review to the state of the artNative Language Identification - Brief review to the state of the art
Native Language Identification - Brief review to the state of the artFrancisco Manuel Rangel Pardo
 
Contextual Analysis for Middle Eastern Languages with Hidden Markov Models
Contextual Analysis for Middle Eastern Languages with Hidden Markov ModelsContextual Analysis for Middle Eastern Languages with Hidden Markov Models
Contextual Analysis for Middle Eastern Languages with Hidden Markov Modelsijnlc
 
A ROBUST THREE-STAGE HYBRID FRAMEWORK FOR ENGLISH TO BANGLA TRANSLITERATION
A ROBUST THREE-STAGE HYBRID FRAMEWORK FOR ENGLISH TO BANGLA TRANSLITERATIONA ROBUST THREE-STAGE HYBRID FRAMEWORK FOR ENGLISH TO BANGLA TRANSLITERATION
A ROBUST THREE-STAGE HYBRID FRAMEWORK FOR ENGLISH TO BANGLA TRANSLITERATIONkevig
 
Division_3_Fianna_O'Brien
Division_3_Fianna_O'BrienDivision_3_Fianna_O'Brien
Division_3_Fianna_O'BrienFianna O'Brien
 
BOOTSTRAPPING METHOD FOR DEVELOPING PART-OF-SPEECH TAGGED CORPUS IN LOW RESOU...
BOOTSTRAPPING METHOD FOR DEVELOPING PART-OF-SPEECH TAGGED CORPUS IN LOW RESOU...BOOTSTRAPPING METHOD FOR DEVELOPING PART-OF-SPEECH TAGGED CORPUS IN LOW RESOU...
BOOTSTRAPPING METHOD FOR DEVELOPING PART-OF-SPEECH TAGGED CORPUS IN LOW RESOU...ijnlc
 
An Extensible Multilingual Open Source Lemmatizer
An Extensible Multilingual Open Source LemmatizerAn Extensible Multilingual Open Source Lemmatizer
An Extensible Multilingual Open Source LemmatizerCOMRADES project
 
Efficient Speech Emotion Recognition using SVM and Decision Trees
Efficient Speech Emotion Recognition using SVM and Decision TreesEfficient Speech Emotion Recognition using SVM and Decision Trees
Efficient Speech Emotion Recognition using SVM and Decision TreesIRJET Journal
 
NLP pipeline in machine translation
NLP pipeline in machine translationNLP pipeline in machine translation
NLP pipeline in machine translationMarcis Pinnis
 
K AMBA P ART O F S PEECH T AGGER U SING M EMORY B ASED A PPROACH
K AMBA  P ART  O F  S PEECH  T AGGER  U SING  M EMORY  B ASED  A PPROACHK AMBA  P ART  O F  S PEECH  T AGGER  U SING  M EMORY  B ASED  A PPROACH
K AMBA P ART O F S PEECH T AGGER U SING M EMORY B ASED A PPROACHijnlc
 
IRJET- Text to Speech Synthesis for Hindi Language using Festival Framework
IRJET- Text to Speech Synthesis for Hindi Language using Festival FrameworkIRJET- Text to Speech Synthesis for Hindi Language using Festival Framework
IRJET- Text to Speech Synthesis for Hindi Language using Festival FrameworkIRJET Journal
 
Realization of natural language interfaces using
Realization of natural language interfaces usingRealization of natural language interfaces using
Realization of natural language interfaces usingunyil96
 
Presentation劉思竹v4.2 10122608
Presentation劉思竹v4.2 10122608Presentation劉思竹v4.2 10122608
Presentation劉思竹v4.2 10122608思竹 劉
 
Computational linguistics
Computational linguisticsComputational linguistics
Computational linguisticsshrey bhate
 
Hidden markov model based part of speech tagger for sinhala language
Hidden markov model based part of speech tagger for sinhala languageHidden markov model based part of speech tagger for sinhala language
Hidden markov model based part of speech tagger for sinhala languageijnlc
 
Development of text to speech system for yoruba language
Development of text to speech system for yoruba languageDevelopment of text to speech system for yoruba language
Development of text to speech system for yoruba languageAlexander Decker
 

Tendances (19)

Native Language Identification - Brief review to the state of the art
Native Language Identification - Brief review to the state of the artNative Language Identification - Brief review to the state of the art
Native Language Identification - Brief review to the state of the art
 
Contextual Analysis for Middle Eastern Languages with Hidden Markov Models
Contextual Analysis for Middle Eastern Languages with Hidden Markov ModelsContextual Analysis for Middle Eastern Languages with Hidden Markov Models
Contextual Analysis for Middle Eastern Languages with Hidden Markov Models
 
A ROBUST THREE-STAGE HYBRID FRAMEWORK FOR ENGLISH TO BANGLA TRANSLITERATION
A ROBUST THREE-STAGE HYBRID FRAMEWORK FOR ENGLISH TO BANGLA TRANSLITERATIONA ROBUST THREE-STAGE HYBRID FRAMEWORK FOR ENGLISH TO BANGLA TRANSLITERATION
A ROBUST THREE-STAGE HYBRID FRAMEWORK FOR ENGLISH TO BANGLA TRANSLITERATION
 
Poster @ enetCollect CA MC meeting in Iasi, Romania
Poster @ enetCollect CA MC meeting in Iasi, Romania Poster @ enetCollect CA MC meeting in Iasi, Romania
Poster @ enetCollect CA MC meeting in Iasi, Romania
 
Division_3_Fianna_O'Brien
Division_3_Fianna_O'BrienDivision_3_Fianna_O'Brien
Division_3_Fianna_O'Brien
 
Anabela Barreiro - Alinhamentos
Anabela Barreiro - AlinhamentosAnabela Barreiro - Alinhamentos
Anabela Barreiro - Alinhamentos
 
Cross language alignments - challenges guidelines and gold sets
Cross language alignments - challenges guidelines and gold setsCross language alignments - challenges guidelines and gold sets
Cross language alignments - challenges guidelines and gold sets
 
BOOTSTRAPPING METHOD FOR DEVELOPING PART-OF-SPEECH TAGGED CORPUS IN LOW RESOU...
BOOTSTRAPPING METHOD FOR DEVELOPING PART-OF-SPEECH TAGGED CORPUS IN LOW RESOU...BOOTSTRAPPING METHOD FOR DEVELOPING PART-OF-SPEECH TAGGED CORPUS IN LOW RESOU...
BOOTSTRAPPING METHOD FOR DEVELOPING PART-OF-SPEECH TAGGED CORPUS IN LOW RESOU...
 
An Extensible Multilingual Open Source Lemmatizer
An Extensible Multilingual Open Source LemmatizerAn Extensible Multilingual Open Source Lemmatizer
An Extensible Multilingual Open Source Lemmatizer
 
Efficient Speech Emotion Recognition using SVM and Decision Trees
Efficient Speech Emotion Recognition using SVM and Decision TreesEfficient Speech Emotion Recognition using SVM and Decision Trees
Efficient Speech Emotion Recognition using SVM and Decision Trees
 
FIRE2014_IIT-P
FIRE2014_IIT-PFIRE2014_IIT-P
FIRE2014_IIT-P
 
NLP pipeline in machine translation
NLP pipeline in machine translationNLP pipeline in machine translation
NLP pipeline in machine translation
 
K AMBA P ART O F S PEECH T AGGER U SING M EMORY B ASED A PPROACH
K AMBA  P ART  O F  S PEECH  T AGGER  U SING  M EMORY  B ASED  A PPROACHK AMBA  P ART  O F  S PEECH  T AGGER  U SING  M EMORY  B ASED  A PPROACH
K AMBA P ART O F S PEECH T AGGER U SING M EMORY B ASED A PPROACH
 
IRJET- Text to Speech Synthesis for Hindi Language using Festival Framework
IRJET- Text to Speech Synthesis for Hindi Language using Festival FrameworkIRJET- Text to Speech Synthesis for Hindi Language using Festival Framework
IRJET- Text to Speech Synthesis for Hindi Language using Festival Framework
 
Realization of natural language interfaces using
Realization of natural language interfaces usingRealization of natural language interfaces using
Realization of natural language interfaces using
 
Presentation劉思竹v4.2 10122608
Presentation劉思竹v4.2 10122608Presentation劉思竹v4.2 10122608
Presentation劉思竹v4.2 10122608
 
Computational linguistics
Computational linguisticsComputational linguistics
Computational linguistics
 
Hidden markov model based part of speech tagger for sinhala language
Hidden markov model based part of speech tagger for sinhala languageHidden markov model based part of speech tagger for sinhala language
Hidden markov model based part of speech tagger for sinhala language
 
Development of text to speech system for yoruba language
Development of text to speech system for yoruba languageDevelopment of text to speech system for yoruba language
Development of text to speech system for yoruba language
 

En vedette

Leap isec 2011
Leap isec 2011Leap isec 2011
Leap isec 2011ClarkTony
 
Kiss at oopsla 09
Kiss at oopsla 09Kiss at oopsla 09
Kiss at oopsla 09ClarkTony
 
Filmstrip testing
Filmstrip testingFilmstrip testing
Filmstrip testingClarkTony
 
Dsl tutorial
Dsl tutorialDsl tutorial
Dsl tutorialClarkTony
 
Kings 120711
Kings 120711Kings 120711
Kings 120711ClarkTony
 
Patterns 200711
Patterns 200711Patterns 200711
Patterns 200711ClarkTony
 
Dsl overview
Dsl overviewDsl overview
Dsl overviewClarkTony
 

En vedette (9)

Leap isec 2011
Leap isec 2011Leap isec 2011
Leap isec 2011
 
Kiss at oopsla 09
Kiss at oopsla 09Kiss at oopsla 09
Kiss at oopsla 09
 
Filmstrip testing
Filmstrip testingFilmstrip testing
Filmstrip testing
 
Dsl tutorial
Dsl tutorialDsl tutorial
Dsl tutorial
 
Hcse pres
Hcse presHcse pres
Hcse pres
 
Ast 09
Ast 09Ast 09
Ast 09
 
Kings 120711
Kings 120711Kings 120711
Kings 120711
 
Patterns 200711
Patterns 200711Patterns 200711
Patterns 200711
 
Dsl overview
Dsl overviewDsl overview
Dsl overview
 

Similaire à Onward presentation.en

Programming language design and implemenation
Programming language design and implemenationProgramming language design and implemenation
Programming language design and implemenationAshwini Awatare
 
Role of language engineering to preserve endangered languages
Role of language engineering to preserve endangered languagesRole of language engineering to preserve endangered languages
Role of language engineering to preserve endangered languagesDr. Amit Kumar Jha
 
Computational linguistics
Computational linguisticsComputational linguistics
Computational linguisticsAdnanBaloch15
 
The Distributed Ontology Language (DOL): Use Cases, Syntax, and Extensibility
The Distributed Ontology Language (DOL): Use Cases, Syntax, and ExtensibilityThe Distributed Ontology Language (DOL): Use Cases, Syntax, and Extensibility
The Distributed Ontology Language (DOL): Use Cases, Syntax, and ExtensibilityChristoph Lange
 
NLP Deep Learning with Tensorflow
NLP Deep Learning with TensorflowNLP Deep Learning with Tensorflow
NLP Deep Learning with Tensorflowseungwoo kim
 
An expert system for automatic reading of a text written in standard arabic
An expert system for automatic reading of a text written in standard arabicAn expert system for automatic reading of a text written in standard arabic
An expert system for automatic reading of a text written in standard arabicijnlc
 
Implementation of Marathi Language Speech Databases for Large Dictionary
Implementation of Marathi Language Speech Databases for Large DictionaryImplementation of Marathi Language Speech Databases for Large Dictionary
Implementation of Marathi Language Speech Databases for Large Dictionaryiosrjce
 
G2 pil a grapheme to-phoneme conversion tool for the italian language
G2 pil a grapheme to-phoneme conversion tool for the italian languageG2 pil a grapheme to-phoneme conversion tool for the italian language
G2 pil a grapheme to-phoneme conversion tool for the italian languageijnlc
 
Natural Language Processing (NLP).pptx
Natural Language Processing (NLP).pptxNatural Language Processing (NLP).pptx
Natural Language Processing (NLP).pptxSHIBDASDUTTA
 
Maintenance of Dynamically vs. Statically typed Languages
Maintenance of Dynamically vs. Statically typed LanguagesMaintenance of Dynamically vs. Statically typed Languages
Maintenance of Dynamically vs. Statically typed LanguagesAmin Bandeali
 
Corpus study design
Corpus study designCorpus study design
Corpus study designbikashtaly
 
Natural language processing (nlp)
Natural language processing (nlp)Natural language processing (nlp)
Natural language processing (nlp)Kuppusamy P
 
Implementation of English-Text to Marathi-Speech (ETMS) Synthesizer
Implementation of English-Text to Marathi-Speech (ETMS) SynthesizerImplementation of English-Text to Marathi-Speech (ETMS) Synthesizer
Implementation of English-Text to Marathi-Speech (ETMS) SynthesizerIOSR Journals
 
International Journal on Natural Language Computing (IJNLC) Vol. 4, No.2,Apri...
International Journal on Natural Language Computing (IJNLC) Vol. 4, No.2,Apri...International Journal on Natural Language Computing (IJNLC) Vol. 4, No.2,Apri...
International Journal on Natural Language Computing (IJNLC) Vol. 4, No.2,Apri...ijnlc
 

Similaire à Onward presentation.en (20)

**JUNK** (no subject)
**JUNK** (no subject)**JUNK** (no subject)
**JUNK** (no subject)
 
Programming language design and implemenation
Programming language design and implemenationProgramming language design and implemenation
Programming language design and implemenation
 
Role of language engineering to preserve endangered languages
Role of language engineering to preserve endangered languagesRole of language engineering to preserve endangered languages
Role of language engineering to preserve endangered languages
 
Computational linguistics
Computational linguisticsComputational linguistics
Computational linguistics
 
The Distributed Ontology Language (DOL): Use Cases, Syntax, and Extensibility
The Distributed Ontology Language (DOL): Use Cases, Syntax, and ExtensibilityThe Distributed Ontology Language (DOL): Use Cases, Syntax, and Extensibility
The Distributed Ontology Language (DOL): Use Cases, Syntax, and Extensibility
 
NLP Deep Learning with Tensorflow
NLP Deep Learning with TensorflowNLP Deep Learning with Tensorflow
NLP Deep Learning with Tensorflow
 
An expert system for automatic reading of a text written in standard arabic
An expert system for automatic reading of a text written in standard arabicAn expert system for automatic reading of a text written in standard arabic
An expert system for automatic reading of a text written in standard arabic
 
Implementation of Marathi Language Speech Databases for Large Dictionary
Implementation of Marathi Language Speech Databases for Large DictionaryImplementation of Marathi Language Speech Databases for Large Dictionary
Implementation of Marathi Language Speech Databases for Large Dictionary
 
G2 pil a grapheme to-phoneme conversion tool for the italian language
G2 pil a grapheme to-phoneme conversion tool for the italian languageG2 pil a grapheme to-phoneme conversion tool for the italian language
G2 pil a grapheme to-phoneme conversion tool for the italian language
 
Natural Language Processing (NLP).pptx
Natural Language Processing (NLP).pptxNatural Language Processing (NLP).pptx
Natural Language Processing (NLP).pptx
 
Nlp (1)
Nlp (1)Nlp (1)
Nlp (1)
 
Maintenance of Dynamically vs. Statically typed Languages
Maintenance of Dynamically vs. Statically typed LanguagesMaintenance of Dynamically vs. Statically typed Languages
Maintenance of Dynamically vs. Statically typed Languages
 
Speech-Recognition.pptx
Speech-Recognition.pptxSpeech-Recognition.pptx
Speech-Recognition.pptx
 
Corpus study design
Corpus study designCorpus study design
Corpus study design
 
Programing Language
Programing LanguagePrograming Language
Programing Language
 
Natural language processing (nlp)
Natural language processing (nlp)Natural language processing (nlp)
Natural language processing (nlp)
 
F017163443
F017163443F017163443
F017163443
 
Implementation of English-Text to Marathi-Speech (ETMS) Synthesizer
Implementation of English-Text to Marathi-Speech (ETMS) SynthesizerImplementation of English-Text to Marathi-Speech (ETMS) Synthesizer
Implementation of English-Text to Marathi-Speech (ETMS) Synthesizer
 
International Journal on Natural Language Computing (IJNLC) Vol. 4, No.2,Apri...
International Journal on Natural Language Computing (IJNLC) Vol. 4, No.2,Apri...International Journal on Natural Language Computing (IJNLC) Vol. 4, No.2,Apri...
International Journal on Natural Language Computing (IJNLC) Vol. 4, No.2,Apri...
 
D3 dhanalakshmi
D3 dhanalakshmiD3 dhanalakshmi
D3 dhanalakshmi
 

Plus de ClarkTony

The Uncertain Enterprise
The Uncertain EnterpriseThe Uncertain Enterprise
The Uncertain EnterpriseClarkTony
 
Actors for Behavioural Simulation
Actors for Behavioural SimulationActors for Behavioural Simulation
Actors for Behavioural SimulationClarkTony
 
Context-Aware Content-Centric Collaborative Workflow Management for Mobile De...
Context-Aware Content-Centric Collaborative Workflow Management for Mobile De...Context-Aware Content-Centric Collaborative Workflow Management for Mobile De...
Context-Aware Content-Centric Collaborative Workflow Management for Mobile De...ClarkTony
 
LEAP A Language for Architecture Design, Simulation and Analysis
LEAP A Language for Architecture Design, Simulation and AnalysisLEAP A Language for Architecture Design, Simulation and Analysis
LEAP A Language for Architecture Design, Simulation and AnalysisClarkTony
 
A Common Basis for Modelling Service-Oriented and Event-Driven Architecture
A Common Basis for Modelling Service-Oriented and Event-Driven ArchitectureA Common Basis for Modelling Service-Oriented and Event-Driven Architecture
A Common Basis for Modelling Service-Oriented and Event-Driven ArchitectureClarkTony
 
Context Aware Reactive Applications
Context Aware Reactive ApplicationsContext Aware Reactive Applications
Context Aware Reactive ApplicationsClarkTony
 
Model Slicing
Model SlicingModel Slicing
Model SlicingClarkTony
 
Iswim for testing
Iswim for testingIswim for testing
Iswim for testingClarkTony
 
Iswim for testing
Iswim for testingIswim for testing
Iswim for testingClarkTony
 
Mcms and ids sig
Mcms and ids sigMcms and ids sig
Mcms and ids sigClarkTony
 
Reverse engineering and theory building v3
Reverse engineering and theory building v3Reverse engineering and theory building v3
Reverse engineering and theory building v3ClarkTony
 
Formalizing homogeneous language embeddings
Formalizing homogeneous language embeddingsFormalizing homogeneous language embeddings
Formalizing homogeneous language embeddingsClarkTony
 
Dsm as theory building
Dsm as theory buildingDsm as theory building
Dsm as theory buildingClarkTony
 
Code gen 09 kiss results
Code gen 09   kiss resultsCode gen 09   kiss results
Code gen 09 kiss resultsClarkTony
 
Iswim for testing
Iswim for testingIswim for testing
Iswim for testingClarkTony
 

Plus de ClarkTony (19)

The Uncertain Enterprise
The Uncertain EnterpriseThe Uncertain Enterprise
The Uncertain Enterprise
 
Actors for Behavioural Simulation
Actors for Behavioural SimulationActors for Behavioural Simulation
Actors for Behavioural Simulation
 
Context-Aware Content-Centric Collaborative Workflow Management for Mobile De...
Context-Aware Content-Centric Collaborative Workflow Management for Mobile De...Context-Aware Content-Centric Collaborative Workflow Management for Mobile De...
Context-Aware Content-Centric Collaborative Workflow Management for Mobile De...
 
LEAP A Language for Architecture Design, Simulation and Analysis
LEAP A Language for Architecture Design, Simulation and AnalysisLEAP A Language for Architecture Design, Simulation and Analysis
LEAP A Language for Architecture Design, Simulation and Analysis
 
A Common Basis for Modelling Service-Oriented and Event-Driven Architecture
A Common Basis for Modelling Service-Oriented and Event-Driven ArchitectureA Common Basis for Modelling Service-Oriented and Event-Driven Architecture
A Common Basis for Modelling Service-Oriented and Event-Driven Architecture
 
Context Aware Reactive Applications
Context Aware Reactive ApplicationsContext Aware Reactive Applications
Context Aware Reactive Applications
 
Model Slicing
Model SlicingModel Slicing
Model Slicing
 
Iswim for testing
Iswim for testingIswim for testing
Iswim for testing
 
Iswim for testing
Iswim for testingIswim for testing
Iswim for testing
 
Mcms and ids sig
Mcms and ids sigMcms and ids sig
Mcms and ids sig
 
Ocl 09
Ocl 09Ocl 09
Ocl 09
 
Scam 08
Scam 08Scam 08
Scam 08
 
Reverse engineering and theory building v3
Reverse engineering and theory building v3Reverse engineering and theory building v3
Reverse engineering and theory building v3
 
Formalizing homogeneous language embeddings
Formalizing homogeneous language embeddingsFormalizing homogeneous language embeddings
Formalizing homogeneous language embeddings
 
Dsm as theory building
Dsm as theory buildingDsm as theory building
Dsm as theory building
 
Code gen 09 kiss results
Code gen 09   kiss resultsCode gen 09   kiss results
Code gen 09 kiss results
 
Cg 2011
Cg 2011Cg 2011
Cg 2011
 
Iswim for testing
Iswim for testingIswim for testing
Iswim for testing
 
UML01
UML01UML01
UML01
 

Dernier

A Call to Action for Generative AI in 2024
A Call to Action for Generative AI in 2024A Call to Action for Generative AI in 2024
A Call to Action for Generative AI in 2024Results
 
The 7 Things I Know About Cyber Security After 25 Years | April 2024
The 7 Things I Know About Cyber Security After 25 Years | April 2024The 7 Things I Know About Cyber Security After 25 Years | April 2024
The 7 Things I Know About Cyber Security After 25 Years | April 2024Rafal Los
 
Exploring the Future Potential of AI-Enabled Smartphone Processors
Exploring the Future Potential of AI-Enabled Smartphone ProcessorsExploring the Future Potential of AI-Enabled Smartphone Processors
Exploring the Future Potential of AI-Enabled Smartphone Processorsdebabhi2
 
🐬 The future of MySQL is Postgres 🐘
🐬  The future of MySQL is Postgres   🐘🐬  The future of MySQL is Postgres   🐘
🐬 The future of MySQL is Postgres 🐘RTylerCroy
 
04-2024-HHUG-Sales-and-Marketing-Alignment.pptx
04-2024-HHUG-Sales-and-Marketing-Alignment.pptx04-2024-HHUG-Sales-and-Marketing-Alignment.pptx
04-2024-HHUG-Sales-and-Marketing-Alignment.pptxHampshireHUG
 
Boost PC performance: How more available memory can improve productivity
Boost PC performance: How more available memory can improve productivityBoost PC performance: How more available memory can improve productivity
Boost PC performance: How more available memory can improve productivityPrincipled Technologies
 
From Event to Action: Accelerate Your Decision Making with Real-Time Automation
From Event to Action: Accelerate Your Decision Making with Real-Time AutomationFrom Event to Action: Accelerate Your Decision Making with Real-Time Automation
From Event to Action: Accelerate Your Decision Making with Real-Time AutomationSafe Software
 
GenCyber Cyber Security Day Presentation
GenCyber Cyber Security Day PresentationGenCyber Cyber Security Day Presentation
GenCyber Cyber Security Day PresentationMichael W. Hawkins
 
Slack Application Development 101 Slides
Slack Application Development 101 SlidesSlack Application Development 101 Slides
Slack Application Development 101 Slidespraypatel2
 
How to convert PDF to text with Nanonets
How to convert PDF to text with NanonetsHow to convert PDF to text with Nanonets
How to convert PDF to text with Nanonetsnaman860154
 
What Are The Drone Anti-jamming Systems Technology?
What Are The Drone Anti-jamming Systems Technology?What Are The Drone Anti-jamming Systems Technology?
What Are The Drone Anti-jamming Systems Technology?Antenna Manufacturer Coco
 
How to Troubleshoot Apps for the Modern Connected Worker
How to Troubleshoot Apps for the Modern Connected WorkerHow to Troubleshoot Apps for the Modern Connected Worker
How to Troubleshoot Apps for the Modern Connected WorkerThousandEyes
 
Bajaj Allianz Life Insurance Company - Insurer Innovation Award 2024
Bajaj Allianz Life Insurance Company - Insurer Innovation Award 2024Bajaj Allianz Life Insurance Company - Insurer Innovation Award 2024
Bajaj Allianz Life Insurance Company - Insurer Innovation Award 2024The Digital Insurer
 
Automating Google Workspace (GWS) & more with Apps Script
Automating Google Workspace (GWS) & more with Apps ScriptAutomating Google Workspace (GWS) & more with Apps Script
Automating Google Workspace (GWS) & more with Apps Scriptwesley chun
 
Apidays Singapore 2024 - Building Digital Trust in a Digital Economy by Veron...
Apidays Singapore 2024 - Building Digital Trust in a Digital Economy by Veron...Apidays Singapore 2024 - Building Digital Trust in a Digital Economy by Veron...
Apidays Singapore 2024 - Building Digital Trust in a Digital Economy by Veron...apidays
 
The Codex of Business Writing Software for Real-World Solutions 2.pptx
The Codex of Business Writing Software for Real-World Solutions 2.pptxThe Codex of Business Writing Software for Real-World Solutions 2.pptx
The Codex of Business Writing Software for Real-World Solutions 2.pptxMalak Abu Hammad
 
Advantages of Hiring UIUX Design Service Providers for Your Business
Advantages of Hiring UIUX Design Service Providers for Your BusinessAdvantages of Hiring UIUX Design Service Providers for Your Business
Advantages of Hiring UIUX Design Service Providers for Your BusinessPixlogix Infotech
 
Artificial Intelligence: Facts and Myths
Artificial Intelligence: Facts and MythsArtificial Intelligence: Facts and Myths
Artificial Intelligence: Facts and MythsJoaquim Jorge
 
Factors to Consider When Choosing Accounts Payable Services Providers.pptx
Factors to Consider When Choosing Accounts Payable Services Providers.pptxFactors to Consider When Choosing Accounts Payable Services Providers.pptx
Factors to Consider When Choosing Accounts Payable Services Providers.pptxKatpro Technologies
 
08448380779 Call Girls In Greater Kailash - I Women Seeking Men
08448380779 Call Girls In Greater Kailash - I Women Seeking Men08448380779 Call Girls In Greater Kailash - I Women Seeking Men
08448380779 Call Girls In Greater Kailash - I Women Seeking MenDelhi Call girls
 

Dernier (20)

A Call to Action for Generative AI in 2024
A Call to Action for Generative AI in 2024A Call to Action for Generative AI in 2024
A Call to Action for Generative AI in 2024
 
The 7 Things I Know About Cyber Security After 25 Years | April 2024
The 7 Things I Know About Cyber Security After 25 Years | April 2024The 7 Things I Know About Cyber Security After 25 Years | April 2024
The 7 Things I Know About Cyber Security After 25 Years | April 2024
 
Exploring the Future Potential of AI-Enabled Smartphone Processors
Exploring the Future Potential of AI-Enabled Smartphone ProcessorsExploring the Future Potential of AI-Enabled Smartphone Processors
Exploring the Future Potential of AI-Enabled Smartphone Processors
 
🐬 The future of MySQL is Postgres 🐘
🐬  The future of MySQL is Postgres   🐘🐬  The future of MySQL is Postgres   🐘
🐬 The future of MySQL is Postgres 🐘
 
04-2024-HHUG-Sales-and-Marketing-Alignment.pptx
04-2024-HHUG-Sales-and-Marketing-Alignment.pptx04-2024-HHUG-Sales-and-Marketing-Alignment.pptx
04-2024-HHUG-Sales-and-Marketing-Alignment.pptx
 
Boost PC performance: How more available memory can improve productivity
Boost PC performance: How more available memory can improve productivityBoost PC performance: How more available memory can improve productivity
Boost PC performance: How more available memory can improve productivity
 
From Event to Action: Accelerate Your Decision Making with Real-Time Automation
From Event to Action: Accelerate Your Decision Making with Real-Time AutomationFrom Event to Action: Accelerate Your Decision Making with Real-Time Automation
From Event to Action: Accelerate Your Decision Making with Real-Time Automation
 
GenCyber Cyber Security Day Presentation
GenCyber Cyber Security Day PresentationGenCyber Cyber Security Day Presentation
GenCyber Cyber Security Day Presentation
 
Slack Application Development 101 Slides
Slack Application Development 101 SlidesSlack Application Development 101 Slides
Slack Application Development 101 Slides
 
How to convert PDF to text with Nanonets
How to convert PDF to text with NanonetsHow to convert PDF to text with Nanonets
How to convert PDF to text with Nanonets
 
What Are The Drone Anti-jamming Systems Technology?
What Are The Drone Anti-jamming Systems Technology?What Are The Drone Anti-jamming Systems Technology?
What Are The Drone Anti-jamming Systems Technology?
 
How to Troubleshoot Apps for the Modern Connected Worker
How to Troubleshoot Apps for the Modern Connected WorkerHow to Troubleshoot Apps for the Modern Connected Worker
How to Troubleshoot Apps for the Modern Connected Worker
 
Bajaj Allianz Life Insurance Company - Insurer Innovation Award 2024
Bajaj Allianz Life Insurance Company - Insurer Innovation Award 2024Bajaj Allianz Life Insurance Company - Insurer Innovation Award 2024
Bajaj Allianz Life Insurance Company - Insurer Innovation Award 2024
 
Automating Google Workspace (GWS) & more with Apps Script
Automating Google Workspace (GWS) & more with Apps ScriptAutomating Google Workspace (GWS) & more with Apps Script
Automating Google Workspace (GWS) & more with Apps Script
 
Apidays Singapore 2024 - Building Digital Trust in a Digital Economy by Veron...
Apidays Singapore 2024 - Building Digital Trust in a Digital Economy by Veron...Apidays Singapore 2024 - Building Digital Trust in a Digital Economy by Veron...
Apidays Singapore 2024 - Building Digital Trust in a Digital Economy by Veron...
 
The Codex of Business Writing Software for Real-World Solutions 2.pptx
The Codex of Business Writing Software for Real-World Solutions 2.pptxThe Codex of Business Writing Software for Real-World Solutions 2.pptx
The Codex of Business Writing Software for Real-World Solutions 2.pptx
 
Advantages of Hiring UIUX Design Service Providers for Your Business
Advantages of Hiring UIUX Design Service Providers for Your BusinessAdvantages of Hiring UIUX Design Service Providers for Your Business
Advantages of Hiring UIUX Design Service Providers for Your Business
 
Artificial Intelligence: Facts and Myths
Artificial Intelligence: Facts and MythsArtificial Intelligence: Facts and Myths
Artificial Intelligence: Facts and Myths
 
Factors to Consider When Choosing Accounts Payable Services Providers.pptx
Factors to Consider When Choosing Accounts Payable Services Providers.pptxFactors to Consider When Choosing Accounts Payable Services Providers.pptx
Factors to Consider When Choosing Accounts Payable Services Providers.pptx
 
08448380779 Call Girls In Greater Kailash - I Women Seeking Men
08448380779 Call Girls In Greater Kailash - I Women Seeking Men08448380779 Call Girls In Greater Kailash - I Women Seeking Men
08448380779 Call Girls In Greater Kailash - I Women Seeking Men
 

Onward presentation.en

  • 1. Motivation Language Factories Language Components Case Study The Research Agenda Language Factories Tony Clark1 Laurence Tratt2 1 School of Computing Thames Valley University London, UK 2 Bournemouth University, UK Onward! 2009 Tony Clark, Laurence Tratt Language Factories
  • 2. Motivation Language Factories Language Components Case Study The Research Agenda Outline 1 Motivation 2 Language Factories 3 Language Components 4 Case Study 5 The Research Agenda Tony Clark, Laurence Tratt Language Factories
  • 3. Motivation Language Factories Language Components Case Study The Research Agenda Language Horticulture ...a good programmer in these times does not just write programs. A good programmer builds a working vocabulary. In other words, a good programmer does language design, though not from scratch, but by building on the frame of a base language. ...from now on, a main goal in designing a language should be to plan for growth. Guy L. Steele, Jr. Growing a language, 1998 Tony Clark, Laurence Tratt Language Factories
  • 4. Motivation Language Factories Language Components Case Study The Research Agenda Growing a Language Large structured languages grow... From little acorns... Tony Clark, Laurence Tratt Language Factories
  • 5. Motivation Language Factories Language Components Case Study The Research Agenda Growing a Language Large structured languages grow... From little acorns... Tony Clark, Laurence Tratt Language Factories
  • 6. Motivation Language Factories Language Components Case Study The Research Agenda But It Takes Too Long and is Difficult to Control Tony Clark, Laurence Tratt Language Factories
  • 7. Motivation Language Factories Language Components Case Study The Research Agenda Defining Languages is Hard Lots of interest in DSLs: malleable syntax and semantics. Using GPLs to implement DSLs is not the best way. DSL definition is a specialist activity. DSLs are a desire lacking a philosophy. Tony Clark, Laurence Tratt Language Factories
  • 8. Motivation Language Factories Language Components Case Study The Research Agenda Current Situation Languages are difficult to evolve. Languages evolve slowly: how long between major language versions? Technologies are evolving to help with this: Stratego XMF Converge MPS Oslo More needs to be done... Tony Clark, Laurence Tratt Language Factories
  • 9. Motivation Language Factories Language Components Case Study The Research Agenda How Are Software Systems Designed? Components Reuse Interfaces Extension Change Analysis Tony Clark, Laurence Tratt Language Factories
  • 10. Motivation Language Factories Language Components Case Study The Research Agenda Language Factories - Research Agenda A component-based approach to the definition and construction of languages, tools. Language Factories aim to support: Reuse of common language components. Agile language engineering. Language refactoring. Language analysis including impact analysis. Product Lines for Languages Users: Language Factory Developers Language Factory Users Application Developers Application Users Tony Clark, Laurence Tratt Language Factories
  • 11. Motivation Language Factories Language Components Case Study The Research Agenda Realising Language Factories Different formalisms, tools, degrees of automation. Varying levels of precision: Virtual LFs: designed and partly implemented. Idealised LFs: language workbenches (Martin Fowler). Many shared of grey in between (e.g. componentized abstract syntax). Can be realised with current languages (with compromises). Tony Clark, Laurence Tratt Language Factories
  • 12. Motivation Language Factories Language Components Case Study The Research Agenda Language Components Abstract Syntax Single definition of a data type. Concrete Syntax(es) e.g. a context free grammar. Syntactic Mapping Concrete syntax(es) to abstract syntax. Semantic Aspect(s) Language meaning: Operational. Denotational. Types. Code Generation. Serialization. Tooling Composable editors, checkers, etc. Constraints Conditions on language use. Interfaces What is offered and what is required? Tony Clark, Laurence Tratt Language Factories
  • 13. Motivation Language Factories Language Components Case Study The Research Agenda An Example Language component Landing_gear(height:int, speed:float) { stm { state Moving_Up state Moving_Down state Deployed state Stowed transition up from Deployed to Moving_Up height_change[height>500ft and speed>100kn/s] transition down from Stowed to Moving_Down deploy } } Tony Clark, Laurence Tratt Language Factories
  • 14. Motivation Language Factories Language Components Case Study The Research Agenda A Language Is Composed of Parts Given components: @ / Expr / Measurements ACComponent @ / StateMachine(Guards) / StateMachine + ACComponent(Body) / / Can combine and recombine: Expr Measurement @ / / ACComponent @ / / StateMachine Expr Tony Clark, Laurence Tratt Language Factories
  • 15. Motivation Language Factories Language Components Case Study The Research Agenda A Reusable Expression Language lang Expr: ast: Var(Str) | Add(Expr, Expr) | Num(Int) grammar: expr -> name:Id <Var(name)> | lhs:Expr ’+’ rhs:Expr <Add(lhs, rhs)> | num:Int <Num(num)> semantics java: Var(x) -> [j| ${x} |] Add(x, y) -> [j| ${java(x)}.plus(${java(y)}) |] Num(x) -> [j| new ExprInt(${x}) |] constraints: exists_class(ExprInt) exists_class(Expr) exists_static_method(Expr,plus) end Tony Clark, Laurence Tratt Language Factories
  • 16. Motivation Language Factories Language Components Case Study The Research Agenda A Reusable Expression Language lang Expr: ast: Var(Str) | Add(Expr, Expr) | Num(Int) grammar: expr -> name:Id <Var(name)> | lhs:Expr ’+’ rhs:Expr <Add(lhs, rhs)> | num:Int <Num(num)> semantics java: Var(x) -> [j| ${x} |] Add(x, y) -> [j| ${java(x)}.plus(${java(y)}) |] Num(x) -> [j| new ExprInt(${x}) |] constraints: exists_class(ExprInt) exists_class(Expr) exists_static_method(Expr,plus) end Tony Clark, Laurence Tratt Language Factories
  • 17. Motivation Language Factories Language Components Case Study The Research Agenda A Reusable Expression Language lang Expr: ast: Var(Str) | Add(Expr, Expr) | Num(Int) grammar: expr -> name:Id <Var(name)> | lhs:Expr ’+’ rhs:Expr <Add(lhs, rhs)> | num:Int <Num(num)> semantics eval(env): Var(x) -> lookup(env, x) Add(x, y) -> eval(x, env) + eval(y, env) Num(x) -> x semantics java: Var(x) -> [j| ${x} |] Add(x, y) -> [j| ${java(x)}.plus(${java(y)}) |] Num(x) -> [j| new ExprInt(${x}) |] constraints: exists_class(ExprInt) exists_class(Expr) exists_static_method(Expr,plus) Factories Tony Clark, Laurence Tratt Language
  • 18. Motivation Language Factories Language Components Case Study The Research Agenda A Reusable Expression Language lang Expr: ast: Var(Str) | Add(Expr, Expr) | Num(Int) grammar: expr -> name:Id <Var(name)> | lhs:Expr ’+’ rhs:Expr <Add(lhs, rhs)> | num:Int <Num(num)> semantics java: Var(x) -> [j| ${x} |] Add(x, y) -> [j| ${java(x)}.plus(${java(y)}) |] Num(x) -> [j| new ExprInt(${x}) |] constraints: exists_class(ExprInt) exists_class(Expr) exists_static_method(Expr,plus) end Tony Clark, Laurence Tratt Language Factories
  • 19. Motivation Language Factories Language Components Case Study The Research Agenda A Reusable Expression Language lang Expr: ast: Var(Str) | Add(Expr, Expr) | Num(Int) grammar: expr -> name:Id <Var(name)> | lhs:Expr ’+’ rhs:Expr <Add(lhs, rhs)> | num:Int <Num(num)> semantics java: Var(x) -> [j| ${x} |] Add(x, y) -> [j| ${java(x)}.plus(${java(y)}) |] Num(x) -> [j| new ExprInt(${x}) |] constraints: exists_class(ExprInt) exists_class(Expr) exists_static_method(Expr,plus) end Tony Clark, Laurence Tratt Language Factories
  • 20. Motivation Language Factories Language Components Case Study The Research Agenda Representing Measurements lang Measurement: ast: Ft(Float) | KnPerH(Float) | MiPerH(Float) grammar: measure -> dst:Float ’ft’ <Ft(dst) | dst:Float ’kn/h’ <KnPerH(dst)> | dst:Float ’mph’ <MiPerH(dst)> semantics java: Ft(x) -> [j| new ExprFeet(${x}) |] KnPerS(x) -> [j| new ExprKnPerH(${x}) |] MiPerS(x) -> [j| new ExprKnPerH(${x*0.869}) |] constraints: exists_class(ExprFeet) exists_class(ExprKnPerH) end Tony Clark, Laurence Tratt Language Factories
  • 21. Motivation Language Factories Language Components Case Study The Research Agenda Language Factories: The Research Agenda Need syntax reuse and composition. Need semantics (operational, translational, ...) reuse and composition. Need composable type systems. Need composable tools. Need language templates (components with parameters). Need LF meta-languages and type systems. Need LF workbenches. Tony Clark, Laurence Tratt Language Factories