$ pip install ply
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)
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)
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!
$
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
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