Developing a Domain-specific Language for Date and Time Formats using MontiCore

Formats for representing and processing dates and times are elementary components for a plethora of software applications. Standards like the ISO 8601 defines unambiguous formats for representing dates in various precisions, starting from centuries (20), over usual dates (2025-01-10), down to fractions of a second (2025-10-01T11:47:32.342). Despite their importance and extensive support through standard libraries like Java’s time package, domain-specific languages (DSLs) mostly offer limited support for dates and time formats. Realizations do not adhere to standards or lack fundamental functionality to deal with dates.

This thesis addresses the absence of extensive date and time support for languages of the MontiCore ecosystem. Therefore, it further develops a language realizing the ISO 8601 and DIN 5008 standards. The tasks of this thesis include:

  • A literature review of existing DSLs and tools with support for date and time formats.
  • Refining the grammar of a prototype language that already parses the complete ISO 8601-1 and DIN 5008 standard.
  • Designing a language for the ISO 8601-2 standard to make durations parsable.
  • Creating convenient functions and context conditions backed by Java’s time classes to convert formats or check a date’s validity.
  • Realizing operations on dates and durations, e.g., Date + Duration = Date ( 2025-01-10 + 1d = 2025-01-11) or comparison Date < Date = Boolean ( 2025-01-10 < 2025-06-07 = true).
  • Testing your implementation in isolation and combination with other languages.

Our Offer

  • Extensive support and regular feedback during the development and writing of your thesis.
  • Sharpen your skills in the development of domain-specific languages and the usage of testing frameworks like JUnit 5.
  • Familiarize yourself with the design principles behind the object-oriented date/ time libraries.
  • Get an expert in standards for date/ time formats like the ISO 8601 or DIN 5008.

Your Profile

  • Pursuing a Master’s or Bachelor’s degree in Computer Science, or similar degree courses.
  • You have worked with MontiCore before, e.g., by successfully completing or attending the Software Language Engineering course.
  • High-quality standards for your own work.
  • The ability to independently develop solutions to complex problems.

Contact

For more information, please send a short description of your background and overview of grades to Marc Schmidt (schmidt@se-rwth.de).

Task Definition

Prof. Dr. Bernhard Rumpe Lehrstuhl Software Engineering Ahornstr. 55 52074 Aachen