Faisons un langage simple avec PLY 1

introduction

Contexte

Qu'est-ce que PLY

Préparation

Installez PLY

$ pip install ply

Décidez quoi mettre en œuvre cette fois

la mise en oeuvre

Analyse de phrase

lex.py


import ply.lex as lex

tokens = (
  # Literals
  'ID',

  # Function
  'PUT', 'EXIT',
)

# Identifiers at var
t_ID = r'(?!put|exit)[A-Za-z_][A-Za-z0-9_]*'

# Function
t_PUT = r'put'
t_EXIT = r'exit'
# space is ignore

# space and tab is ignore
t_ignore = ' \t'

# comment  
t_ignore_COMMENT = r'\#.*'

# error handling
def t_error(t):
    print("Caractère illégal'%s'" % t.value[0])
    t.lexer.skip(1)

#
lex.lex(debug=0)

Analyse

Le code créé ci-dessous est affiché

yacc.py


import ply.yacc as yacc
from lex import tokens
import sys

names = {}

# var (id)
def p_expr_id(p):
    'expr : ID'
    try:
        p[0] = names[p[1]]
    except LookupError:
        print('Undefine var name %s' %p)
        p[0] = 0

# exit function
def p_exit(p):
    'expr : EXIT'   
    print('See You!')
    sys.exit()

# empty
def p_empty(p):
    'empty :'
    pass

# syntax error
def p_error(p):
    print ('Syntax error in input %s' %p)

parser = yacc.yacc()

# Debug
def parse(data, debug=0):  
    return yacc.parse(data, debug=debug)
    
if __name__ == '__main__':  
    while True:
        try:
            s = input('>>> ')
        except EOFError:
            break
        if not s:
            continue
        result = parser.parse(s)
        print (result)

Essayez de bouger

En fait, j'ai défini une variable, mais actuellement je ne peux rien faire Tout ce que vous pouvez faire est d'essayer la fonction de sortie

Exécution

$ python yacc.py
>>> exit
See You!
$

en conclusion

D'une manière ou d'une autre c'est devenu un écran comme ça et je suis sorti avec exit L'explication est devenue rude vers la fin

Référencé

J'ai créé un langage original "PPAPScript" qui a créé une image PPAP (Pen Pineapple Appo Pen) avec Python, [ryo-ma](http: / /qiita.com/ryo-ma).

Recommended Posts

Faisons un langage simple avec PLY 1
Essayez de créer un jeu simple avec Python 3 et iPhone
Faisons une interface graphique avec python.
Faisons une rupture de bloc avec wxPython
Faisons un graphe avec python! !!
Faisons un spacon avec xCAT
Faisons la voix lentement avec Python
Créez un framework Web avec Python! (1)
Faisons une IA à trois yeux avec Pylearn 2
Faisons un bot Twitter avec Python!
Créez un framework Web avec Python! (2)
Créez un simple générateur d'images par points avec Flask
Remplaçons UWSC par Python (5) Faisons un robot
Faisons un robot Discord.
[Pratique] Créez une application Watson avec Python! # 1 [Discrimination linguistique]
Créez un Slackbot simple avec un bouton interactif en python
[Jouons avec Python] Créer un livre de comptes de ménage
Faisons Othello avec wxPython
Facilitons un peu la gestion des dépendances avec pip
Faites une loterie avec Python
Créons une application Mac avec Tkinter et py2app
Essayez de créer une grille sphérique avec Rhinoceros / Grasshopper / GHPython
Qu'est-ce que Dieu? Créez un chatbot simple avec python
[Super facile] Faisons un LINE BOT avec Python.
Faire un feu avec kdeplot
Créons un client de socket Web avec Python. (Authentification par jeton d'accès)
[Pratique] Créez une application Watson avec Python! # 3 [Classification du langage naturel]
Créez un bot LINE avec GoogleAppEngine / py. Version nue simple
Faisons un diagramme sur lequel on peut cliquer avec IPython
Faisons une rumba distante [Matériel]
Faisons une rumba distante [Logiciel]
Faites un son avec le notebook Jupyter
Faisons un service de vente au comptant 2
Faisons un service de vente au comptant 1
Faisons l'IA d'Othello avec Chainer-Part 1-
Créer un système de recommandation avec python
Créer un filtre avec un modèle django
Faisons l'IA d'Othello avec Chainer-Part 2-
Créer un itérateur de modèle avec PySide
Faire un joli graphique avec plotly
Faisons un service de vente au comptant 3
Faisons une application WEB pour l'annuaire téléphonique avec flacon Partie 1
Rubyist a essayé de créer une API simple avec Python + bouteille + MySQL
Faisons un ordinateur de vélo avec Raspberry Pi Zero (W, WH)
Faisons une application WEB pour l'annuaire téléphonique avec flacon Partie 2
Essayez de créer un type de service Web avec un langage de balisage 3D
Faisons une application WEB pour l'annuaire téléphonique avec flacon Partie 3
Faisons une application WEB pour l'annuaire téléphonique avec flacon Partie 4
Faisons une discussion WEB en utilisant WebSocket avec AWS sans serveur (Python)!
Créer un fichier power simple avec Python
Lecteur RSS simple réalisé avec Django
Créer un lecteur vidéo avec PySimpleGUI + OpenCV
Écrivons un simple solveur de courant continu
Créons un groupe gratuit avec Python
Créez un simulateur de gacha rare avec Flask