SlideShare uma empresa Scribd logo
1 de 56
Baixar para ler offline
Language Boxes
          Bending the Host Language
       with Modular Language Changes

Lukas Renggli, Marcus Denker, Oscar Nierstrasz
Marco Zanoli, cc-by-sa, 2.5, www.wikipedia.de, 2006
Marco Zanoli, cc-by-sa, 2.5, www.wikipedia.de, 2006
Marco Zanoli, cc-by-sa, 2.5, www.wikipedia.de, 2006
§
§
    §

            Marco Zanoli, cc-by-sa, 2.5, www.wikipedia.de, 2006
Marco Zanoli, cc-by-sa, 2.5, www.wikipedia.de, 2006
Marco Zanoli, cc-by-sa, 2.5, www.wikipedia.de, 2006
Marco Zanoli, cc-by-sa, 2.5, www.wikipedia.de, 2006
§
§
    §

            Marco Zanoli, cc-by-sa, 2.5, www.wikipedia.de, 2006
Host Environment
Tool Infrastructure




Host Environment
Syntax

Language 1
              Editor



             Compiler
Language 2

             Debugger
Syntax

Language 1
              Editor



             Compiler
Language 2

             Debugger
Syntax

Language 1
              Editor



             Compiler
Language 2

             Debugger
Syntax

Language 1
              Editor



             Compiler
Language 2

             Debugger
Marco Zanoli, cc-by-sa, 2.5, www.wikipedia.de, 2006
Tool Infrastructure




Host Environment
Language Boxes




Tool Infrastructure




Host Environment
Language Box
   Model
Language
               *
                    Change


Language       *   Language
  Box               Concern
           *

               *   Language
                    Scope
IV + VII = XI
Language
               *
                    Change


Language       *   Language
  Box               Concern
           *

               *   Language
                    Scope
Language Change




       Insert FRAGMENT
  (before|after) PRODUCTION
as (choice|sequence|replacement)
Language Change




Insert RomanNumber
before NumberLiteral
    as a choice.
Language Change


Literal:                 BooleanLiteral

                            NilLiteral

                          NumberLiteral

                          StringLiteral

                           ArrayLiteral



NumberLiteral:            IntegerLiteral

                           FloatLiteral
Language Change




RomanNumber:       'I' .. 'M'
Language Change


Literal:             BooleanLiteral

                        NilLiteral

                     NumberLiteral'

                      StringLiteral

                       ArrayLiteral



NumberLiteral':      RomanNumber

                      NumberLiteral
Language Change




1st   Class Grammar
      Scannerless, Packrat
Language Concern




Production Action
Language Concern




       Compiler
aToken value romanToArabic lift
Language Concern




Highlighting
aToken -> Color gray
Language Concern




Custom Actions
Language Scope




Active?
Language Scope




System
Language Scope




Packages
Language Scope




Classes
Language Scope




Methods
Language
               *
                    Change


Language       *   Language
  Box               Concern
           *

               *   Language
                    Scope
Conflicts
Language   Language   Language   Language
  Box 1      Box 2      Box 3      Box 4
Language   Language   Language   Language
  Box 1      Box 2      Box 3      Box 4
Language   Language   Language   Language
  Box 1      Box 2      Box 3      Box 4
Language     Language   Language   Language
  Box 1        Box 2      Box 3      Box 4




ostGrammar
Language    Language     Language   Language
  Box 1       Box 2        Box 3      Box 4




           HostGrammar
Language   Language   Language    Language
  Box 1      Box 2      Box 3       Box 4




                                 HostGramm
Language   Language   Language   Language
  Box 1      Box 2      Box 3      Box 4
HostGrammar'
con  sis t
mi  gh t         rts
       us e d pa
o f un

               HostGrammar'
con  sis t            m igh t b
mi  gh t         rts          am big u    e
       us e d pa                       o us
o f un

               HostGrammar'
PackratParser




HostGrammar'
SELECT * FROM users
<SQL: SELECT * FROM users>
Marco Zanoli, cc-by-sa, 2.5, www.wikipedia.de, 2006
scg.unibe.ch/research/helvetia

Mais conteúdo relacionado

Semelhante a Language Boxes — Bending the Host Language with Modular Language Changes

Dynamic Language Embedding With Homogeneous Tool Support
Dynamic Language Embedding With Homogeneous Tool SupportDynamic Language Embedding With Homogeneous Tool Support
Dynamic Language Embedding With Homogeneous Tool Support
Lukas Renggli
 
