问题描述
我正在使用 lark 来解析一些文本,并且需要一种方法来匹配没有特定关键字的 from dask.distributed import Client
import joblib
from sklearn.feature_extraction.text import TfidfVectorizer
client = Client(processes=False) # create local cluster
with joblib.parallel_backend('dask'):
tfidf.fit(corpus)
。我在终端中列出了关键字,但我不确定如何制作我需要使用的终端。
这是我格式化关键字的方式
NAME
感谢您对此的所有帮助!
解决方法
Lark 内置了对关键字概念的支持。因此,您不太可能需要明确排除关键字 NAME
。
例如:
l = Lark("""
%import common (LETTER,DIGIT)
NAME: LETTER (LETTER | DIGIT)*
keywords: "var"
| "let"
| "type"
start: NAME | keywords
""",parser="lalr")
print(l.parse("hello")) # Tree('start',[Token('NAME','hello')])
print(l.parse("let")) # Tree('start',[Tree('keywords',[])])
话虽如此,如果必须的话,您可以使用正则表达式来完成此操作:
l = Lark("""
%import common (LETTER,DIGIT)
NAME: /(?!(let|type|var))/ LETTER (LETTER | DIGIT)*
start: NAME
""")
print(l.parse("hello")) # Tree('start','hello')])
print(l.parse("let")) # Exception,terminal not defined
附言请记住,“TERMINAL”是大写的,而“rule”是小写的,并且它们在 Lark 中的行为不同,因此记住区别很重要。