Jav*_*ier 7 parsing localization
让我解释.假设我想向只讲西班牙语的人教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()
Run Code Online (Sandbox Code Playgroud)
我希望很明显如何将其概括为"翻译"任何Python源代码和任何语言(我只提供非常部分的意大利语关键词翻译词典).这会发出:
per x in range (8 ):
se x %2 :
y =x
mentre y >0 :
stampa y ,
y -=3
stampa
Run Code Online (Sandbox Code Playgroud)
(奇怪但正确的空格,但这可以很容易地补救).作为一名意大利语演讲者,我可以告诉你这很难阅读,但这对于任何"编程语言翻译"的课程都是如此.更糟的是,非关键字,如range仍然未翻译(根据您的规格) -当然,你不要有你的翻译限制为关键字只(这是很容易取出if,做以上;-).
| 归档时间: |
|
| 查看次数: |
1770 次 |
| 最近记录: |