Skip to main content
Log in

An agile approach to language modelling and development

  • Original Paper
  • Published:
Innovations in Systems and Software Engineering Aims and scope Submit manuscript

Abstract

We have developed novel techniques for component-based specification of programming languages. In our approach, the semantics of each fundamental programming construct is specified independently, using an inherently modular framework such that no reformulation is needed when constructs are combined. A language specification consists of an unrestricted context-free grammar for the syntax of programs, together with an analysis of each language construct in terms of fundamental constructs. An open-ended collection of fundamental constructs is currently being developed. When supported by appropriate tools, our techniques allow a more agile approach to the design, modelling, and implementation of programming and domain-specific languages. In particular, our approach encourages language designers to proceed incrementally, using prototype implementations generated from specifications to test tentative designs. The components of our specifications are independent and highly reusable, so initial language specifications can be rapidly produced, and can easily evolve in response to changing design decisions. In this paper, we outline our approach, and relate it to the practices and principles of agile modelling.

This is a preview of subscription content, log in via an institution to check access.

Access this article

Price excludes VAT (USA)
Tax calculation will be finalised during checkout.

Instant access to the full article PDF.

Similar content being viewed by others

References

  1. Ambler SW (2009) Agile Modeling (AM). http://www.agilemodeling.com

  2. Balaban I, Tip F, Fuhrer RM (2005) Refactoring support for class library migration. In: OOPSLA 2005, ACM, New York, pp 265–279

  3. Brown DF, Moura H, Watt DA (1992) Actress: an action semantics directed compiler generator. In: CC ’92. LNCS, vol 641. Springer, Berlin, pp 95–109

  4. Chalub F, Braga C (2007) Maude MSOS tool. In: WRLA 2006. ENTCS, vol 176(4). Elsevier, Amsterdam, pp 133–146

  5. Doh K-G, Mosses PD (2003) Composing programming languages by combining action-semantics modules. Sci Comput Program 47(1): 3–36

    Article  MATH  Google Scholar 

  6. Ekman T, Hedin G (2007) The JastAdd system—modular extensible compiler construction. Sci Comput Program 69(1–3): 14–26

    Article  MATH  MathSciNet  Google Scholar 

  7. Gosling J, Joy B, Steele G (1996) The Java language specification, 1st edn. Addison-Wesley, Reading

    MATH  Google Scholar 

  8. Gosling J, Joy B, Steele G, Bracha G (2005) The Java language specification, 3rd edn. Addison-Wesley, Reading

    Google Scholar 

  9. Gurevich Y (1995) Evolving algebras 1993: Lipari guide. In: Börger E (ed) Specification and validation methods. Oxford University Press, Oxford, pp 9–36

    Google Scholar 

  10. Heering J, Klint P (2000) Semantics of programming languages: a tool-oriented approach. SIGPLAN Notices 35(3): 39–48

    Article  Google Scholar 

  11. Hudak P, Hughes J, Peyton Jones SL, Wadler P (2007) A history of Haskell: being lazy with class. In: HOPL III, ACM, New York, pp 12.1–12.55

  12. Iversen J (2007) An action compiler targeting Standard ML. Sci Comput Program 68(2): 79–94

    Article  MATH  MathSciNet  Google Scholar 

  13. Iversen J, Mosses PD (2005) Constructive action semantics for Core ML. IEE Proc-Softw 152: 79–98

    Article  Google Scholar 

  14. Jaskelioff M (2009) Modular monad transformers. In: ESOP 2009. LNCS, vol 5502. Springer, Berlin, pp 64–79

  15. Johnstone A, Scott E (2007) Proofs and pedagogy; science and systems: The Grammar Tool Box. Sci Comput Program 69: 76–85

    Article  MATH  MathSciNet  Google Scholar 

  16. Kastens U, Waite WM (1994) Modularity and reusability in attribute grammars. Acta Inf 31(7): 601–627

    Article  MATH  Google Scholar 

  17. Kutter P, Pierantonio A (1997) Montages: specifications of realistic programming languages. J Univers Comput Sci 3(5): 416–442

    MATH  MathSciNet  Google Scholar 

  18. Labra Gayo JE, Cueva Lovelle JM, Luengo Díez MC, Cernuda del Río A (2002) Reusable monadic semantics of object oriented programming languages. In: SBLP 2002, PUC-Rio, Brazil, pp 86–100

  19. Liang S, Hudak P (1996) Modular denotational semantics for compiler construction. In: ESOP ’96. LNCS, vol 1058. Springer, Berlin, pp 219–234

  20. Milner R, Tofte M, Harper R, MacQueen D (1997) The Definition of Standard ML—Revised. MIT Press, Cambridge

  21. Moggi E (1989) An abstract view of programming languages. Tech. Rep. ECS-LFCS-90-113, Univ. of Edinburgh

  22. Mosses PD (1992) Action Semantics, Cambridge Tracts in Theoretical Computer Science, vol 26. Cambridge University Press, Cambridge

    Google Scholar 

  23. Mosses PD (1996) Theory and practice of action semantics. In: MFCS ’96. LNCS, vol 1113. Springer, Berlin, pp 37–61

  24. Mosses PD (2002) Pragmatics of modular SOS. In: AMAST’02. LNCS, vol 2422. Springer, Berlin, pp 21–40

  25. Mosses PD (2004) Modular structural operational semantics. J Log Algebraic Program 60–61: 195–228

    Article  MathSciNet  Google Scholar 

  26. Mosses PD (2008) Component-based description of programming languages. In: Visions of computer science, BCS, electronic proceedings, pp 275–286

  27. Mosses PD (2009) Component-based semantics. In: SAVCBS ’09, ACM, New York, pp 3–10

  28. Mosses PD, New MJ (2009) Implicit propagation in structural operational semantics. In: SOS 2008. ENTCS, vol 229, issue 9. Elsevier, Amsterdam, pp 49–66

  29. Mosses PD, Watt DA (1987) The use of action semantics. In: Formal description of programming concepts III. North-Holland, Amsterdam, pp 135–166

  30. de Moura HP, Watt DA (1994) Action transformations in the ACTRESS compiler generator. In: CC ’94. LNCS, vol 786. Springer, Berlin, pp 16–60

  31. Plotkin GD (2004) A structural approach to operational semantics. J Log Algebraic Program 60–61: 17–139

    MathSciNet  Google Scholar 

  32. Plotkin GD, Power AJ (2004) Computational effects and operations: an overview. In: Domains VI. ENTCS, vol 73. Elsevier, Amsterdam, pp 149–163

  33. Scott E, Johnstone A (2006) Right nulled GLR parsers. ACM Trans Program Lang Syst 28(4): 577–618

    Article  Google Scholar 

  34. Scott E, Johnstone A (2010) GLL parsing. In: LDTA 2009, ENTCS. Elsevier, Amsterdam (to appear)

  35. Scott E, Johnstone A, Economopoulos G (2007) A cubic Tomita-style GLR parsing algorithm. Acta Inf 44(6): 427–461

    Article  MATH  MathSciNet  Google Scholar 

  36. Stärk R, Schmid J, Börger E (2001) Java and the Java Virtual Machine. Springer, Berlin

    MATH  Google Scholar 

  37. van den Brand M, van Deursen A, Heering J, de Jong HA, de Jonge M, Kuipers T, Klint P, Moonen L, Olivier PA, Scheerder J, Vinju JJ, Visser E, Visser J (2001) The ASF+SDF meta-environment: a component-based language development environment. In: CC 2001. LNCS, vol 2027. Springer, Berlin, pp 365–370

  38. van den Brand M, Scheerder J, Vinju JJ, Visser E (2002) Disambiguation filters for scannerless generalized LR parsers. In: CC 2002. LNCS, vol 2304. Springer, Berlin, pp 143–158

  39. van den Brand M, Iversen J, Mosses PD (2006) An action environment. Sci Comput Program 61(3): 245–264

    Article  MATH  Google Scholar 

  40. van Deursen A, Heering J, Klint P (eds) (1996) Language prototyping: an algebraic specification approach, AMAST series in computing, vol 5. World Scientific, Singapore

  41. Visser E (1997) Syntax definition for language prototyping. PhD thesis, University of Amsterdam

  42. Visser E (2004) Program transformation with Stratego/XT: Rules, strategies, tools, and systems in Stratego/XT 0.9. In: Domain-specific program generation. LNCS, vol 3016. Springer, Berlin, pp 216–238

  43. Watt DA (1988) An action semantics of Standard ML. In: MFPS III. LNCS, vol 298. Springer, Berlin, pp 572–598

  44. Watt DA (2004) Programming language design concepts. John Wiley & Sons, New York

    Google Scholar 

  45. Watt DA, Thomas M (1991) Programming language syntax and semantics. Prentice-Hall, Englewood Cliffs

    Google Scholar 

Download references

Author information

Authors and Affiliations

Authors

Corresponding author

Correspondence to Peter D. Mosses.

Rights and permissions

Reprints and permissions

About this article

Cite this article

Johnstone, A., Mosses, P.D. & Scott, E. An agile approach to language modelling and development. Innovations Syst Softw Eng 6, 145–153 (2010). https://doi.org/10.1007/s11334-009-0111-6

Download citation

  • Received:

  • Accepted:

  • Published:

  • Issue Date:

  • DOI: https://doi.org/10.1007/s11334-009-0111-6

Keywords

Navigation