ShoneSharp语言(S#)的设计和使用介绍

系列(3)— 修炼工具

作者:Shone

声明:原创文章欢迎转载,但请注明出处,https://www.cnblogs.com/ShoneSharp。

摘要: 了解一个语言最好的方式就是在编辑器中按照语法规则输入代码,然后运行并查看结果是否符合预期。本博文介绍S#编辑器软件界面及其相关各模块的主要功能,并通过通过带有局部变量的S#代码来表达和生成几何图形,从而说明了S#代码的常用编写流程。

软件: S#语言编辑解析运行器,运行环境.NET 4.0,绿色软件,单个EXE直接运行,无副作用。网盘下载链接为https://pan.baidu.com/s/1dF4e08p

今天新开一节专门介绍编辑器的功能,语言功能将在后续系列进行详细介绍。

一、工具菜单栏

编辑器工具栏功能有:

  • “打开”按钮:读取现有S#文本文件(*.shone)到编辑区中。
  • “保存”按钮:保存当前编辑的S#文本到指定的文件(*.shone)中。
  • “剪切”按钮:剪切选中S#代码文本到粘贴板中。
  • “复制”按钮:复制选中S#代码文本到粘贴板中。
  • “粘贴”按钮:从粘贴板中复制S#代码文本到编辑区中。
  • “撤销”按钮:撤销上一次编辑操作。
  • “重做”按钮:重做上一次撤销操作。
  • “精简”按钮:对编辑区中符合语法的S#文本进行空白精简和语法高亮。如eval(a = 1, b = 2 : a + b)将精简化紧凑的文本:eval(a=1,b=2:a+b)。
  • “格式”按钮:对编辑区中符合语法的S#文本进行位置格式化和语法高亮。如eval(a = 1, b = 2 : a + b)将格式化成如下更加整齐美观的S#文本,注意精简化和格式化只影响S#代码外观,不影响S#代码的语义和计算结果。

eval

(

a = 1  ,

b = 2  :

a + b

)

  • “转为计算值”按钮:把当前S#代码替换为对应最终计算结果的S#代码,注意中间过程代码会被抹去,如eval(a=1,b=2:a+b)转换后为3。

菜单栏功能有:

  • “常量”主菜单中提供常用π , ε , e , ∞ , true , false的快捷输入。
  • “函数”主菜单中提供大部分高级函数的快捷输入示例。
  • “语句”主菜单中提供大部分高级语句的快捷输入示例。

二、代码编辑区

S#代码编辑区包含有三个标签页,分别为“S#代码编辑”、“二维编辑”和“计算结果”,点击不同标签页则切换进入相应S#代码编辑或查看模式。

1) S#代码编辑

S#代码编辑即系统默认的支持语法高亮的S#代码文本编辑模式。除了具有常规的文本输入功能外,如前所述在输入字母、点号或Ctrl+J组合键时会弹出下拉选择框方便输入各种符号如常量、变量、运算符、函数、属性或方法名称。另外把鼠标放在各种符号上将显示该符号的相应格式、说明以及当前求值数据结果。

在编辑S#代码文本时采用键盘或鼠标改变当前输入或选择区域时将在下面状态栏中显示相应的行、列、位置及选中字符数等信息。

2)二维编辑

二维编辑模式为S#代码组成结构和二维几何求值提供了更加直观的可视化编辑和查看方式,这对于含有几何函数的各种复杂S#代码特别有用。如下面S#代码用于表达吊具的侧向断面图形,在二维编辑模式下该S#代码对应的几何图形位置、形状都显示在图形区中。点击不同S#代码节点标签,图形区将用红色对标签和图形进行高亮显示,通过不断点选标签即可看到图形的生成过程。

RectCWH(0,(0,-200),740,400).InsPoint(0,(0,-860)).Fillet([100,0]).Merge(CircCR(0,(0,-700),40))

图形区还可以按住鼠标中键进行平移、滚动鼠标中键进行缩放,还可以点击右键菜单进行图形显示的配置操作。

3)计算结果

计算结果用于显示当前编辑的整个S#代码或某个选定S#代码节点的计算结果。选定S#代码节点有三种方式:一是在S#代码编辑模式下采用鼠标点击指定的文本,二是在二维编辑模式下采用鼠标点击指定的标签或图形,三是在右侧语法树中采用鼠标点击指定的节点。一旦改变了当前选中节点则计算结果文本框结果也相应改变,右下角的选中节点图形也会相应改变。

右侧面板区包含有多个切换按钮,分别为“词法”、“语法”、“查找”和“所有”,点击不同按钮则切换进入相应的辅助编辑或查看功能面板。

三、右侧辅助面板

1)词法面板

所有S#代码都有对应的词法树,其每个树节点是不可分割的最小符号单元。

