[英]Split code into tokens (Lexing) in Python
我正在嘗試標記以下代碼:
foo ::= 5
bar ::= 15
foobar ::= 20
所以輸出是:
['foo', '::=', '5', '\n', 'bar', '::=', '15', '/n', 'foobar', '::=', '20' ]
我當前的嘗試如下:
reTokens = re.compile(r' ')
tokens = reTokens.split(source)
print(tokens)
但是,此打印:
['\n', '', '', '', 'foo', '::=', '5\n', '', '', '', 'bar', '::=', '15\n', '', '', '', 'foobar', '::=', '20\n']
如您所見,這里有很多問題。 幾個主要問題是:
您可以這樣做:
from functools import reduce
lines = source.splitlines()
tokens_list = [line.strip().split() for line in lines]
tokens = reduce(lambda x,y: x + ['\n'] + y, tokens_list)
print(tokens)
這會將源划分為其行,對每行進行標記,然后使它們成為在每行之間帶有\\n
的單個列表。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.