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.
Access this chapter
Tax calculation will be finalised at checkout
Purchases are for personal use only
Preview
Unable to display preview. Download preview PDF.
References
ASIS Working Group (ASISWG), http://www.sigada.org/WG/asiswg/ (last visited: June 1, 2012)
CICS, http://en.wikipedia.org/wiki/CICS (last visited: June 1, 2012)
Clerity Solutions’ website, http://www.clerity.com (last visited: June 1, 2012)
The cocolab website, http://www.cocolab.com (last visited: June 1, 2012)
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)
Eclipse Java development tools (JDT), http://www.eclipse.org/jdt/ (last visited: June 1, 2012)
Enterprise java beans, http://jcp.org/en/jsr/detail?id=318 (last visited: June 1, 2012)
Fujitsu NetCOBOL for .NET, http://www.netcobol.com/products/Fujitsu-NetCOBOL-for-.NET/overview
Hierarchical Visitor Pattern, http://c2.com/cgi/wiki?HierarchicalVisitorPattern (last visited: June 1, 2012)
HTWC’s website, http://www.htwc.com (last visited: June 1, 2012)
ILASM, http://msdn.microsoft.com/en-us/library/496e4ekx.aspx (last visited: June 1, 2012)
Internet Information Services, http://www.microsoft.com/windowsserver2008/en/us/internet-information-services.aspx (last visited: June 1, 2012)
MicroFocus COBOL SQL Option Preprocessor, http://supportline.microfocus.com/documentation/books/sx40sp2/spsqlp.htm
Multics, http://en.wikipedia.org/wiki/Multics (last visited: June 1, 2012)
PEVerify Tool, http://msdn.microsoft.com/en-us/library/62bwd2yd.aspx (last visited: June 1, 2012)
PL/M, http://en.wikipedia.org/wiki/PL/M (last visited: June 1, 2012)
PL/S, http://en.wikipedia.org/wiki/PL/S (last visited: June 1, 2012)
Tuxedo ART, http://www.oracle.com/us/products/middleware/tuxedo/tuxedo-11g-feature-066057.html (last visited: June 1, 2012)
The Multics PL/1 Compiler (1969), http://www.multicians.org/pl1-raf.html (last visited: June 1, 2012)
z/OS V1R7.0 MVS JCL Reference, International Business Machines, 1988 (2006) (last visited: June 1, 2012)
Decimal structure (2010), http://msdn.microsoft.com/en-us/library/system.decimal.aspx (last visited: June 1, 2012)
Point structure (2010), http://msdn.microsoft.com/en-us/library/system.windows.point.aspx (last visited: June 1, 2012)
Ada. Reference Manual for the Ada Programming Language, ANSI/MIL-std 1815-a. U.S. Department of Defense (1983)
Blasband, D.: The YAFL Programming Language, 2nd edn., PhiDaNi Software (1994)
Blasband, D.: Automatic analysis of ancient languages. PhD thesis, Université Libre de Bruxelles (2000)
Blasband, D.: Parsing in a hostile world. In: WCRE, pp. 291–300 (2001)
Blasband, D.: Hard facts vs soft facts. In: Hassan, A.E., Zaidman, A., Penta, M.D. (eds.) WCRE, pp. 301–304. IEEE (2008)
Blasband, D., Real, J.-C.: All-purpose quantifiers in an OO language. In: Proceedings of TOOLS Asia 1998 (1998)
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)
Kernighan, B.W., Ritchie, D.M.: The C programming language. Prentice-Hall (1989)
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)
Corbato, F.J., Vyssotsky, V.A.: Introduction and overview of the multics system. In: AFIPS Conf. Proc., vol. 27, pp. 185–196 (1965)
Cordy, J.R.: The TXL source transformation language. Sci. Comput. Program 61(3), 190–210 (2006)
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)
DeRemer, F.: Simple LR(k) grammars. Communications of the ACM 14(7), 453–460 (1971)
DeRemer, F., Pennello, T.J.: Efficient computation of LALR(1) lookahead sets. ACM Transactions on Programming Languages and Systems 4(4), 615–649 (1982)
Dijkstra, E.W.: The humble programmer. Commun. ACM 15(10), 859–866 (1972)
Earley, J.: An efficient context-free parsing algorithm. Communications of the ACMÂ 13(2) (1970)
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)
Ellis, M.A., Stroustrup, B.: The Annotated C++ Reference Manual. Addison-Wesley, Reading (1990) ISBN 0-201-51459-1
Grosch, J.: Lark - An LR(1) Parser Generator With Backtracking. Technical report, CoCoLab - Datenverarbeitung (April 1998)
Grosch, J.: Personal communication (2012)
Herman, D.: The C Typedef Parsing Problem (2009), http://calculist.blogspot.com/2009/02/c-typedef-parsing-problem.html (last visited: June 1st, 2012)
Holt, R.C.: Teaching the fatal disease: (or) introductory computer programming using pl/i. SIGPLAN Not. 8, 8–23 (1973)
Hopcroft, J., Ullman, J.: Introduction to Automata Theory, Languages, and Computation. Addison-Wesley (1979)
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)
Hudak, P., Makucevich, T., Gadde, S., Whong, B.: Haskore music notation - an algebra of music. J. of Functional Programming 6(3), 465–483 (1996)
Hutton, G.: Programming in Haskell. Cambridge Univ. Press, Cambridge (2007)
International Business Machines. CICS, http://www-4.ibm.com/software/ts/cics/ (last visited: June 1st, 2012)
International Business Machines Corp., OS and DOS PL/1 Language Reference Manual (1981)
Johnson, S.C.: YACC — Yet another compiler - compiler. Computing Science Technical Report No. 32, Bell Laboratories, Murray Hill, N.J. (1975)
Jones, C.: The Year 2000 Software Problem - Quantifying the Costs and Assessing the Consequences. Addison-Wesley (1998) ISBN 978-0201309645
Kadhim, B.M.: Debugger generation in a compiler generation system. PhD thesis, University of Colorado (1998)
Klint, P., Visser, E.: Using Filters for the Disambiguation of Context-free Grammars. Technical Report P9426, Programming Research Group, University of Amsterdam (December 1994)
Klint, P., Visser, E.: Using filters for the disambiguation of context-free grammars (March 16, 1994)
Lang, B.: Deterministic Techniques for Efficient Non-Deterministic Parsers. In: Loeckx, J. (ed.) ICALP 1974. LNCS, vol. 14, pp. 255–269. Springer, Heidelberg (1974)
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)
Meyer, B.: Eiffel: The Language. Prentice-Hall (1992) ISBN 0-13-247925-7
Moonen, L.: Generating robust parsers using island grammars. In: WCRE, pp. 13–22 (2001)
Naur, P., et al.: Report on the algorithmic language ALGOL 60. Communications of the ACM 3(5), 299–314 (1960)
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)
Parr, T.J., Quong, R.W.: ANTLR: A Predicated- LL(k) Parser Generator. Software - Practice and Experience 25(7), 789–810 (1995)
Ramsey, N.: Eliminating spurious error messages using exceptions, polymorphism, and higher-order functions. Dept of Computer Science, University of Virginia (1996)
Sloane, A.M.: Post-design domain-specific language embedding: A case study in the software engineering domain. In: HICSS, p. 281 (2002)
Smith, B.C.: Reflection and semantics in a procedural language. Technical Report TR-272. MIT, Cambridge, MA (1982)
Synytskyy, N., Cordy, J.R., Dean, T.R.: Robust multilingual parsing using island grammars. In: CASCON, pp. 266–278. IBM (2003)
Tomita, M.: An efficient context-free parsing algorithm for natural languages. IJCAI 2, 756–764 (1985)
Vadim Maslov, C.D.: BTYacc – Backtracking yacc – home page, http://www.siber.com/btyacc/ (last visited: June 1, 2012)
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)
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)
Visser, E.: Scannerless generalized-LR parsing. Technical Report P9707, Programming Research Group, University of Amsterdam (July 1997)
Wagner, T.A., Graham, S.L.: Incremental analysis of real programming languages. In: PLDI, pp. 31–43 (1997)
Clocksin, W.F., Mellish, C.S.: Programming in Prolog, 4th edn. Springer (1994) ISBN 3-540-58350-5
Wirth, N.: The design of a PASCAL compiler. Software–Practice and Experience 1(4), 309–333 (1971)
Wirth, N.: Programming in Modula II, 4th edn. Springer (1988) ISBN 3-540-50150-9
Author information
Authors and Affiliations
Editor information
Editors and Affiliations
Rights 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)