Raw File
README.md
# Determining Programming Languages Complexity and Its Impact on Processing

<div align="center">
    <img src="http://www4.di.uminho.pt/~jmf/IMAGES/um_eeng.gif">
    <h1>Master's Dissertation</h1>
    <br>
</div>


## Table of Contents
- [Context](#context)
- [Objectives](#objectives)
- [About](#about)
- [Source Code](#source-code)
- [Documentation](#documentation)
- [Author](#author)

## Context
Tools for Programming Languages processing, like Static Analysers (for instance, a Static Application Security Testing (SAST) tool), must be adapted to cope with a different input when the source programming language changes. Complexity of the programming language is one of the key factors that deeply impact the time of giving support to it.

This work aims at proposing an approach for assessing language complexity, measuring, at a first stage, the complexity of its underlying context-free grammar (CFG). From the analysis of concrete case studies, factors have been identified that make the support process more time-consuming, in particular in the stages of language recognition and in the transformation to an abstract syntax tree (AST). In this sense, at a second stage, a set of language characteristics is analysed in order to take into account the referred factors that also impact on the language processing.

## Objectives
The principal goal of the project here reported is to help development teams to improve the estimation of time and effort needed to cope with a new programming language. In the paper a tool is proposed, and its prototype is presented, that allows the evaluation of the complexity of a language based on a set of metrics to classify the complexity of its grammar, along with a set of properties. The tool compares the new language complexity so far determined with previously supported languages, to predict the effort to process the new language.

## About
The principal goal of this tool is to help language support teams to improve the estimation of time and effort needed to cope with a new programming language.
This tool allows the evaluation of the complexity of a language based on a set of metrics to classify the complexity of its grammar, along with a set of properties.
The tool compares the new language complexity so far determined with previously supported languages, to predict the effort to process the new language.

## Source Code
The source code for this application can be found in the following [directory](src).

## Documentation
You can find extra documentation in the following [folder](doc). 

## Author
[Gonçalo Pinto (A83732)](https://github.com/GRP99) et al.

<div align="center">
  <sub>2021 - 2022</sub>
</div>
back to top