Skip to main content

Part of the book series: Lecture Notes in Computer Science ((LNPSE,volume 7680))

Abstract

This is the true story of the development of a PL/I compiler for Microsoft’s .NET platform. This compiler uses a front-end originally designed for legacy modernization purposes. It was developed without any influence on the language design that was thus imposed upon the development team. It targets a virtual machine with an architecture totally different from the one PL/1 was designed for. The impact of these factors on the the development and architecture are discussed.

More pragmatic concerns such as compile-time performance, testing and quality control, emulating PL/I numeric data types, CICS and SQL extensions are discussed as well.

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

Access this chapter

Chapter
USD 29.95
Price excludes VAT (USA)
  • Available as PDF
  • Read on any device
  • Instant download
  • Own it forever
eBook
USD 39.99
Price excludes VAT (USA)
  • Available as PDF
  • Read on any device
  • Instant download
  • Own it forever
Softcover Book
USD 54.99
Price excludes VAT (USA)
  • Compact, lightweight edition
  • Dispatched in 3 to 5 business days
  • Free shipping worldwide - see info

Tax calculation will be finalised at checkout

Purchases are for personal use only

Institutional subscriptions

Preview

Unable to display preview. Download preview PDF.

Unable to display preview. Download preview PDF.

References

  1. ASIS Working Group (ASISWG), http://www.sigada.org/WG/asiswg/ (last visited: June 1, 2012)

  2. CICS, http://en.wikipedia.org/wiki/CICS (last visited: June 1, 2012)

  3. Clerity Solutions’ website, http://www.clerity.com (last visited: June 1, 2012)

  4. The cocolab website, http://www.cocolab.com (last visited: June 1, 2012)

  5. Conversions from scaled FIXED BINARY, http://publib.boulder.ibm.com/infocenter/ratdevz/v7r5/index.jsp?topic=/com.ibm.ent.pl1.zos.doc/topics/ibmm2mst195.html (last visited: December 6, 2011)

  6. Eclipse Java development tools (JDT), http://www.eclipse.org/jdt/ (last visited: June 1, 2012)

  7. Enterprise java beans, http://jcp.org/en/jsr/detail?id=318 (last visited: June 1, 2012)

  8. Fujitsu NetCOBOL for .NET, http://www.netcobol.com/products/Fujitsu-NetCOBOL-for-.NET/overview

  9. Hierarchical Visitor Pattern, http://c2.com/cgi/wiki?HierarchicalVisitorPattern (last visited: June 1, 2012)

  10. HTWC’s website, http://www.htwc.com (last visited: June 1, 2012)

  11. ILASM, http://msdn.microsoft.com/en-us/library/496e4ekx.aspx (last visited: June 1, 2012)

  12. Internet Information Services, http://www.microsoft.com/windowsserver2008/en/us/internet-information-services.aspx (last visited: June 1, 2012)

  13. MicroFocus COBOL SQL Option Preprocessor, http://supportline.microfocus.com/documentation/books/sx40sp2/spsqlp.htm

  14. Multics, http://en.wikipedia.org/wiki/Multics (last visited: June 1, 2012)

  15. PEVerify Tool, http://msdn.microsoft.com/en-us/library/62bwd2yd.aspx (last visited: June 1, 2012)

  16. PL/M, http://en.wikipedia.org/wiki/PL/M (last visited: June 1, 2012)

  17. PL/S, http://en.wikipedia.org/wiki/PL/S (last visited: June 1, 2012)

  18. Tuxedo ART, http://www.oracle.com/us/products/middleware/tuxedo/tuxedo-11g-feature-066057.html (last visited: June 1, 2012)

  19. The Multics PL/1 Compiler (1969), http://www.multicians.org/pl1-raf.html (last visited: June 1, 2012)

  20. z/OS V1R7.0 MVS JCL Reference, International Business Machines, 1988 (2006) (last visited: June 1, 2012)

    Google Scholar 

  21. Decimal structure (2010), http://msdn.microsoft.com/en-us/library/system.decimal.aspx (last visited: June 1, 2012)

  22. Point structure (2010), http://msdn.microsoft.com/en-us/library/system.windows.point.aspx (last visited: June 1, 2012)

  23. Ada. Reference Manual for the Ada Programming Language, ANSI/MIL-std 1815-a. U.S. Department of Defense (1983)

    Google Scholar 

  24. Blasband, D.: The YAFL Programming Language, 2nd edn., PhiDaNi Software (1994)

    Google Scholar 

  25. Blasband, D.: Automatic analysis of ancient languages. PhD thesis, Université Libre de Bruxelles (2000)

    Google Scholar 

  26. Blasband, D.: Parsing in a hostile world. In: WCRE, pp. 291–300 (2001)

    Google Scholar 

  27. Blasband, D.: Hard facts vs soft facts. In: Hassan, A.E., Zaidman, A., Penta, M.D. (eds.) WCRE, pp. 301–304. IEEE (2008)

    Google Scholar 

  28. Blasband, D., Real, J.-C.: All-purpose quantifiers in an OO language. In: Proceedings of TOOLS Asia 1998 (1998)

    Google Scholar 

  29. Bravenboer, M., Kalleberg, K.T., Vermaas, R., Visser, E.: Stratego/xt 0.17. a language and toolset for program transformation. Sci. Comput. Program. 72(1-2), 52–70 (2008)

    Article  MathSciNet  Google Scholar 

  30. Kernighan, B.W., Ritchie, D.M.: The C programming language. Prentice-Hall (1989)

    Google Scholar 

  31. Burke, M., Fisher Jr., G.A.: A practical method for syntactic error diagnosis and recovery. In: Proceedings of the SIGPLAN 1982 Symposium on Compiler Construction, pp. 67–78. ACM (1982)

    Google Scholar 

  32. Corbato, F.J., Vyssotsky, V.A.: Introduction and overview of the multics system. In: AFIPS Conf. Proc., vol. 27, pp. 185–196 (1965)

    Google Scholar 

  33. Cordy, J.R.: The TXL source transformation language. Sci. Comput. Program 61(3), 190–210 (2006)

    Article  MathSciNet  MATH  Google Scholar 

  34. de Jonge, M., Nilsson-Nyman, E., Kats, L.C.L., Visser, E.: Natural and Flexible Error Recovery for Generated Parsers. In: van den Brand, M., Gašević, D., Gray, J. (eds.) SLE 2009. LNCS, vol. 5969, pp. 204–223. Springer, Heidelberg (2010)

    Chapter  Google Scholar 

  35. DeRemer, F.: Simple LR(k) grammars. Communications of the ACM 14(7), 453–460 (1971)

    Article  MathSciNet  MATH  Google Scholar 

  36. DeRemer, F., Pennello, T.J.: Efficient computation of LALR(1) lookahead sets. ACM Transactions on Programming Languages and Systems 4(4), 615–649 (1982)

    Article  MATH  Google Scholar 

  37. Dijkstra, E.W.: The humble programmer. Commun. ACM 15(10), 859–866 (1972)

    Article  Google Scholar 

  38. Earley, J.: An efficient context-free parsing algorithm. Communications of the ACM 13(2) (1970)

    Google Scholar 

  39. Ekman, T., Hedin, G.: The jastadd extensible java compiler. In: Gabriel, R.P., Bacon, D.F., Lopes, C.V., Jr, G.L.S. (eds.) OOPSLA, pp. 1–18. ACM (2007)

    Google Scholar 

  40. Ellis, M.A., Stroustrup, B.: The Annotated C++ Reference Manual. Addison-Wesley, Reading (1990) ISBN 0-201-51459-1

    Google Scholar 

  41. Grosch, J.: Lark - An LR(1) Parser Generator With Backtracking. Technical report, CoCoLab - Datenverarbeitung (April 1998)

    Google Scholar 

  42. Grosch, J.: Personal communication (2012)

    Google Scholar 

  43. Herman, D.: The C Typedef Parsing Problem (2009), http://calculist.blogspot.com/2009/02/c-typedef-parsing-problem.html (last visited: June 1st, 2012)

  44. Holt, R.C.: Teaching the fatal disease: (or) introductory computer programming using pl/i. SIGPLAN Not. 8, 8–23 (1973)

    Article  Google Scholar 

  45. Hopcroft, J., Ullman, J.: Introduction to Automata Theory, Languages, and Computation. Addison-Wesley (1979)

    Google Scholar 

  46. Horning, J.J.: What the Compiler Should Tell the User. In: Bauer, F.L., Griffiths, M., Hornig, J.J., McKeeman, W.M., Waite, W.M., DeRemer, F.L., Hill, U., Koster, C.H.A., Poole, P.C. (eds.) CC 1974. LNCS, vol. 21, pp. 525–548. Springer, Heidelberg (1974)

    Chapter  Google Scholar 

  47. Hudak, P., Makucevich, T., Gadde, S., Whong, B.: Haskore music notation - an algebra of music. J. of Functional Programming 6(3), 465–483 (1996)

    Article  Google Scholar 

  48. Hutton, G.: Programming in Haskell. Cambridge Univ. Press, Cambridge (2007)

    Book  MATH  Google Scholar 

  49. International Business Machines. CICS, http://www-4.ibm.com/software/ts/cics/ (last visited: June 1st, 2012)

  50. International Business Machines Corp., OS and DOS PL/1 Language Reference Manual (1981)

    Google Scholar 

  51. Johnson, S.C.: YACC — Yet another compiler - compiler. Computing Science Technical Report No. 32, Bell Laboratories, Murray Hill, N.J. (1975)

    Google Scholar 

  52. Jones, C.: The Year 2000 Software Problem - Quantifying the Costs and Assessing the Consequences. Addison-Wesley (1998) ISBN 978-0201309645

    Google Scholar 

  53. Kadhim, B.M.: Debugger generation in a compiler generation system. PhD thesis, University of Colorado (1998)

    Google Scholar 

  54. Klint, P., Visser, E.: Using Filters for the Disambiguation of Context-free Grammars. Technical Report P9426, Programming Research Group, University of Amsterdam (December 1994)

    Google Scholar 

  55. Klint, P., Visser, E.: Using filters for the disambiguation of context-free grammars (March 16, 1994)

    Google Scholar 

  56. Lang, B.: Deterministic Techniques for Efficient Non-Deterministic Parsers. In: Loeckx, J. (ed.) ICALP 1974. LNCS, vol. 14, pp. 255–269. Springer, Heidelberg (1974)

    Chapter  Google Scholar 

  57. McPeak, S., Necula, G.C.: Elkhound: A Fast, Practical GLR Parser Generator. In: Duesterwald, E. (ed.) CC 2004. LNCS, vol. 2985, pp. 73–88. Springer, Heidelberg (2004)

    Chapter  Google Scholar 

  58. Meyer, B.: Eiffel: The Language. Prentice-Hall (1992) ISBN 0-13-247925-7

    Google Scholar 

  59. Moonen, L.: Generating robust parsers using island grammars. In: WCRE, pp. 13–22 (2001)

    Google Scholar 

  60. Naur, P., et al.: Report on the algorithmic language ALGOL 60. Communications of the ACM 3(5), 299–314 (1960)

    Article  MathSciNet  MATH  Google Scholar 

  61. Nilsson-Nyman, E., Ekman, T., Hedin, G.: Practical Scope Recovery Using Bridge Parsing. In: Gašević, D., Lämmel, R., Van Wyk, E. (eds.) SLE 2008. LNCS, vol. 5452, pp. 95–113. Springer, Heidelberg (2009)

    Chapter  Google Scholar 

  62. Parr, T.J., Quong, R.W.: ANTLR: A Predicated- LL(k) Parser Generator. Software - Practice and Experience 25(7), 789–810 (1995)

    Article  Google Scholar 

  63. Ramsey, N.: Eliminating spurious error messages using exceptions, polymorphism, and higher-order functions. Dept of Computer Science, University of Virginia (1996)

    Google Scholar 

  64. Sloane, A.M.: Post-design domain-specific language embedding: A case study in the software engineering domain. In: HICSS, p. 281 (2002)

    Google Scholar 

  65. Smith, B.C.: Reflection and semantics in a procedural language. Technical Report TR-272. MIT, Cambridge, MA (1982)

    Google Scholar 

  66. Synytskyy, N., Cordy, J.R., Dean, T.R.: Robust multilingual parsing using island grammars. In: CASCON, pp. 266–278. IBM (2003)

    Google Scholar 

  67. Tomita, M.: An efficient context-free parsing algorithm for natural languages. IJCAI 2, 756–764 (1985)

    Google Scholar 

  68. Vadim Maslov, C.D.: BTYacc – Backtracking yacc – home page, http://www.siber.com/btyacc/ (last visited: June 1, 2012)

  69. van den Brand, M., Sellink, M.P.A., Verhoef, C.: Current parsing techniques in software renovation considered harmful. In: IWPC, p. 108. IEEE Computer Society (1998)

    Google Scholar 

  70. Van Wyk, E., Krishnan, L., Bodin, D., Schwerdfeger, A.: Attribute Grammar-Based Language Extensions for Java. In: Bateni, M. (ed.) ECOOP 2007. LNCS, vol. 4609, pp. 575–599. Springer, Heidelberg (2007)

    Chapter  Google Scholar 

  71. Visser, E.: Scannerless generalized-LR parsing. Technical Report P9707, Programming Research Group, University of Amsterdam (July 1997)

    Google Scholar 

  72. Wagner, T.A., Graham, S.L.: Incremental analysis of real programming languages. In: PLDI, pp. 31–43 (1997)

    Google Scholar 

  73. Clocksin, W.F., Mellish, C.S.: Programming in Prolog, 4th edn. Springer (1994) ISBN 3-540-58350-5

    Google Scholar 

  74. Wirth, N.: The design of a PASCAL compiler. Software–Practice and Experience 1(4), 309–333 (1971)

    Article  MATH  Google Scholar 

  75. Wirth, N.: Programming in Modula II, 4th edn. Springer (1988) ISBN 3-540-50150-9

    Google Scholar 

Download references

Author information

Authors and Affiliations

Authors

Editor information

Editors and Affiliations

Rights and permissions

Reprints and permissions

Copyright information

© 2013 Springer-Verlag Berlin Heidelberg

About this chapter

Cite this chapter

Blasband, D. (2013). Compilation of Legacy Languages in the 21st Century. In: Lämmel, R., Saraiva, J., Visser, J. (eds) Generative and Transformational Techniques in Software Engineering IV. GTTSE 2011. Lecture Notes in Computer Science, vol 7680. Springer, Berlin, Heidelberg. https://doi.org/10.1007/978-3-642-35992-7_1

Download citation

  • DOI: https://doi.org/10.1007/978-3-642-35992-7_1

  • Publisher Name: Springer, Berlin, Heidelberg

  • Print ISBN: 978-3-642-35991-0

  • Online ISBN: 978-3-642-35992-7

  • eBook Packages: Computer ScienceComputer Science (R0)

Publish with us

Policies and ethics