点击不同树节点,则在下方编辑框中可以独立修改该节点文本。

另外在选定节点上点击鼠标右键可弹出菜单,选择“定位到文本”菜单项可定位并选中S#代码文本编辑框中相应文本。

2)语法面板

所有符合S#语法规则的S#代码都有对应的语法树,其每个树节点是对应的语法解析节点。注意不符合语法规则的S#代码只有词法树而没有语法树,这时“语法”切换按钮为灰色。

点击不同树节点,则在下方编辑框中可以独立修改该节点文本。如果选中节点的计算值是个几何图形,那么右下角预览区还会显示该选中节点的对应图形。把鼠标放在语法树节点上将显示该节点符号的相应格式、说明以及当前求值数据结果。

另外在选定节点上点击鼠标右键可弹出菜单,各菜单项功能说明如下:

定位到文本:可定位并选中S#代码文本编辑框中的相应文本。

复制S#代码:可复制当前选中节点的S#代码文本到系统剪贴板中。

复制结果:可复制当前选中节点的计算结果到系统剪贴板中。注意结果通常也是一个S#代码,只包含常量而不包含任何变量。

复制实值:可复制当前选中节点的计算结果实际值到系统剪贴板中。注意大部分情况下实值与结果差不多,但表达字符串时有区别,实值不包含引号和转义符号。

3)查找面板

该面板提供了用于对S#代码文本编辑框内容进行查找或替换的功能。可以在指定需要查找内容的同时选择不同的大小写或全字匹配条件。另外在指定替换内容后可以逐个进行替换,也可以一次性全部进行替换。

4)所有面板

所有面板用于提供S#语言预置的所有S#代码符号(包含各种常量、运算符、函数、属性和方法等)的语法格式和输入示例,以便于用户按照数据类型查找、浏览或输入指定的S#代码符号。

直接从S#代码符号列表中双击或拖放所需图形则将在当前S#代码的编辑位置处插入对应的S#代码符号示例,点击分类下拉选择框还可以切换到不同的数据类型S#代码符号类别。

四、S#代码示例

本次示例的目的是通过带有局部变量的S#代码来表达和生成下图中的几何图形。注意示例主要用于说明S#代码常用编写流程,其中使用的具体公式或函数不必深究,后续将会有详细介绍。

1)局部变量需求分析

假设每个柱状图形宽度为W,高度为H,倒圆角半径为R。阵列图形的竖向列数和间距分别为Nx和Dx,横向排数和间距分别为Ny和Dy。

2)输入局部求值基本S#代码

采用eval求值函数可以设置局部变量并对最终S#代码进行求值,打开S#代码编辑器输入如下S#代码即可。

3)修改成单个柱状图形S#代码

单个柱状图形可以使用宽高矩形(RectCWH几何函数)进行倒圆角(.Fillet方法)来生成,把上述eval函数中的最终求值S#代码0改为如下图S#代码即可。

4)扩展成柱状图形阵列S#代码

柱状图形阵列可以使用水平垂直居中阵列(.Panscar方法)来生成,继续修改上述eval函数中的最终求值S#代码如下图即可。

5)测试S#代码并输出AutoCAD图形

测试S#代码比较简单,直接修改S#代码中局部变量的赋值即可,如修改W为20即可见到每个柱状图形都变宽了。把局部变量的赋值修改完成后,选择CAD菜单中的“输出到AutoCAD窗口中”即可生成相应的CAD图形并可用于设计等用途。注意:由于该项功能依赖于CAD已被剥离了,这里主要说明用途,使得实例更加完整可信。

声明:原创文章欢迎转载,但请注明出处,https://www.cnblogs.com/ShoneSharp。

软件: S#语言编辑解析运行器,运行环境.NET 4.0,绿色软件,单个EXE直接运行,无副作用。网盘下载链接为https://pan.baidu.com/s/1dF4e08p