Generations of Programming Languages
Generations of Programming LanguagesGenerations of Programming Languages
Generations of Programming Languages
Tarun Sharma
 

Semelhante a Language Boxes — Bending the Host Language with Modular Language Changes (6)

Dynamic Language Embedding With Homogeneous Tool Support
Dynamic Language Embedding With Homogeneous Tool SupportDynamic Language Embedding With Homogeneous Tool Support
Dynamic Language Embedding With Homogeneous Tool Support
 
Ruby Presentation - Handout
Ruby Presentation - HandoutRuby Presentation - Handout
Ruby Presentation - Handout
 
Generations of Programming Languages
Generations of Programming LanguagesGenerations of Programming Languages
Generations of Programming Languages
 
Go Course Day1
Go Course Day1Go Course Day1
Go Course Day1
 
Dynamic Ranguage Runtime (DLR)
Dynamic Ranguage Runtime (DLR)Dynamic Ranguage Runtime (DLR)
Dynamic Ranguage Runtime (DLR)
 
Ubiquity: Designing a Multilingual Natural Language Interface
Ubiquity: Designing a Multilingual Natural Language InterfaceUbiquity: Designing a Multilingual Natural Language Interface
Ubiquity: Designing a Multilingual Natural Language Interface
 

Mais de Lukas Renggli

Seaside — Agile Software Development
Seaside — Agile Software DevelopmentSeaside — Agile Software Development
Seaside — Agile Software Development
Lukas Renggli
 
Seaside Status Message
Seaside Status MessageSeaside Status Message
Seaside Status Message
Lukas Renggli
 

Mais de Lukas Renggli (17)

Mastering Grammars with PetitParser
Mastering Grammars with PetitParserMastering Grammars with PetitParser
Mastering Grammars with PetitParser
 
Natural Language Checking with Program Checking Tools
Natural Language Checking with Program Checking ToolsNatural Language Checking with Program Checking Tools
Natural Language Checking with Program Checking Tools
 
The Dynamic Language is not Enough
The Dynamic Language is not EnoughThe Dynamic Language is not Enough
The Dynamic Language is not Enough
 
Seaside — Agile Software Development
Seaside — Agile Software DevelopmentSeaside — Agile Software Development
Seaside — Agile Software Development
 
Dynamic grammars
Dynamic grammarsDynamic grammars
Dynamic grammars
 
Domain-Specific Program Checking
Domain-Specific Program CheckingDomain-Specific Program Checking
Domain-Specific Program Checking
 
jQuery for Seaside
jQuery for SeasidejQuery for Seaside
jQuery for Seaside
 
Seaside Status Message
Seaside Status MessageSeaside Status Message
Seaside Status Message
 
Seaside - The Revenge of Smalltalk
Seaside - The Revenge of SmalltalkSeaside - The Revenge of Smalltalk
Seaside - The Revenge of Smalltalk
 
Magritte Blitz
Magritte BlitzMagritte Blitz
Magritte Blitz
 
Seaside - On not getting bogged down
Seaside - On not getting bogged downSeaside - On not getting bogged down
Seaside - On not getting bogged down
 
Magritte
MagritteMagritte
Magritte
 
Seaside - Past, Present and Future
Seaside - Past, Present and FutureSeaside - Past, Present and Future
Seaside - Past, Present and Future
 
Magritte - A Meta-Driven Approach to Empower Developers and End Users
Magritte - A Meta-Driven Approach to Empower Developers and End UsersMagritte - A Meta-Driven Approach to Empower Developers and End Users
Magritte - A Meta-Driven Approach to Empower Developers and End Users
 
Transactional Memory for Smalltalk
Transactional Memory for SmalltalkTransactional Memory for Smalltalk
Transactional Memory for Smalltalk
 
Seaside - Web Development As You Like It
Seaside - Web Development As You Like ItSeaside - Web Development As You Like It
Seaside - Web Development As You Like It
 
5 Steps to Mastering the Art of Seaside
5 Steps to Mastering the Art of Seaside5 Steps to Mastering the Art of Seaside
5 Steps to Mastering the Art of Seaside
 

Último

Artificial Intelligence: Facts and Myths
Artificial Intelligence: Facts and MythsArtificial Intelligence: Facts and Myths
Artificial Intelligence: Facts and Myths
Joaquim Jorge
 
Histor y of HAM Radio presentation slide
Histor y of HAM Radio presentation slideHistor y of HAM Radio presentation slide
Histor y of HAM Radio presentation slide
vu2urc
 
