C# 是如何用代码实现 // 注释功能的?

码上好玩 2020-01-06 06:11:46
困惑:想知道C# 对于 // 的代码实现;还特别想知道,对于 string testStr = "//abc"; 双引号里的// ,C#是如何不注释 //abc" 的。请大佬们指点下,学习学习。
...全文
303 10 打赏 收藏 转发到动态 举报
写回复
用AI写文章
10 条回复
切换为时间正序
请发表友善的回复…
发表回复
github_36000833 2020-01-07
  • 打赏
  • 举报
回复
如果跟C#代码有关,可以直接用微软的Roslyn编译服务。很多代码改进工具,代码分析工具都建在Roslyn上。
如果是自定义的语法,可能你要先熟悉一下编译原理。比如string testStr = "//abc";就要首先用词法分析,得到词元。
string
testStr
=
"//abc"
;

Roslyn是开源项目,你可以参考阅读它的C# Lexer(词法分析器),不过小心有快5千行代码。
https://github.com/dotnet/roslyn/blob/master/src/Compilers/CSharp/Portable/Parser/Lexer.cs
正怒月神 2020-01-07
  • 打赏
  • 举报
回复
感觉应该还是设计的解释模型。 具体没有关注过。
码上好玩 2020-01-07
  • 打赏
  • 举报
回复
引用 4 楼 huakai2418 的回复:
1.C#中//不是转义字符,会不会被认为是注释,则是由语法分析器判别的,代码编译器前先有语法分析器分析出注释内容,然后移除这些注释,再进行编译。具体而言的话,“”成对匹配的双引号内的//双斜杠或多斜杠不会当做注释的,而是当做文本,否则的作为注释 2.//和///都是注释,只要是注释都不会被编译到运行文件中,只不过//或者///会被解析到xml中,以供IDE自动提示
主要是我现在需要 实现类似 // 的注释功能,但 "//abc" 这个情况不好处理。比如 ab"cd//ed"gh"ij|kl"mn//op"qr//st 没想到怎么能够较好地处理,想要的结果是 ab"cd//ed"gh"ij//kl"mn
大然然 2020-01-07
  • 打赏
  • 举报
回复
这和c#没有关系 , html里 ,sqlserver 里都有注释
码上好玩 2020-01-07
  • 打赏
  • 举报
回复
上面写错了 下面这个对的 主要是我现在需要 实现类似 // 的注释功能,但 "//abc" 这个情况不好处理。 比如 ab"cd//ed"gh"ij//kl"mn//op"qr//st 没想到怎么能够较好地处理,想要的结果是 ab"cd//ed"gh"ij//kl"mn [/quote]
码上好玩 2020-01-07
  • 打赏
  • 举报
回复
引用 8 楼 github_36000833 的回复:
如果跟C#代码有关,可以直接用微软的Roslyn编译服务。很多代码改进工具,代码分析工具都建在Roslyn上。 如果是自定义的语法,可能你要先熟悉一下编译原理。比如string testStr = "//abc";就要首先用词法分析,得到词元。 string testStr = "//abc" ; Roslyn是开源项目,你可以参考阅读它的C# Lexer(词法分析器),不过小心有快5千行代码。 https://github.com/dotnet/roslyn/blob/master/src/Compilers/CSharp/Portable/Parser/Lexer.cs
主要是我现在需要 实现类似 // 的注释功能,但 "//abc" 这个情况不好处理。比如 ab"cd//ed"gh"ij|kl"mn//op"qr//st 没想到怎么能够较好地处理,想要的结果是 ab"cd//ed"gh"ij//kl"mn
huakai2418 2020-01-06
  • 打赏
  • 举报
回复
1.C#中//不是转义字符,会不会被认为是注释,则是由语法分析器判别的,代码编译器前先有语法分析器分析出注释内容,然后移除这些注释,再进行编译。具体而言的话,“”成对匹配的双引号内的//双斜杠或多斜杠不会当做注释的,而是当做文本,否则的作为注释
2.//和///都是注释,只要是注释都不会被编译到运行文件中,只不过//或者///会被解析到xml中,以供IDE自动提示
andy_wanhl 2020-01-06
  • 打赏
  • 举报
回复
好刁的问题,有些蒙圈。c#中//注释不会被编译,///注释会被编译。
github_36000833 2020-01-06
  • 打赏
  • 举报
回复
有一门课叫 编译原理
码上好玩 2020-01-06
  • 打赏
  • 举报
回复

110,536

社区成员

发帖
与我相关
我的任务
社区描述
.NET技术 C#
社区管理员
  • C#
  • Web++
  • by_封爱
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告

让您成为最强悍的C#开发者

试试用AI创作助手写篇文章吧