$ 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("Unzulässiges Zeichen'%s'" % t.value[0])
t.lexer.skip(1)
#
lex.lex(debug=0)
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)
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!
$
Irgendwie wurde es so ein Bildschirm und ich stieg mit dem Ausgang aus Die Erklärung ist gegen Ende grob geworden
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