\

Pythonは多機能なプログラミング言語で、その一つとしてパーサージェネレーターがあります。特に、Python Lex-Yacc(PLY)は、伝統的なパーサージェネレーターであるlexとyaccのPython実装で、その使用が広まっています。

PLYは、yaccと同じLALR(1)パーシングアルゴリズムを使用し、その主要な機能のほとんどを持っています。また、現代のPythonのすべてのバージョンと互換性があります。

以下に、PythonとPLYを使用して独自の言語を作成する例を示します。

# ==============
# 言葉を決める(トークンを定義する)
# ==============
tokens = (
 'HELP',
)

def t_HELP (t):
 r'ヘルプ|help'
 return t

# ==============
# やることを決める(ソースをトークンに分割)
# ==============
import ply.lex as lex
lexer = lex.lex ()

def p_help (t):
 'expression : HELP'
 print(
  \"\"\" 「退出」と入力すれば終了します
  「入力 <文字列>」と入力すると文字列を記憶します、10個まで記憶できます
  「辞書」と入力すると記憶した文字列を表示します
  「出力 <数字>」と入力すると記憶した文字列を表示します
  \"\"\"
 )

# ==============
# どう実行するかを決める(パーサーが構文解析をする)
# ==============
import ply.yacc as yacc
parser = yacc.yacc ()

while True:
 try:
  s = input('何か入力して「Enter」を押してください→ ')
 except EOFError:
  break
 if not s: # ignore blank input
  continue
 parser.parse (s)

このコードは、ユーザーが「ヘルプ」または「help」を入力すると、特定のメッセージを表示する簡単な言語を作成します。

以上のように、PythonとPLYを使用すると、独自の言語を作成することが可能です。これは、Pythonの強力な機能の一つであり、さまざまなアプリケーションで利用できます。

投稿者 admin

コメントを残す

メールアドレスが公開されることはありません。 が付いている欄は必須項目です