EIS-Webinar-Prompt-Knowledge-Eng-2024-04-08.pptx
EIS-Webinar-Prompt-Knowledge-Eng-2024-04-08.pptxEIS-Webinar-Prompt-Knowledge-Eng-2024-04-08.pptx
EIS-Webinar-Prompt-Knowledge-Eng-2024-04-08.pptx
Earley Information Science
 

Último (20)

08448380779 Call Girls In Diplomatic Enclave Women Seeking Men
08448380779 Call Girls In Diplomatic Enclave Women Seeking Men08448380779 Call Girls In Diplomatic Enclave Women Seeking Men
08448380779 Call Girls In Diplomatic Enclave Women Seeking Men
 
ProductAnonymous-April2024-WinProductDiscovery-MelissaKlemke
ProductAnonymous-April2024-WinProductDiscovery-MelissaKlemkeProductAnonymous-April2024-WinProductDiscovery-MelissaKlemke
ProductAnonymous-April2024-WinProductDiscovery-MelissaKlemke
 
Strategies for Landing an Oracle DBA Job as a Fresher
Strategies for Landing an Oracle DBA Job as a FresherStrategies for Landing an Oracle DBA Job as a Fresher
Strategies for Landing an Oracle DBA Job as a Fresher
 
Strategies for Unlocking Knowledge Management in Microsoft 365 in the Copilot...
Strategies for Unlocking Knowledge Management in Microsoft 365 in the Copilot...Strategies for Unlocking Knowledge Management in Microsoft 365 in the Copilot...
Strategies for Unlocking Knowledge Management in Microsoft 365 in the Copilot...
 
Strategize a Smooth Tenant-to-tenant Migration and Copilot Takeoff
Strategize a Smooth Tenant-to-tenant Migration and Copilot TakeoffStrategize a Smooth Tenant-to-tenant Migration and Copilot Takeoff
Strategize a Smooth Tenant-to-tenant Migration and Copilot Takeoff
 
Artificial Intelligence: Facts and Myths
Artificial Intelligence: Facts and MythsArtificial Intelligence: Facts and Myths
Artificial Intelligence: Facts and Myths
 
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
 
Boost Fertility New Invention Ups Success Rates.pdf
Boost Fertility New Invention Ups Success Rates.pdfBoost Fertility New Invention Ups Success Rates.pdf
Boost Fertility New Invention Ups Success Rates.pdf
 
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
 
🐬 The future of MySQL is Postgres 🐘
🐬  The future of MySQL is Postgres   🐘🐬  The future of MySQL is Postgres   🐘
🐬 The future of MySQL is Postgres 🐘
 
Histor y of HAM Radio presentation slide
Histor y of HAM Radio presentation slideHistor y of HAM Radio presentation slide
Histor y of HAM Radio presentation slide
 
Understanding Discord NSFW Servers A Guide for Responsible Users.pdf
Understanding Discord NSFW Servers A Guide for Responsible Users.pdfUnderstanding Discord NSFW Servers A Guide for Responsible Users.pdf
Understanding Discord NSFW Servers A Guide for Responsible Users.pdf
 
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?
 
EIS-Webinar-Prompt-Knowledge-Eng-2024-04-08.pptx
EIS-Webinar-Prompt-Knowledge-Eng-2024-04-08.pptxEIS-Webinar-Prompt-Knowledge-Eng-2024-04-08.pptx
EIS-Webinar-Prompt-Knowledge-Eng-2024-04-08.pptx
 
Scaling API-first – The story of a global engineering organization
Scaling API-first – The story of a global engineering organizationScaling API-first – The story of a global engineering organization
Scaling API-first – The story of a global engineering organization
 
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
 
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
 
08448380779 Call Girls In Friends Colony Women Seeking Men
08448380779 Call Girls In Friends Colony Women Seeking Men08448380779 Call Girls In Friends Colony Women Seeking Men
08448380779 Call Girls In Friends Colony Women Seeking Men
 
GenAI Risks & Security Meetup 01052024.pdf
GenAI Risks & Security Meetup 01052024.pdfGenAI Risks & Security Meetup 01052024.pdf
GenAI Risks & Security Meetup 01052024.pdf
 
presentation ICT roal in 21st century education
presentation ICT roal in 21st century educationpresentation ICT roal in 21st century education
presentation ICT roal in 21st century education
 

Language Boxes — Bending the Host Language with Modular Language Changes