解决CSharpGL使用CGCompiler时发现的几个问题

已重写的文章在(编译原理(前端)的算法和实现)(2023年6月24日)

我在准备重写本文的内容,本文不必再看。(2023年3月25日)

解决CSharpGL使用CGCompiler时发现的几个问题

为了获取CSharpShadingLanguage的token流,我设计了这样一个文法:

<Expression> ::= "~" "!" "@" "#" "%" "^" "&" "*" "(" ")" "-" "+" "=" "{" "}" "[" "]" ":" ";" "<" ">" "," "." "?" "/" "~=" "!=" "%=" "^=" "&=" "*=" "-=" "+=" "<=" ">=" "/=" "&&" "++" "<<" ">>" constString identifier number;

这当然不能进行语法分析,但是足以进行词法分析。

在使用过程中发现CGCompiler有几个bug,在此记录并fix掉。

 

重复的token类型

文法中有identifier时,TokenType的枚举类型里会出现重复的identifier。

此问题已解决(大概吧)。只需在ContextfreeGrammarEnumTokenTypeSG.cs中加入如下判定。

 

GetCharType()没有判定@符号

此问题已解决。在ContextfreeGrammarLexicalAnalyzerSG.cs的GenerateLexicalAnalyzerMethodGetCharType()方法中加入3行固定代码即可。出现此问题是因为我以前漏掉了对@这个符号的解析。

 

GetDivideOpt()没有判定跳过单行注释

已解决。只需在ContextfreeGrammarLexicalAnalyzerSG.cs文件中补充如下代码即可。

posted @   BIT祝威  阅读(773)  评论(0编辑  收藏  举报
编辑推荐:
· 一文彻底搞懂 MCP:AI 大模型的标准化工具箱
· 电商平台中订单未支付过期如何实现自动关单?
· 用 .NET NativeAOT 构建完全 distroless 的静态链接应用
· 为什么构造函数需要尽可能的简单
· 探秘 MySQL 索引底层原理,解锁数据库优化的关键密码(下)
阅读排行:
· 短信接口被刷爆:我用Nginx临时止血
· .NET 平台上的开源模型训练与推理进展
· Google发布A2A开源协议:“MCP+A2A”成未来标配?
· C# 多项目打包时如何将项目引用转为包依赖
· 一款让 Everything 更加如虎添翼的 .NET 开源辅助工具!
canvas start.

canvas end.



点击右上角即可分享
微信分享提示