gpt4 book ai didi

parsing - 将一种编程语言翻译成另一种人类语言有多难?

转载 作者:行者123 更新时间:2023-12-04 11:45:44 25 4
gpt4 key购买 nike

让我解释。假设我想向只会说西类牙语的人教 Python。如您所知,在大多数编程语言中,所有关键字都是英文的。创建一个程序来查找给定源代码中的所有关键字并翻译它们有多复杂?我是否需要使用解析器之类的东西,还是几个正则表达式和字符串函数就足够了?

如果它取决于源编程语言,那么 Python 和 Javascript 将是最重要的。

我所说的“它有多复杂”的意思是,拥有一个关键字列表并解析源代码以查找不在引号中的关键字就足够了吗?或者是否有足够的语法怪异,需要更复杂的东西?

最佳答案

如果您只想翻译关键字,那么(虽然您确实需要一个合适的解析器,否则避免任何字符串更改,注释 &c 将成为一场噩梦)任务非常简单。例如,既然你提到了 Python:

import cStringIO
import keyword
import token
import tokenize

samp = '''\
for x in range(8):
if x%2:
y = x
while y>0:
print y,
y -= 3
print
'''

translate = {'for': 'per', 'if': 'se', 'while': 'mentre', 'print': 'stampa'}

def toks(tokens):
for tt, ts, src, erc, ll in tokens:
if tt == token.NAME and keyword.iskeyword(ts):
ts = translate.get(ts, ts)
yield tt, ts

def main():
rl = cStringIO.StringIO(samp).readline
toki = toks(tokenize.generate_tokens(rl))
print tokenize.untokenize(toki)

main()

我希望很明显如何将其概括为“翻译”任何 Python 源代码和任何语言(我只提供了一个非常部分的意大利语关键字翻译字典)。这发出:
per x in range (8 ):
se x %2 :
y =x
mentre y >0 :
stampa y ,
y -=3
stampa

(奇怪,虽然正确的空格,但可以很容易地补救)。作为一名讲意大利语的人,我可以告诉你,这读起来很糟糕,但这对于任何你想要的“编程语言翻译”类(class)来说都是一样的。更糟糕的是,非关键字如 range保持未翻译(根据您的规范)--当然,您不需要 将您的翻译限制为仅限关键字(删除上述操作的 if 很容易;-)。

关于parsing - 将一种编程语言翻译成另一种人类语言有多难?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/1653227/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com