巴科斯范式(BNF: Backus-Naur Form 的缩写)是由 John Backus 和 Peter Naur,首次引入一种形式化符号来描述给定语言的语法。
简称为:BNF符号。
现在,几乎每一位新编程语言书籍的作者都使用巴科斯范式来定义编程语言的语法规则巴科斯范式的内容
在双引号中的字(“word”)代表着这些字符本身。而double_quote用来代表双引号。
在双引号外的字(有可能有下划线)代表着语法部分。
尖括号( < > )内包含的为必选项。
方括号( [ ] )内包含的为可选项。
大括号( { } )内包含的为可重复0至无数次的项。
竖线( | )表示在其左右两边任选一项,相当于"OR"的意思。
::= 是“被定义为”的意思。
关于具体的例子可以上网搜索,网上资料比较齐全
Sct 的全称是 Scatter File Syntax,
在学习一个东西之前,首先要明白,她是干什么的?那么sct脚本文件到底是什么东西?
其实吧,sct脚本文件是描述如何把输入文件中的节(sections)映射到输出文件中,并控制输出文件的存储布局的脚本文件。并且sct的语法是遵守BNF的语法规则的。
一个.sct文件,包括了一个或者多个加载域(load region),每个加载域也包括一个或者多个执行域(execution region)
下面是一个.sct文件的文件结构图

其实加载域就是用来描述下内存的区域,这个区域是用来存放执行域的
加载区域描述的组件允许您唯一标识加载区域,并控制ELF文件的哪些部分放置在该区域中
加载域的具体结构

一个加载域描述,应该包括哪些内容呢?
1:名字(被编译器用来识别不同的加载域)
2:一个基地址(代码或数据的开始地址)
3:属性说明
4:大小
5:一个或者多个执行域
加载域的语法详解
符合BNF的规则,对规则不了解的可以百度下
load_region_description ::= load_region_name (base_address | (“+”
offset)) [attribute_list] [max_size]
“{”
execution_region_description+
“}”
load_region_name:
加载域的名字,这个是区域中区分大小写的
base_address :
这个区域内被链接的地址,注意要满足对齐的要求
+of