Maison > interface Web > tutoriel CSS > Créons un petit langage de programmation

Créons un petit langage de programmation

William Shakespeare
Libérer: 2025-03-13 11:18:10
original
757 Les gens l'ont consulté

Créons un petit langage de programmation

Vous connaissez peut-être déjà un ou plusieurs langages de programmation. Mais avez-vous déjà réfléchi à la façon de créer votre propre langage de programmation? Je veux dire:

Un langage de programmation est un ensemble de règles qui convertissent les chaînes en différentes sorties de code machine.

En bref, un langage de programmation n'est qu'un ensemble de règles prédéfinies. Pour le rendre utile, vous avez besoin de quelque chose qui peut comprendre ces règles, telles que les compilateurs , les interprètes , etc. Nous pouvons donc simplement définir certaines règles, puis, pour le faire fonctionner, nous pouvons écrire un programme qui peut comprendre ces règles en utilisant tout langage de programmation existant, qui deviendra notre interprète.

Compilateur

Le compilateur convertit le code en code machine que le processeur peut exécuter (comme un compilateur C).

Interprète

L'interprète passe par le programme ligne par ligne et exécute chaque commande.

Vous voulez l'essayer? Créons un langage de programmation super simple qui sortit la sortie magenta dans la console. Nous l'appelons Magenta .

Configurez notre langage de programmation

Je vais utiliser Node.js, mais vous pouvez apprendre dans n'importe quelle langue et le concept reste le même. Permettez-moi d'abord de créer un fichier index.js et de le configurer.

 classe Magenta {
  constructeur (codes) {
    this.codes = codes;
  }
  courir() {
    console.log (this.codes);
  }
}

// Actuellement, nous stockons le code dans une variable de chaîne appelée `codes` // Plus tard, nous lirons le code à partir du fichier const codes =` imprimer "Hello World"
Imprimez "Hello Again" `;
const magenta = new magenta (codes);
magenta.run ();
Copier après la connexion

Ce que nous faisons ici, c'est déclarer une classe appelée Magenta. Cette classe définit et initialise un objet responsable de l'enregistrement du texte à la console à l'aide de tout texte que nous fournissons via la variable des codes. Et, à l'heure actuelle, nous avons défini la variable des codes directement à l'aide de plusieurs messages "Hello" dans le fichier.

OK, maintenant nous devons créer un soi-disant analyseur lexical.

Qu'est-ce qu'un analyseur lexical?

Ok, parlons d'abord de l'anglais. Veuillez consulter les phrases suivantes:

Êtes-vous ok?

Ici, "Hello" est une salutation ", est" un ton supplémentaire, et "vous" est un pronom personnel. Nous avons un point d'interrogation ("?") À la fin. Nous pouvons diviser n'importe quelle phrase ou phrase en de nombreux composants grammaticaux comme celui-ci. Une autre façon de distinguer ces parties est de les diviser en petites marques. Le programme qui divise le texte en balises est notre analyseur lexical .

Puisque notre langue est très petite, il n'a que deux types de balises, chacune avec une valeur:

  1. Mots clés
  2. Chaîne

Nous pouvons utiliser des expressions régulières pour extraire des balises des chaînes de codes, mais les performances seront très lentes. Une meilleure approche consiste à parcourir chaque caractère de la chaîne de code et à obtenir la balise. Créons donc une méthode de tokenize dans la classe magenta - ce sera notre analyseur lexical.

Code complet `` javascript class Magenta { constructor(codes) { this.codes = codes; } tokenize() { const length = this.codes.length; // pos 用于跟踪当前位置/索引let pos = 0; let tokens = []; const BUILT_IN_KEYWORDS = ["print"]; // 变量/关键字允许的字符const varChars = "abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ_"; while (pos <code>); } } return tokens; } parse(tokens) { const len = tokens.length; let pos = 0; while (pos ); );

Const codes = print "hello world" print "hello again" ; const Magenta = new Magenta (codes);

### Définir les règles et la syntaxe que nous voulons voir si notre ordre de code correspond à une règle ou une syntaxe. Mais nous devons d'abord définir quelles sont ces règles et syntaxes. Étant donné que notre langue est très petite, elle n'a qu'une simple syntaxe, à savoir le mot-clé d'impression suivi d'une chaîne.
Copier après la connexion

Mot-clé: chaîne d'impression

<code>因此,让我们创建一个解析方法,该方法循环遍历我们的标记,并查看我们是否形成了有效的语法。如果是这样,它将采取必要的措施。 ```javascript class Magenta { constructor(codes) { this.codes = codes; } tokenize() { /* tokenizer 的先前代码*/ } parse(tokens) { const len = tokens.length; let pos = 0; while (pos </code>
Copier après la connexion

Regarder! Nous avons déjà une langue de travail!

OK, mais mettre le code dans une variable de chaîne n'est pas si amusant. Mettons donc notre code magenta dans un fichier appelé code.m. De cette façon, nous pouvons séparer le code magenta de la logique du compilateur. Nous utilisons .m comme extension de fichier pour indiquer que le fichier contient du code dans notre langue.

Livrons le code de ce fichier:

 // Importer le module du système de fichiers const fs = require ('fs');
// Importez le module de chemin pour faciliter la connexion PATH PATH = require ('path');
classe Magenta {
  constructeur (codes) {
    this.codes = codes;
  }
  tokenize () {
    / * Code précédent pour Tokenizer * /
  }
  Parse (jetons) {
    / * Code précédent de la méthode d'analyse * /
  }
  courir() {
    / * Code précédent de la méthode d'exécution * /
  }
}

// Lire le fichier code.m // Certains éditeurs de texte utilisent \ r \ n comme nouvelle ligne au lieu de \ n, nous supprimons donc \ r
codes constants = fs
  .readFilesYC (path.join (__ dirname, 'code.m'), 'utf8')
  .ToString ()
  .replace (/ \ r / g, "");
const magenta = new magenta (codes);
magenta.run ();
Copier après la connexion

Commencez à créer un langage de programmation!

De cette façon, nous avons réussi à créer un mini langage de programmation à partir de zéro. Voir, les langages de programmation peuvent être aussi simples que de terminer une chose spécifique. Bien sûr, il est peu probable que des langages comme Magenta ici puissent être utiles pour faire partie d'un cadre populaire, mais maintenant vous avez une idée de ce qu'il faut pour créer un langage de programmation.

Le ciel est la limite. Si vous souhaitez creuser plus profondément, essayez de suivre la vidéo que j'ai faite, qui présente un exemple plus avancé. Dans cette vidéo, je montre également comment ajouter des variables à votre langue.

Ce qui précède est le contenu détaillé de. pour plus d'informations, suivez d'autres articles connexes sur le site Web de PHP en chinois!

Déclaration de ce site Web
Le contenu de cet article est volontairement contribué par les internautes et les droits d'auteur appartiennent à l'auteur original. Ce site n'assume aucune responsabilité légale correspondante. Si vous trouvez un contenu suspecté de plagiat ou de contrefaçon, veuillez contacter admin@php.cn
Derniers articles par auteur
Tutoriels populaires
Plus>
Derniers téléchargements
Plus>
effets Web
Code source du site Web
Matériel du site Web
Modèle frontal