🇬🇧:
In this project, I developed several Python scripts by implementing automata to process complex data and mathematical expressions. The approach was structured, allowing me to explore different aspects of data processing and validation through multiple stages.
First, I implemented automata capable of recognizing and validating different types of numeric values. These automata are designed to distinguish and process integers, decimal numbers, as well as numbers written with exponents. Their purpose is to ensure that these numeric values adhere to a predefined format and provide a robust tool for validating numeric data in various contexts.
Next, I designed an infix calculator to manipulate and evaluate mathematical expressions. Unlike prefix or postfix notations, infix notation is the most common and uses the traditional order of operators, as in a standard expression. Developing this calculator allowed me to work on the analysis and interpretation of infix expressions, correctly handling operator precedence and resolving expressions in the proper order. This project was an excellent exercise in applying algorithms and managing mathematical logic.
Finally, I integrated a script to separate and analyze lexemes and tokens. This process, known as lexing, forms the first stage of compilation or syntactic analysis, breaking down a string of instructions into distinct lexical units (tokens). This step is crucial for interpreting instructions, as it separates the different components of an expression or program, facilitating future analyses. The script checks for the presence or absence of specific tokens, validating the instructions according to defined criteria.
Overall, this project was a rich experience that allowed me to deepen my skills in algorithm design, numeric data validation, and syntactic analysis. By using automata, I was able to create tools capable of processing and interpreting complex data, while strengthening my programming knowledge and analysis of mathematical expressions. It also gave me the opportunity to apply my theoretical knowledge in formal language theory, particularly regular and context-free grammars.
🇫🇷:
Dans ce projet, j'ai développé plusieurs scripts en Python en mettant en œuvre des automates pour traiter des données et des expressions mathématiques complexes. L'approche a été structurée, me permettant d'explorer différentes facettes du traitement et de la validation des données à travers plusieurs étapes.
Tout d'abord, j'ai implémenté des automates capables de reconnaître et de valider différents types de valeurs numériques. Ces automates sont conçus pour distinguer et traiter les entiers, les nombres décimaux, ainsi que les nombres écrits avec des exposants. Leur objectif est de s'assurer que ces valeurs numériques respectent un format prédéfini et de fournir un outil robuste pour la validation des données numériques dans divers contextes.
Ensuite, j'ai conçu une calculatrice infixe qui permet de manipuler et d'évaluer des expressions mathématiques. Contrairement aux notations préfixe ou postfixe, la notation infixe est la plus courante et utilise l'ordre traditionnel des opérateurs, comme dans une expression classique. Le développement de cette calculatrice m'a permis de travailler sur l'analyse et l'interprétation des expressions infixes, en traitant correctement les priorités des opérateurs et en résolvant les expressions dans l'ordre approprié. Ce projet a été un excellent exercice de mise en pratique des algorithmes et de la gestion de la logique mathématique.
Enfin, j'ai intégré un script permettant de séparer et d'analyser les lexèmes et les tokens. Ce processus de lexing, qui constitue la première étape de la compilation ou de l'analyse syntaxique, permet de décomposer une chaîne d'instructions en unités lexicales distinctes (les tokens). Cette étape est cruciale pour l'interprétation des instructions, car elle permet de séparer les différents composants d'une expression ou d'un programme afin de faciliter les analyses futures. Le script vérifie la présence ou l'absence de tokens spécifiques, validant ainsi les instructions selon les critères définis.
Dans l'ensemble, ce projet a été une expérience riche qui m'a permis d'approfondir mes compétences en algorithmie, en validation des données numériques, et en analyse syntaxique. Grâce à l'utilisation d'automates, j'ai pu créer des outils capables de traiter et d'interpréter des données complexes, tout en renforçant mes connaissances en programmation et en analyse d'expressions mathématiques. Cela a aussi permit de mettre en pratique mes connaissances théoriques en théorie des langages, particulièrement les grammaires régulières et hors-contexte.