Мне нужно преобразовать это регулярное выражение: [A-Za-z _] + в контекстно-бесплатную грамматику
Мне нужен лучший способ распознавать строки, которые просто добавляют все буквы алфавита в грамматике.
import nltk
grammar = """
S -> '"' A '"'
A -> B A | B
B -> '_' | 'a' | 'b' | 'c' | ... | 'z' | 'A' | 'B' | 'C' | ... | 'Z'
"""
grammar = nltk.CFG.fromstring(grammar)
Строки представляют собой последовательности символов от "a" до "z" (прописные и строчные) и подчеркивания: '_'.
Я нашел решение:
strings = list(set(regexp_tokenize(s, pattern='"[A-Za-z_]+"')))
for st in strings:
grammar += "S -> \'" + st + "\'\n "