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
andDIN 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 comparisonDate < 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
orDIN 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