ShoneSharp语言(S#)的设计和使用介绍系列(3)— 修炼工具的更多相关文章

  1. ShoneSharp语言(S#)的设计和使用介绍系列(1)— 开篇

    ShoneSharp语言(S#)的设计和使用介绍 系列(1)- 开篇 作者:Shone 声明:原创文章欢迎转载,但请注明出处,https://www.cnblogs.com/ShoneSharp. 一 ...

  2. ShoneSharp语言(S#)的设计和使用介绍系列(4)— 入门概述

    ShoneSharp语言(S#)的设计和使用介绍 系列(4)- 入门概述 作者:Shone 声明:原创文章欢迎转载,但请注明出处,https://www.cnblogs.com/ShoneSharp. ...

  3. ShoneSharp语言(S#)的设计和使用介绍系列(2)— 掀开盖头

    ShoneSharp语言(S#)的设计和使用介绍 系列(2)- 掀开盖头 作者:Shone 声明:原创文章欢迎转载,但请注明出处,https://www.cnblogs.com/ShoneSharp. ...

  4. ShoneSharp语言(S#)的设计和使用介绍系列(11)—“类”披炫服靓妆化成“表”

    ShoneSharp语言(S#)的设计和使用介绍 系列(11)—“类”披炫服靓妆化成“表” 作者:Shone 声明:原创文章欢迎转载,但请注明出处,https://www.cnblogs.com/Sh ...

  5. ShoneSharp语言(S#)的设计和使用介绍系列(10)— 富家子弟“语句“不炫富

    ShoneSharp语言(S#)的设计和使用介绍 系列(10)— 富家子弟“语句“不炫富 作者:Shone 声明:原创文章欢迎转载,但请注明出处,https://www.cnblogs.com/Sho ...

  6. ShoneSharp语言(S#)的设计和使用介绍系列(9)— 一等公民“函数“爱炫巧

    ShoneSharp语言(S#)的设计和使用介绍 系列(9)— 一等公民“函数“爱炫巧 作者:Shone 声明:原创文章欢迎转载,但请注明出处,https://www.cnblogs.com/Shon ...

  7. ShoneSharp语言(S#)的设计和使用介绍系列(8)— 最炫“公式”风

    ShoneSharp语言(S#)的设计和使用介绍 系列(8)— 最炫“公式”风 作者:Shone 声明:原创文章欢迎转载,但请注明出处,https://www.cnblogs.com/ShoneSha ...

  8. ShoneSharp语言(S#)的设计和使用介绍系列(7)— 布尔Bool及对象Object

    ShoneSharp语言(S#)的设计和使用介绍 系列(7)— 布尔Bool及对象Object 作者:Shone 声明:原创文章欢迎转载,但请注明出处,https://www.cnblogs.com/ ...

  9. ShoneSharp语言(S#)的设计和使用介绍系列(6)— 字符串String

    ShoneSharp语言(S#)的设计和使用介绍 系列(6)— 字符串String 作者:Shone 声明:原创文章欢迎转载,但请注明出处,https://www.cnblogs.com/ShoneS ...

随机推荐

  1. Python3爬虫登录模拟

    使用Python爬虫登录系统之后,能够实现的操作就多了很多,下面大致介绍下如何使用Python模拟登录. 我们都知道,在前端的加密验证,只要把将加密环境还原出来,便能够很轻易地登录. 首先分析登录的步 ...

  2. 容器与Docker简介(三)Docker相关术语——微软微服务电子书翻译系列

    本节列出了在更加深入Docker之前应该熟悉的术语和定义. 有关详细的定义,请参阅Docker提供的术语表. 容器镜像(Container image):具有创建容器所需要的所有依赖和信息的包. 镜像 ...

  3. bootstrap 鼠标悬停显示

    1. <button type="button" rel="drevil" data-content="报名截止时间:'+time+'" ...

  4. 为什么使用 Bootstrap

    移动设备优先:自 Bootstrap 3 起,框架包含了贯穿于整个库的移动设备优先的样式 浏览器支持:所有的主流浏览器都支持 Bootstrap 容易上手:只要您具备 HTML 和 CSS 的基础知识 ...

  5. Java web学习 Cookie&&Session

    cookie&&session 会话技术 从打开一个浏览器访问某个站点,到关闭这个浏览器的整个过程,成为一次会话.会 话技术就是记录这次会话中客户端的状态与数据的. 会话技术分为Coo ...

  6. SAP开发快捷键

    F1 帮助     F2 回车确认(在某些地方可用,比如ABAP)     F3 返回     F4 选择输入项     F5 新增     F6 复制为...     F7 全选     F8 选择 ...

  7. centos7 防火墙 配置

    1.查看Firewall 服务状态 systemctl status firewalld 2.查看Firewall 的状态 firewall-cmd --state 注意: firewalld默认配置 ...

  8. JavaScript基础一(js基础函数与运算符)

    [使用js的三种方式] 1.在HTML标签中,直接内嵌js(并不提倡使用) <button onclick=" alert('点就点')"> 点我啊</butto ...

  9. Android 开发笔记___时间选择器---timePicker

    像datepicker一样,也有timepicker. 同样有timepickerdialog 所用到的方法还是一样,监听时间选择器的变化. package com.example.alimjan.h ...

  10. Python丨Python 性能分析大全

    虽然运行速度慢是 Python 与生俱来的特点,大多数时候我们用 Python 就意味着放弃对性能的追求.但是,就算是用纯 Python 完成同一个任务,老手写出来的代码可能会比菜鸟写的代码块几倍,甚 ...