microsat 发表于 2024-03-19 17:03 请问编程语言的词法分析器,怎么能提速呢? 比如:一个程序代码里面有26个小写字母,26个大写字母。还有中文字符。还有其他特殊字符。 那么用什么技术能做到最快速度的分析词法? 是用 1) if else语句吗? 2) switch case 3) hash table 4) others
helloterran4 发表于 2024-03-19 17:07 这不是一个active的问题。词法分析yacc,语法分析lexer,都是理论完备,实现成熟的底层包。没有人会在现在钻研这玩意儿。
helloterran4 发表于 2024-03-19 17:37 还要怎么快,代码的词法语法分析都是几毫秒就完事,生成一个ast。工作量都在ir和后端 要是你的意思是压根你不知道怎么做,就应该去问你老板ta expect的结果是什么东西。github上有几百个repo可以抄,这就是本科生大作业水平的东西。
microsat 发表于 2024-03-19 17:44 读了几个人的帖子。他们都是在问为什么他们开发的编程语言的词法分析器速度这么慢。 他们的代码是基于if else的。 也就是是一个字符一个字符的进行条件判断。 虽然一个if 判断是几毫秒。但是如果一个程序大了,必然会导致词法分析器速度很慢。 当一个程序包含3万个字符时,就能明显感觉出来。 快的词法分析器,就是不一样。 我就是想问,有什么好方法能给词法分析器提速。
比如:一个程序代码里面有26个小写字母,26个大写字母。还有中文字符。还有其他特殊字符。
那么用什么技术能做到最快速度的分析词法?
是用 1) if else语句吗? 2) switch case 3) hash table 4) others
这不是一个active的问题。词法分析yacc,语法分析lexer,都是理论完备,实现成熟的底层包。没有人会在现在钻研这玩意儿。
假如让你词法分析下面这段代码。怎么实现最快速度呢?
for(int i = 0; i <10; i++) { print("老树开新枝”); }
要是你的意思是压根你不知道怎么做,就应该去问你老板ta expect的结果是什么东西。github上有几百个repo可以抄,这就是本科生大作业水平的东西。
读了几个人的帖子。他们都是在问为什么他们开发的编程语言的词法分析器速度这么慢。
他们的代码是基于if else的。 也就是是一个字符一个字符的进行条件判断。
虽然一个if 判断是几毫秒。但是如果一个程序大了,必然会导致词法分析器速度很慢。
当一个程序包含3万个字符时,就能明显感觉出来。
快的词法分析器,就是不一样。
我就是想问,有什么好方法能给词法分析器提速。
楼上回答的都很专业了。 这都是很成熟的东西。
你在搞什么东东啊? 把问题说清楚? 比如你为什么说是词法分析器的问题? 那个语言的词法分析器? 你是怎么知道是词法分析器的问题?