例程终结者 2022-09-13 16:28 采纳率: 90.5%
浏览 200
已结题

用C,C#,C++,编写程序,读取Gerber文件,导出其元件类型,元件中心坐标信息,放置角度信息,该如何下手?

问题遇到的现象和发生背景

用C,C#,C++,编写程序,读取Gerber文件,导出其元件类型,元件中心坐标信息,放置角度信息,该如何下手?

问题相关代码,请勿粘贴截图

Gerber指令代码
%FSLAX34Y34*% FS 格式描述 L 省略前导零,A 绝对坐标,三位整数,四位小数
%MOMM*% MO Mode 单位 MM 毫米
%ADD70C,0.000000*% AD Aperture Definition 光圈描述 定义D70码为圆,直径 0MM
%ADD71C,0.300000*%
%LNConvertedAllPolygons*% LN 层名 ConvertedAllPolygons
%LPD*% LP 层正负性 D 设置为正图
G36* G36 打开多边形填充
X635760Y1095810D02* D02 关光圈,移动到 X63 5760 Y109 5810
X632760Y1095810D01* D01 划线,开光圈 X63 2760 Y109 5810
G75* G75 启用 360°的画圆功能
G03X631760Y1094720I-4J-999D01* G03 逆时针圆周运动 I,J 格式描述弧形位置。
G74* G74 关闭 360 度圆周运动
G01* G01 1 倍线性运动
X631760Y1091810D01* 光圈说白了就是形状,不同的光圈就是不同的形状。pcb里面常见的形状有,圆形、方形、椭圆等等。
G75* 分别表示某个焊盘的形状
G03X632760Y1090810I996J1D01*

  • 写回答

2条回答 默认 最新

  • wanghui0380 2022-09-13 18:09
    关注

    https://github.com/integralpro/libpger/blob/master/antlr/Gerber.g

    通常这类文法解析都采用通用文法解析器完成,常见的文法解析引擎是antlr,yacc,Babel
    当然上学的时候编译原理的老师一般会教BNF+yacc,不过现在实际应用的比较多是antlr,babel
    antlr4下比较常见的语言的文法解析规则在下面
    https://github.com/antlr/grammars-v4

    可惜你这个Gerber实在是个小众偏门DSL,所以anltr4没有收集,我只找到一个很多年前anltr3的定义
    https://github.com/integralpro/libpger/blob/master/antlr/Gerber.g

    我们可以参考这个写出Antlr4的解析文法(如果你有兴趣的学学anltr4的话)

    有关如何在C#里用antlr4,我到不用赘述了。这种文章到多,随便百度一下就行。

    随带说一句:如果知道这些,就可以摆脱那些语言之争和某某园子偶尔会折腾的啥中文编程,我实现了一门语言这类东西。
    单纯文法词法分析目前并不困难,难的是你用词法分析器是人家的,你最后的对语法树的编译是人家的。所以仅仅说自己实现一个DSL文法,对一个会玩antlr的人并不困难,一个星期就可以弄个稍微的“中文编程语言”出来了

    本回答被题主选为最佳回答 , 对您是否有帮助呢?
    评论 编辑记录
查看更多回答(1条)

报告相同问题?

问题事件

  • 系统已结题 9月23日
  • 已采纳回答 9月15日
  • 创建了问题 9月13日

悬赏问题

  • ¥15 AIC3204的示例代码有吗,想用AIC3204测量血氧,找不到相关的代码。
  • ¥20 CST怎么把天线放在座椅环境中并仿真
  • ¥15 任务A:大数据平台搭建(容器环境)怎么做呢?
  • ¥15 YOLOv8obb获取边框坐标时报错AttributeError: 'NoneType' object has no attribute 'xywhr'
  • ¥15 r语言神经网络自变量重要性分析
  • ¥15 基于双目测规则物体尺寸
  • ¥15 wegame打不开英雄联盟
  • ¥15 公司的电脑,win10系统自带远程协助,访问家里个人电脑,提示出现内部错误,各种常规的设置都已经尝试,感觉公司对此功能进行了限制(我们是集团公司)
  • ¥15 救!ENVI5.6深度学习初始化模型报错怎么办?
  • ¥30 eclipse开启服务后,网页无法打开