词汇元素也叫词位被用于描述语言结构的句法
正则表达式符号:
符号                         含义

ID=re                    在正则表达式中ID被定义为re
|                         替代
re?                     出现re的次数为0或者1次
re*                      出现re的次数为0或者更多次
re+                      至少出现一次
(re)                     分组
[chars]                  匹配chars中含有的任何字符
[x-y]                     字符串集范围从x到y

抽象句法符号:
符号                            含义

::=                         被定义为
|                            替换
[[X]]                       X至多出现一次
{{X}}                       X出现0次或多次
{{X}}+                      X至少出现一次
((X|Y))                     分为X组或者Y组
abc                         关键词终端符号abc
INTEGER                     终端符号以外的关键词
xyz                         非终端符号
^:a:int32^n: 定义一个整形长度为n的数组a

词位
SCADE能用几种符号去描述值。整形能被写为二进制、八进制、十六进制值和与一些表达式混合使用。它被当做前缀或者无类型。
非十进制整形字符被当做无符(通常被当做负数)。浮点型用十进制或者科学计数符号表示。字符被描述为标准的ASCII码。

DIGIT2 =[0-1]
DIGIT8 =[0-7]
DIGIT10 =[0-9]
DIGIT16 =[a-f][A-F][0-9]INTEGER2 =0b DIGIT2+  #二进制
INTEGER8 =0 DIGIT8+   #八进制
INTEGER10 =0 | ([1-9]DIGIT10*) #十进制
INTEGER16 =0x DIGIT16+#十六进制
INTEGER =INTEGER2|INTEGER8|INTEGER10|INTEGER16
TYPED_INTEGER= INTEGER(_i|_ui)(8|16|32|64)#定义整形的长度和类型EXPONENT =[eE][+-]? DIGIT10+;#科学计数法
FLOAT =DIGIT10+.DIGIT10*EXPONENT?|DIGIT10*.DIGIT10+EXPONENT?#浮点类型
TYPED_FLOAT=FLOAT(_f32|_f64)#定义浮点类型的字节长度LETTER =_|[a-z]|[A-Z]#字母
ALPHANUMERIC=DIGIT10|LETTER#字母数字组合
WORD =LETTER ALPHANUMERIC* #单词是字符与字母与数字组合
CHARACTER=ALPHNUMERIC|SPACE|[!"$#&'()*+,-./:;<=>?@[]\^`|{}~]# 字符
CHAR='CHARACTER'|'\x DIGIT16 DIGIT16';
ID=WORD;
NAME='WORD;

符号列表
<> <= >= << >> = < > () [] {} -> ::  .. ;   , . : ^ @ # _ | + - * /

$符号被作为操作的名字。
字首操作符

PREFIXOP ::=$+$|$-$|$*$|$/$|$mod$|$=$|$+$|$<>$|$<$|$>$|$<=$|$>=$|$@$|$times$|$and$|$or$|$xor$|$land$|$lor$|$lxor$|$lsl$|$lsr$|+$|-$|not$|$or$|lnot$|reverse$

关键字列表

abstract,actived,and,assume,automation,bool,case,char,clock,const,default,do
,else,elseif,emit,end,enum,every,flase,fby,final,flatten,float,float32,float64,fold,foldi,foldw,foldwi,function,
guarantee,group,if,imported,initial,int8,int16,int32,int64,integer,is,land,lnot,lor,lsl,lsr,last,let,
make,map,mapfold,mapfoldi,mapfoldw,mapfoldwi,mapi,mapw;
mapwi,match,merge,mod,node,not,numeric,of,onreset,open,or,package,parameter,pre,private,probe,public,
restart,resume,returns,reverse,sensor,sig,signed,specialize,state,synchro,
tel,them,times,transpose,true,type,uint8,uint16,uint32,uint64,unless,unsigned,until,var,
when,where,with,xor

注意关键词:onreset,abstract,parameter被保留但未被使用

注释:
单行注释开始用“--”
多行注释开始“\*”,结束“*\”

程序

pragma ::=#progma CHARACTER*#end|#ALPHANUMERIC+

程序和包

path ::=ID{{::ID}}
path_id ::=[[path ::]]ID
package_decl ::=package[[visibility]] ID {{decls}} end;

七中顶级申明:

decls  ::=open path;package_declgroup_blocktype_blockconst_blocksensor_blockusr_op_decl 

一个包不能被打开多次,即使是不同的路径。一个包不能打开本身。

例子:
申明一个合格的路径:

package P1const foo :int16 =3;
end;package     P2const bar : int16=4;
end;const foobar : int16=P1::foo+P2::bar;

算法解析:打开指令将包括Q::R包进行申明而不是P::R包,由于这是第一次出现的R中的封装结构选自B开始

package Ppackage R...end;
end;package Qpackage R...end;package Sopen R...end;
end;

安装包中的申明不是相对的:

package P1open P1;constiC1: T1 =2;package P1typeT1=int32;
end;
end;

错误源于打开多次申明:识别码foo被用作常量和类型名为foo的发生冲突通过打开指令。

package P1type foo =int16;
end
open P1;
const foo:bool =true;

一个打开的包中的子包不能使用open指令。P2包中的第二个申明在这个程序是有效的,因为P1中的P2不可见:

package P1package P2...end;
end;
open P1;
package P2...
end;

正在打开的包是不可及:申明的P1包下被打开的P2包是不被考虑的,当打开后者。常量foo不被识别在foobar的定义中,出现一个错误:

package P1package P2const foo:int32 =0;end;open P2;const bar:int32=foo+1;
end;
open P1;
const foobar:int32=foo*2;


Scade——学习笔记相关推荐

  1. Scade——学习笔记(4)

    条件模块: 在当前循环中,当控制流依赖一个可计算条件时,条件模块是一个方便的表达方法. clock_block ::=active [[id]]((if_block|match_block))if_b ...

  2. Scade——学习笔记(2)

    属性 一些申明可能会给可见和可用的属性目标, visiblity ::=private|public#可视化 external ::=imported;#外部 interface_status ::= ...

  3. Scade——学习笔记(5)

    表达式:  表达式是Cade语言的基本块.表达式允许流的联合仅仅通过申明在一个周期内应该做什么: expr ::= id_expr | atom | list_expr | tempo_expr | ...

  4. Scade——学习笔记(3)

    用户定义操作 用户定义是面向过程语言提供最基本的句法.它们允许重用之前在Model中定义的操作. 用户定义操作: user_op_decl ::=op_kind interface_status ID ...

  5. 系统工程(SE)学习笔记(番外篇之一)——Capella使用体会兼谈SE工具

    系统工程(SE)学习笔记(番外篇之一)--Capella使用体会兼谈SE工具 零.Capella简介 壹. Capella的优势 贰.Capella的缺点 叁. 生态环境 肆. 总结 说到SE,就不能 ...

  6. PyTorch 学习笔记(六):PyTorch hook 和关于 PyTorch backward 过程的理解 call

    您的位置 首页 PyTorch 学习笔记系列 PyTorch 学习笔记(六):PyTorch hook 和关于 PyTorch backward 过程的理解 发布: 2017年8月4日 7,195阅读 ...

  7. 容器云原生DevOps学习笔记——第三期:从零搭建CI/CD系统标准化交付流程

    暑期实习期间,所在的技术中台-效能研发团队规划设计并结合公司开源协同实现符合DevOps理念的研发工具平台,实现研发过程自动化.标准化: 实习期间对DevOps的理解一直懵懵懂懂,最近观看了阿里专家带 ...

  8. 容器云原生DevOps学习笔记——第二期:如何快速高质量的应用容器化迁移

    暑期实习期间,所在的技术中台-效能研发团队规划设计并结合公司开源协同实现符合DevOps理念的研发工具平台,实现研发过程自动化.标准化: 实习期间对DevOps的理解一直懵懵懂懂,最近观看了阿里专家带 ...

  9. 2020年Yann Lecun深度学习笔记(下)

    2020年Yann Lecun深度学习笔记(下)

最新文章

  1. 微信小程序----map组件实现(获取定位城市天气或者指定城市天气数据)
  2. end-to-end 的神经网络
  3. c语言resource files的作用,c – resource.h中的宏用于什么?
  4. 基于运算放大器的线性稳压器
  5. java解析页面table表格内容导出为excel
  6. linux c glob使用(文件路径模式查找函数)
  7. 【NLP】simhash判断文档相似度
  8. OpenCV在Python上的调用( import cv2的解决办法)
  9. Django 笔记1 -- 环境搭建
  10. 4 .2 .4 配置存储系统
  11. java listview用法_Java ListView.setMultiChoiceModeListener方法代码示例
  12. UPPERERR.txt
  13. 深度学习之经典卷积神经网络的技术浅析 | 硬创公开课预告
  14. 图像灰度化的三种常见方法
  15. html 播放ogg,HTML5中video 和 ogg
  16. 按键精灵实现远程获取消息内容自动发送到群里(支持多个qq)
  17. TSP_旅行商问题 - 遗传算法(四)
  18. JavaFX开发桌面,移动端,嵌入式权威指南(二)—— 如何应用JavaFX开发用户界面
  19. python 实现使用163邮箱发送有图片的邮件
  20. SWUST OJ 299: 平方和

热门文章

  1. Kooboo CMS 无聊随笔(2)
  2. 微信小程序列表开发-个人中心界面-wxss(二)
  3. 老站长的一些丰富知识,怎么样可以做好阿里、腾讯交互设计工作呢
  4. 如何把antlr4融合到编译器项目中使用
  5. 个 java的_20个Java练手项目,献给嗜血如狂的你
  6. 什么是集总参数,什么是分布参数(硬件每日一题)
  7. EAF .NET数据库访问组件
  8. 项目经理和项目成员招募
  9. 智能AI计算芯片对比
  10. html 表格中显示图片,layui如何在表格中显示图片