|
EDA365欢迎您登录!
您需要 登录 才可以下载或查看,没有帐号?注册
x
( F# v5 I) c7 t4 D% ^1 j微型语言:小型、专门应用领域特制、大量减少程序行数的语言。; j6 D o0 ]' G$ z6 u- p
1. 使用微型语言把编程问题的规格说明提升一个层次,更具表达力,更紧凑;9 }1 ^: g: R" E/ l1 |; d. m
2. 规格说明文件越来越像微型语言。8 Z# J2 k$ h! p+ N" n2 E8 Y
4 D1 N8 Z7 [- `/ |; {& Z/ N
理解语言分类法
* ]; p! n4 m# W3 \1 B4 u7 G
$ V' H- N% v; U; b' E
9 `' o3 }0 _/ N) |1 Q" x- m2 v6 {! Y G2 b2 [
案例分析. h' G% J6 K- t, r2 r( j% k+ \2 }4 _
2 w1 _8 n. o- v9 m8 H, M% k% ksng: 透明,结构化的数据文件使得相应的编辑、转换和生成工具无需要知道其他方的设计假定。8 k) r; e; [ @
regexp:Glob表达式,基本正则表达式,扩展正则表达式,Perl正则表达式。正则表达式是微型语言能够多么简练的极端例子。2 Z9 o6 J) i1 I
Glade:X,GTK(和Qt是两个流行开源X工具包),说明GUI窗体及属性、代码生成。2 C& N) o; Z s. E; X
m4:扩展字符串,键值对。
0 _0 P: P6 L) j' ?. ~( o {XSLT:复杂,但是仍然是微语言:有限的分类,不包含数组和数据结构;有限的接口。
- V6 F7 E/ u& T( xtroff:排版格式器。
, {) @: B. F# p; ]3 o% K; [fetchmail:语法糖导致分号癌,谨慎使用,防止晦涩多余帮助。
0 E9 ^2 N* p* K+ Dawk:内嵌在脚本中使用。 d2 v" h8 u" K' o6 \- y
PostScript:排版,堆栈式语言支持紧凑、经济的编码,但也非常难读。
" U- U6 O! j0 n5 D% Ybc和dc:无限精度算数。
) D8 D' B) u6 ?+ gEmacs Lisp:emacs是围绕lisp的语言构建而成的,原语既可以说明编辑缓存的动作,也可以控制从进程。
9 a3 K6 h% R1 B+ L. C1 T+ Q$ Kjavascript:无需真正进入但可尽量接近的通用语言;客户端javascript及其通过单个DOM对象的浏览器环境结合是个不错的设计。2 G6 R$ r2 [9 S# y* r0 ^& t( B
5 T; @' X J3 P4 ?+ J/ l/ ?
! p' g% W+ G( p* H; c* }设计微型语言
/ T+ l+ k( U( J5 F& E( Q! e' h2 E3 P/ Y
1. 简单。如果出于不便或者安全的考虑,可以使用数据结构代替微语言。或者利用沙盒化来简化设计,提高安全性。
: ^- ]! e2 Z0 U4 m, c2. 自顶向下。# T% w) V8 e. H) d- X& C
3. 扩展和嵌入语言来实现微语言。
, H3 G9 P# a7 W% d; |" c8 H4. 编写自定义语法,yacc和lex是重要工具。
- x3 S4 _0 ]9 ]9 Q) i4 E. ?) v6 C5. 慎用宏,防止滋生bug;比如运算的优先级。
) S4 u/ i$ T9 g$ u- E6. 语言还是应用协议,微型语言引擎是否可以被其他程序作为从进程交互调用。! F, S2 M+ B- h6 f% B
. B( q6 K: f, _0 G7 {- O( q4 C$ y) Q& \
. m% U' k! o2 Z |
|