欢迎您访问 最编程 本站为您分享编程语言代码,编程技术文章!
您现在的位置是: 首页

OpenPLC 源代码分析(二)编译过程分析

最编程 2024-06-08 15:01:43
...

include common.mk # 定义C++编译器的编译选项

bin_PROGRAMS = iec2c iec2iec # 定义了两个可执行文件iec2c和iec2iec

SUBDIRS = absyntax absyntax_utils stage1_2 stage3 stage4

ACLOCAL_AMFLAGS=-I config

HGVERSION= $(shell hg -R $(top_srcdir) parents --template '{node|short}' 2> /dev/null || grep node $(top_srcdir)/.hg_archival.txt 2> /dev/null || true )
AM_CXXFLAGS += -DHGVERSION="\"${HGVERSION}\""

iec2c_LDADD = stage1_2/libstage1_2.a \
stage3/libstage3.a \
stage4/generate_c/libstage4_c.a \
absyntax/libabsyntax.a \
absyntax_utils/libabsyntax_utils.a # 定义链接时需要的库文件

iec2iec_LDADD = stage1_2/libstage1_2.a \ # 定义链接时需要的库文件
stage3/libstage3.a \
stage4/generate_iec/libstage4_iec.a \
absyntax/libabsyntax.a \
absyntax_utils/libabsyntax_utils.a

iec2c_SOURCES = main.cc # 编译main.cc文件

iec2iec_SOURCES = main.cc

(5)main.cc文件

解析命令行选项、设置运行时选项,并执行MATIEC编译器的4个阶段:

阶段1 - 词法分析器(使用flex实现)

阶段2 - 语法解析器(使用bison实现)

阶段pre3 - 填充符号表(为抽象符号树中的符号提供搜索的符号表)

阶段3 - 语义分析器(目前仅执行类型检查,还未实现)

阶段4 - 代码生成器(使用gcc、javac等工具,生成ANSI C代码)

推荐阅读