如何在ply中进行评论。我正在做一个名为calico的翻译。我遇到的一个问题是评论。它们应该是\\这个\\。但是,我在实现它们时遇到了一些困难。这是印花布的源代码
...
\\inheritance and polymorphism\\;
public class Main(){
public static main() {
println("test"); \\hello world\\;
me = class Person(11, "a", "b", "11/09/09"); \\objects\\;
println(me.get_details());
me.tax(); \\encapsulation\\;
println(me.get_details());
me2 = class Employee(11, "a", "b", "11/09/09", "n", "11/09/35", 1000)
}
};
注释标记应如下所示\\继承和多态\\,但它应如下所示\\继承和多态\\;公共类Main(){public static Main(){println。。。
我试过这样做t_COMMENT = r"\\\\.*\\\\"
但是没有用,我也试过这样做
def t_COMMENT(t):
r'(/\\(.|\n)*?\\/)|(//.*)'
pass
问题是
*
是一个贪婪的匹配,这意味着它将消耗比它需要的更多:例如,假设我们有这行代码\\a\\;print("ab");\\b\\;print("end")
注释标记将从第一个\\
到最后一个\\
吐出,并且在这两者之间的所有东西都使注释标记看起来像这样\\a\\;print("ab");\\b\\
,这是不好的使用
*
操作符上的?
将贪婪操作符转换为懒惰操作符,这意味着注释标记将从第一个\\
到下一个\\
停止生成标记并找到另一个注释,最终输出被拆分为2,就像它应该的那样。1.\\a\\
2.\\b\\
在这个
*
上使用?
会让它变得懒惰,做它想让我做的事固定代码是
\\\\.*?\\\\
,如果您想了解有关贪婪和懒惰运算符的更多详细信息,请访问此question我建议你单独测试你的正则表达式,在一个独立的网站上,比如
regex101.com
下面是一个描述如下的link to the regex
我测试了此字符串以声明注释:
而且我能为我的球队赢得三场比赛
即
及
及
根据regex101,它需要双反斜杠,因为
根据regex101,它需要
(.|\n)*?
,因为相关问题 更多 >
编程相关推荐