找回密码
 注册
关于网站域名变更的通知
查看: 259|回复: 1
打印 上一主题 下一主题

学习一下Unix编程中的微型语言

[复制链接]

该用户从未签到

跳转到指定楼层
1#
发表于 2020-1-14 11:14 | 只看该作者 |只看大图 回帖奖励 |倒序浏览 |阅读模式

EDA365欢迎您登录!

您需要 登录 才可以下载或查看,没有帐号?注册

x
! t+ f9 c7 q/ v  K
微型语言:小型、专门应用领域特制、大量减少程序行数的语言。
! U$ C$ P( Q* N5 q& @6 _     1. 使用微型语言把编程问题的规格说明提升一个层次,更具表达力,更紧凑;
8 f- b* ~# u# H8 o3 L     2. 规格说明文件越来越像微型语言。! r, L5 }2 Z8 T7 L3 f

6 B" E, i/ ~% q0 y2 |1 c( y理解语言分类法+ M2 ?4 Z( w. |

, e0 ]+ c# S. Z+ z% g - y/ ?! e' F* a  H0 B0 ?6 X  z+ T

5 Z4 L0 t) G- Z  @9 H( r案例分析/ m$ h9 E! a+ ~9 A2 L+ I0 ?
6 _$ I$ [) I' i! d
sng: 透明,结构化的数据文件使得相应的编辑、转换和生成工具无需要知道其他方的设计假定。
0 b/ n8 t- ?8 |) V$ Pregexp:Glob表达式,基本正则表达式,扩展正则表达式,Perl正则表达式。正则表达式是微型语言能够多么简练的极端例子。
# s# z/ c" a* r5 \+ ?- r& L+ z  ?Glade:X,GTK(和Qt是两个流行开源X工具包),说明GUI窗体及属性、代码生成。$ P# l$ A9 I3 ^3 q
m4:扩展字符串,键值对。4 }% K. z' b4 E2 a$ [7 @
XSLT:复杂,但是仍然是微语言:有限的分类,不包含数组和数据结构;有限的接口。
' S8 A0 r5 K6 L( Itroff:排版格式器。, H2 k, {4 V" e  d% d* ]
fetchmail:语法糖导致分号癌,谨慎使用,防止晦涩多余帮助。
& C0 x& K. K/ V' Yawk:内嵌在脚本中使用。
: F$ A4 c( ]* }, p# }" U; MPostScript:排版,堆栈式语言支持紧凑、经济的编码,但也非常难读。
- \* W% r  C4 zbc和dc:无限精度算数。
% A' g  j* y+ E: b. [% gEmacs Lisp:emacs是围绕lisp的语言构建而成的,原语既可以说明编辑缓存的动作,也可以控制从进程。5 }+ N# u; K% E7 u
javascript:无需真正进入但可尽量接近的通用语言;客户端javascript及其通过单个DOM对象的浏览器环境结合是个不错的设计。5 ]9 {7 x* F  d9 O* t8 a& ?: y1 M

% W# \; W: P6 O! J, t5 N  x: W: Q* E5 w) a5 ~  I
设计微型语言
' O  H# G' R' J4 j8 l0 p3 y; K& U, C0 K1 T
1. 简单。如果出于不便或者安全的考虑,可以使用数据结构代替微语言。或者利用沙盒化来简化设计,提高安全性。6 W! {  v) B4 U( l: h8 ]+ r
2. 自顶向下。6 V8 C+ Z6 ?# O( q" U5 u
3. 扩展和嵌入语言来实现微语言。
5 G% h4 T! q$ C* i8 k: t8 H$ |# T7 A3 ^4. 编写自定义语法,yacc和lex是重要工具。1 L; v! z& w/ Z' l+ `: G3 X/ R
5. 慎用宏,防止滋生bug;比如运算的优先级。
5 D& a- B; w# V2 n) N7 H6. 语言还是应用协议,微型语言引擎是否可以被其他程序作为从进程交互调用。! a$ B( [* s0 P- D
# _. p$ A& H5 r- n1 y( C9 }. P
2 v2 V$ r8 |; ?0 ?7 k
' _4 f+ S) }5 G4 |

该用户从未签到

2#
发表于 2020-1-14 19:59 | 只看该作者
Unix编程中的微型语言
您需要登录后才可以回帖 登录 | 注册

本版积分规则

关闭

推荐内容上一条 /1 下一条

EDA365公众号

关于我们|手机版|EDA365电子论坛网 ( 粤ICP备18020198号-1 )

GMT+8, 2025-11-25 17:36 , Processed in 0.171875 second(s), 27 queries , Gzip On.

深圳市墨知创新科技有限公司

地址:深圳市南山区科技生态园2栋A座805 电话:19926409050

快速回复 返回顶部 返回列表