14

私の目的は、Python が文字列を処理するように解析することです。

質問:以下をサポートする lex の書き方:

  1. "string..."
  2. 'string...'
  3. """multi line string \n \n end"""
  4. '''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 つの一意の状態を作成することですが、より良いアプローチがあるかどうか疑問に思っています。

ご協力いただきありがとうございます!

4

2 に答える 2