[PYTHON] Lassen Sie uns mit PLY 1 eine einfache Sprache erstellen

Einführung

Hintergrund

Was ist PLY?

Vorbereitung

Installieren Sie PLY

$ pip install ply

Entscheiden Sie, was dieses Mal implementiert werden soll

Implementierung

Phrasenanalyse

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("Unzulässiges Zeichen'%s'" % t.value[0])
    t.lexer.skip(1)

#
lex.lex(debug=0)

Parsing

Der unten erstellte Code wird angezeigt

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)

Versuche dich zu bewegen

Eigentlich habe ich eine Variable definiert, aber ich kann im Moment nichts tun Sie können lediglich die Exit-Funktion ausprobieren

Ausführung

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

abschließend

Irgendwie wurde es so ein Bildschirm und ich stieg mit dem Ausgang aus Die Erklärung ist gegen Ende grob geworden

Referenziert

Ich habe eine Originalsprache "PPAPScript" erstellt, die PPAP (Pen Pineapple Appo Pen) mit Python abgebildet hat, [ryo-ma](http: / /qiita.com/ryo-ma).

Recommended Posts

Lassen Sie uns mit PLY 1 eine einfache Sprache erstellen
Versuchen Sie, ein einfaches Spiel mit Python 3 und iPhone zu erstellen
Lassen Sie uns eine GUI mit Python erstellen.
Machen wir einen Blockbruch mit wxPython
Lassen Sie uns ein Diagramm mit Python erstellen! !!
Machen wir mit xCAT einen Spacon
Lassen Sie uns mit Python langsam sprechen
Erstellen Sie ein Webframework mit Python! (1)
Machen wir mit Pylearn 2 eine dreiäugige KI
Machen wir einen Twitter-Bot mit Python!
Erstellen Sie ein Webframework mit Python! (2)
Erstellen Sie mit Flask einen einfachen Punktbildgenerator
Ersetzen wir UWSC durch Python (5) Machen wir einen Roboter
Machen wir einen Discord Bot.
[Übung] Erstellen Sie eine Watson-App mit Python! # 1 [Sprachdiskriminierung]
Erstellen Sie einen einfachen Slackbot mit einer interaktiven Schaltfläche in Python
[Lass uns mit Python spielen] Ein Haushaltsbuch erstellen
Machen wir Othello mit wxPython
Lassen Sie uns das Abhängigkeitsmanagement mit pip etwas einfacher machen
Machen Sie eine Lotterie mit Python
Lassen Sie uns eine Mac-App mit Tkinter und py2app erstellen
Versuchen Sie, mit Rhinoceros / Grasshopper / GHPython ein sphärisches Gitter zu erstellen
Was ist Gott? Erstelle einen einfachen Chatbot mit Python
[Super einfach] Machen wir einen LINE BOT mit Python.
Machen Sie ein Feuer mit kdeplot
Lassen Sie uns mit Python einen Web-Socket-Client erstellen. (Zugriffstoken-Authentifizierung)
[Übung] Erstellen Sie eine Watson-App mit Python! # 3 [Klassifizierung der natürlichen Sprache]
Erstellen Sie mit GoogleAppEngine / py einen LINE-Bot. Einfache nackte Version
Lassen Sie uns ein Diagramm erstellen, auf das mit IPython geklickt werden kann
Machen wir eine Remote-Rumba [Hardware]
Lassen Sie uns eine Remote-Rumba erstellen [Software]
Machen Sie einen Sound mit Jupyter Notebook
Machen wir einen Spot Sale Service 2
Machen wir einen Spot Sale Service 1
Machen wir Othellos KI mit Chainer-Teil 1-
Erstellen Sie ein Empfehlungssystem mit Python
Machen Sie einen Filter mit einer Django-Vorlage
Machen wir Othellos KI mit Chainer-Teil 2-
Erstellen Sie mit PySide einen Modelliterator
Machen Sie eine schöne Grafik mit Plotly
Machen wir einen Spot Sale Service 3
Lassen Sie uns eine WEB-Anwendung für das Telefonbuch mit Flasche Teil 1 erstellen
Rubyist hat versucht, eine einfache API mit Python + Flasche + MySQL zu erstellen
Machen wir einen Fahrradcomputer mit Raspberry Pi Zero (W, WH)
Lassen Sie uns eine WEB-Anwendung für das Telefonbuch mit Flasche Teil 2 erstellen
Versuchen Sie, einen Web-Service-ähnlichen Typ mit 3D-Markup-Sprache zu erstellen
Lassen Sie uns eine WEB-Anwendung für das Telefonbuch mit Flasche Teil 3 erstellen
Lassen Sie uns eine WEB-Anwendung für das Telefonbuch mit Flasche Teil 4 erstellen
Lassen Sie uns einen Web-Chat mit WebSocket mit AWS serverless (Python) durchführen!
Erstellen einer einfachen Power-Datei mit Python
Einfacher RSS-Reader mit Django
Erstellen Sie einen Videoplayer mit PySimpleGUI + OpenCV
Schreiben wir einen einfachen Gleichstromlöser
Erstellen wir mit Python eine kostenlose Gruppe
Machen Sie einen seltenen Gacha-Simulator mit Flask