私の目的は、Python が文字列を処理するように解析することです。
質問:以下をサポートする lex の書き方:
"string..."
'string...'
"""multi line string \n \n end"""
'''multi line string \n \n end'''
いくつかのコード:
状態 = ( ('string', 'exclusive'), ) # 文字列 def t_begin_string(自己、t): r'(\'|(\'{3})|\"|(\"{3}))' t.lexer.push_state('文字列') def t_string_end(自己、t): r'(\'|(\'{3})|\"|(\"{3}))' t.lexer.pop_state() def t_string_newline(自己、t): r'\n' t.lexer.lineno += 1 def t_string_error(自己、t): print("文字列 '%s' に不正な文字があります" % t.value[0]) t.lexer.skip(1)
私の現在のアイデアは、4 つの異なる文字列ケースに一致する4 つの一意の状態を作成することですが、より良いアプローチがあるかどうか疑問に思っています。
ご協力いただきありがとうございます!