调经吃什么药效果最好| 肺痿是什么意思| 什么牌子的氨基酸洗面奶好| 沙门氏菌用什么药最好| 软组织密度影什么意思| 西药是用什么材料做的| 脚底板疼痛是什么原因| 儿童吃手指是什么原因| 养兰花用什么土最好| 木棉花的花语是什么| 梦见长白头发是什么意思| 蚊子为什么不咬我| 移花接木什么意思| 吃什么有助于伤口愈合| 风花雪月是什么生肖| 幽门螺杆菌是什么症状| 什么是核心期刊| 沙弗莱是什么宝石| 更的部首是什么| 鬼子来了为什么被禁| 超声是什么检查| 不长毛的猫叫什么名字| 脸书是什么| 月经提前了10天是什么原因| 海里是什么单位| 伤寒是什么意思| 0z是什么单位| 眼皮跳是什么原因引起的| 老是口渴是什么原因| 什么是av| 焦虑失眠吃什么药最好| 宝玑手表是什么档次| 小丑什么意思| 主动脉瓣退行性变是什么意思| 打闭经针有什么副作用| 跖疣是什么原因引起的| 护理和护士有什么区别| 米为什么会生虫| 痛风能吃什么鱼| 什么是过敏| 胶质瘤是什么病| 什么姿势| 婴儿增强免疫力吃什么| 脚底有黑痣有什么说法| 茯苓什么味道| 子子念什么| 诟病是什么意思| 内风湿是什么原因引起的| 司马懿字什么| 一张纸可以折什么| 伽马射线是什么| 一般什么人戴江诗丹顿| 子宫内膜3mm意味着什么| 不知道干什么| 惊蛰是什么季节| 关节退变什么意思| 治疗舌苔白厚用什么药| 缠腰蛇是什么原因引起的| 丝鸟读什么| 一个人自言自语的说话是什么病| 二是什么意思| hmo是什么| 小便尿色黄是什么问题| 乱的偏旁是什么| 抖s是什么意思| 全身而退是什么意思| 胸口长痘痘是什么原因| 酪朊酸钠是什么| 冉字五行属什么| 轶字五行属什么| 偏左偏右是什么意思| 一米阳光是什么意思| 炸毛是什么意思| 女团是什么意思| 7什么意思| 查尿酸挂什么科| 黑脸代表什么| 梦见两条大蟒蛇是什么征兆| 老年人喝什么奶粉好| 正畸是什么意思| 青少年腰疼是什么原因引起的| 糖类抗原125偏高说明什么| 溶血症是什么意思| 什么米之乡| 青蒿素是什么| 入珠是什么| 康妇炎胶囊主治什么| 缺点是什么意思| 长痘痘吃什么水果好| 武汉有什么好玩的地方| 巨蟹座前面是什么星座| 孕妇脚肿是什么原因引起的| 纹身纹什么招财好运| 老班章是什么茶| 精神病吃什么药| 2月4日什么星座| 梦见拉屎是什么意思| 蜂蜜芥末酱是什么味道| 唐玄宗叫什么| 动物园里有什么动物| 芭乐是什么水果| 冯巩什么军衔| 眼睛老是肿着是什么原因造成的| 婷婷玉立什么意思| 西辽国在现今什么地方| 三月出生的是什么星座| 慢性病卡有什么用| 脂肪肝喝什么茶| 63年属什么| 总蛋白低是什么意思| 希腊用什么货币| 婴儿吓着了有什么症状| 兔死狗烹什么意思| 经期吃芒果有什么影响| 办出国护照需要什么手续| 什么是梦魇| 嬗变是什么意思| 梦见梳头发是什么意思| 前列腺炎吃什么药最有效| 用什么泡水喝补肾| 印度什么时候独立的| 磁共振检查什么| hpv感染是什么病| 舒五行属什么| 一个三点水一个令念什么| 孙红雷的老婆叫什么名字| 狗狗胰腺炎有什么症状| 吃龟苓膏有什么好处| 网络绿茶是什么意思| 塌陷是什么意思| 怀孕有什么表现| 脚踝浮肿是什么原因| 艺考是什么| 全身酸痛吃什么药好| 79岁属什么| 茜读什么| 女人吃枸杞有什么好处| 智能手环是干什么用的| 五行什么克金| 4pcs是什么意思| 腿抽筋什么原因引起的| 县级以上医院是指什么| 女性白带多吃什么药| 吃什么排宿便清肠彻底| 汗液里面有什么成分| 知了猴什么时候出土| 教授是什么级别| 心脏窦性心律什么意思| 梦见小麦粒是什么意思| 女生两个月没来月经是什么原因| 上课什么坐姿可以瘦腿| 花荣的绰号是什么| 蛋白粉有什么作用| 鹰嘴豆是什么| 坨坨什么意思| 什么的夏天| 安享晚年是什么意思| 寸金难买寸光阴什么意思| 勃起是什么| 吃什么长卵泡| 发生火灾时的正确做法是什么| 颈椎反弓是什么意思| 头晕出冷汗是什么原因| soso是什么意思| 一个立一个羽念什么| rinnai是什么品牌| 脱相是什么意思| 眉毛上长痣代表什么| 什么是天乙贵人| 催经吃什么药| 嘱托是什么意思| 什么叫suv车| 厚积薄发是什么意思啊| 戒烟吃什么药| 经常打嗝放屁是什么原因| 超敏c蛋白反应高是什么原因| 梦见煤气罐爆炸是什么意思| 脚面肿是什么原因| 喝什么对肾好| 量是什么意思| 妈妈的妹妹叫什么| 泌尿系彩超主要是检查什么| 3月20号是什么星座| 那敢情好是什么意思| 月经一直不停有什么办法止血| 前列腺增生伴钙化是什么意思| 维生素B6有什么功效| 混合型高脂血症是什么意思| 灵什么意思| 基诺浦鞋属于什么档次| 历久弥新什么意思| 唐僧是什么生肖| 果断是什么意思| 望周知是什么意思| 女人喜欢什么样的阴茎| 应用化学是干什么的| 例行是什么意思| 着床出血是什么意思| 检查肾脏挂什么科| 辅酶q10什么时间吃好| 转氨酶高有什么危害| 6月14号是什么星座| 鹦鹉可以吃什么| 探望病人买什么水果| 什么香什么鼻| 吃什么会变瘦| 为什么下巴经常长痘痘| 黑白猫是什么品种| 孕妇多吃什么食物好| 发现新大陆是什么意思| 炒菜放什么调料最好吃| 梅开二度的意思是什么| 日本料理都有什么菜| 食管炎是什么原因引起的| 武则天是什么朝代| 宫颈多发囊肿是什么意思| 秒杀是什么意思| 每天放很多屁是什么原因| 小腿发凉是什么原因造成的| 琼瑶剧是什么意思| 紫罗兰是什么颜色| 什么是汉服| 破釜沉舟什么意思| 总胆汁酸是什么意思| 脾不好吃什么药| 臭男人是什么意思| 经常拉肚子吃什么药好| 巴适是什么意思| 梅花三弄的三弄指什么| 掂过碌蔗是什么意思| 停诊是什么意思| 驿什么意思| 刺激是什么意思| 乌龟下蛋预示着什么| 料理机是干什么用的| 什么是bmi| 持之以恒的恒是什么意思| 元旦送老师什么礼物| 3e是什么意思| 绿色搭配什么颜色好看| 坐围和臀围有什么区别| 什么叫阴虚什么叫阳虚| 嫑怹是什么意思| 艾灸脚心有什么好处| 4月份什么星座| 不走寻常路是什么品牌| 茯苓泡水喝有什么功效| 钢铁侠是什么意思| vs是什么牌子| 什么护肤品| 倒膜是什么意思| ktv是什么意思| 毛豆是什么豆| 为什么不开朱元璋的墓| 草莓舌吃什么药| qt什么意思| 空气刘海适合什么脸型| 夏天吃什么水果好| 又字五行属什么| 避孕套玻尿酸的作用是什么| zzy是什么意思| 尿不出来吃什么药| 槟榔为什么上瘾| 马骝是什么意思| 百度Jump to content

创意只服任天堂!《喷射战士2》大厅可演奏音乐

From Wikipedia, the free encyclopedia
(Redirected from Mini-language)
百度 我作为一线工人感到很光荣也很振奋。

A domain-specific language (DSL) is a computer language specialized to a particular application domain. This is in contrast to a general-purpose language (GPL), which is broadly applicable across domains. There are a wide variety of DSLs, ranging from widely used languages for common domains, such as HTML for web pages, down to languages used by only one or a few pieces of software, such as MUSH soft code. DSLs can be further subdivided by the kind of language, and include domain-specific markup languages, domain-specific modeling languages (more generally, specification languages), and domain-specific programming languages. Special-purpose computer languages have always existed in the computer age, but the term "domain-specific language" has become more popular due to the rise of domain-specific modeling. Simpler DSLs, particularly ones used by a single application, are sometimes informally called mini-languages.

The line between general-purpose languages and domain-specific languages is not always sharp, as a language may have specialized features for a particular domain but be applicable more broadly, or conversely may in principle be capable of broad application but in practice used primarily for a specific domain. For example, Perl was originally developed as a text-processing and glue language, for the same domain as AWK and shell scripts, but was mostly used as a general-purpose programming language later on. By contrast, PostScript is a Turing-complete language, and in principle can be used for any task, but in practice is narrowly used as a page description language.

Use

[edit]

The design and use of appropriate DSLs is a key part of domain engineering, by using a language suitable to the domain at hand – this may consist of using an existing DSL or GPL, or developing a new DSL. Language-oriented programming considers the creation of special-purpose languages for expressing problems as standard part of the problem-solving process. Creating a domain-specific language (with software to support it), rather than reusing an existing language, can be worthwhile if the language allows a particular type of problem or solution to be expressed more clearly than an existing language would allow and the type of problem in question reappears sufficiently often. Pragmatically, a DSL may be specialized to a particular problem domain, a particular problem representation technique, a particular solution technique, or other aspects of a domain.

Overview

[edit]

A domain-specific language is created specifically to solve problems in a particular domain and is not intended to be able to solve problems outside of it (although that may be technically possible). In contrast, general-purpose languages are created to solve problems in many domains. The domain can also be a business area. Some examples of business areas include:

  • life insurance policies (developed internally by a large insurance enterprise)
  • combat simulation
  • salary calculation
  • billing

A domain-specific language is somewhere between a tiny programming language and a scripting language, and is often used in a way analogous to a programming library. The boundaries between these concepts are quite blurry, much like the boundary between scripting languages and general-purpose languages.

In design and implementation

[edit]

Domain-specific languages are languages (or often, declared syntaxes or grammars) with very specific goals in design and implementation. A domain-specific language can be one of a visual diagramming language, such as those created by the Generic Eclipse Modeling System, programmatic abstractions, such as the Eclipse Modeling Framework, or textual languages. For instance, the command line utility grep has a regular expression syntax which matches patterns in lines of text. The sed utility defines a syntax for matching and replacing regular expressions. Often, these tiny languages can be used together inside a shell to perform more complex programming tasks.

The line between domain-specific languages and scripting languages is somewhat blurred, but domain-specific languages often lack low-level functions for filesystem access, interprocess control, and other functions that characterize full-featured programming languages, scripting or otherwise. Many domain-specific languages do not compile to byte-code or executable code, but to various kinds of media objects: GraphViz exports to PostScript, GIF, JPEG, etc., where Csound compiles to audio files, and a ray-tracing domain-specific language like POV compiles to graphics files.

Data definition languages

[edit]

A data definition language like SQL presents an interesting case: it can be deemed a domain-specific language because it is specific to a specific domain (in SQL's case, accessing and managing relational databases), and is often called from another application, but SQL has more keywords and functions than many scripting languages, and is often thought of as a language in its own right, perhaps because of the prevalence of database manipulation in programming and the amount of mastery required to be an expert in the language.

Further blurring this line, many domain-specific languages have exposed APIs, and can be accessed from other programming languages without breaking the flow of execution or calling a separate process, and can thus operate as programming libraries.

Programming tools

[edit]

Some domain-specific languages expand over time to include full-featured programming tools, which further complicates the question of whether a language is domain-specific or not. A good example is the functional language XSLT, specifically designed for transforming one XML graph into another, which has been extended since its inception to allow (particularly in its 2.0 version) for various forms of filesystem interaction, string and date manipulation, and data typing.

In model-driven engineering, many examples of domain-specific languages may be found like OCL, a language for decorating models with assertions or QVT, a domain-specific transformation language. However, languages like UML are typically general-purpose modeling languages.

To summarize, an analogy might be useful: a Very Little Language is like a knife, which can be used in thousands of different ways, from cutting food to cutting down trees.[clarification needed] A domain-specific language is like an electric drill: it is a powerful tool with a wide variety of uses, but a specific context, namely, putting holes in things. A General Purpose Language is a complete workbench, with a variety of tools intended for performing a variety of tasks. Domain-specific languages should be used by programmers who, looking at their current workbench, realize they need a better drill and find that a particular domain-specific language provides exactly that.[citation needed]

Domain-specific language topics

[edit]

External and Embedded Domain Specific Languages

[edit]

DSLs implemented via an independent interpreter or compiler are known as External Domain Specific Languages. Well known examples include TeX or AWK. A separate category known as Embedded (or Internal) Domain Specific Languages are typically implemented within a host language as a library and tend to be limited to the syntax of the host language, though this depends on host language capabilities.[1]

Usage patterns

[edit]

There are several usage patterns for domain-specific languages:[2][3]

  • Processing with standalone tools, invoked via direct user operation, often on the command line or from a Makefile (e.g., grep for regular expression matching, sed, lex, yacc, the GraphViz toolset, etc.)
  • Domain-specific languages which are implemented using programming language macro systems, and which are converted or expanded into a host general purpose language at compile-time or realtime
  • As embedded domain-specific language (eDSL)[4] also known as an internal domain-specific language, is a DSL that is implemented as a library in a "host" programming language. The embedded domain-specific language leverages the syntax, semantics and runtime environment (sequencing, conditionals, iteration, functions, etc.) and adds domain-specific primitives that allow programmers to use the "host" programming language to create programs that generate code in the "target" programming language. Multiple eDSLs can easily be combined into a single program and the facilities of the host language can be used to extend an existing eDSL. Other possible advantages using an eDSL are improved type safety and better IDE tooling. eDSL examples: SQLAlchemy "Core" an SQL eDSL in Python, jOOQ an SQL eDSL in Java, LINQ's "method syntax" an SQL eDSL in C# and kotlinx.html an HTML eDSL in Kotlin.
  • Domain-specific languages which are called (at runtime) from programs written in general purpose languages like C or Perl, to perform a specific function, often returning the results of operation to the "host" programming language for further processing; generally, an interpreter or virtual machine for the domain-specific language is embedded into the host application (e.g. format strings, a regular expression engine)
  • Domain-specific languages which are embedded into user applications (e.g., macro languages within spreadsheets)[5] and which are (1) used to execute code that is written by users of the application, (2) dynamically generated by the application, or (3) both.

Many domain-specific languages can be used in more than one way.[citation needed] DSL code embedded in a host language may have special syntax support, such as regexes in sed, AWK, Perl or JavaScript, or may be passed as strings.

Design goals

[edit]

Adopting a domain-specific language approach to software engineering involves both risks and opportunities. The well-designed domain-specific language manages to find the proper balance between these.

Domain-specific languages have important design goals that contrast with those of general-purpose languages:

  • Domain-specific languages are less comprehensive.
  • Domain-specific languages are much more expressive in their domain.
  • Domain-specific languages should exhibit minimal redundancy.

Idioms

[edit]

In programming, idioms are methods imposed by programmers to handle common development tasks, e.g.:

  • Ensure data is saved before the window is closed.
  • Edit code whenever command-line parameters change because they affect program behavior.

General purpose programming languages rarely support such idioms, but domain-specific languages can describe them, e.g.:

  • A script can automatically save data.
  • A domain-specific language can parameterize command line input.

Examples

[edit]

Examples of domain-specific programming languages include HTML, Logo for pencil-like drawing, Verilog and VHDL hardware description languages, MATLAB and GNU Octave for matrix programming, Mathematica, Maple and Maxima for symbolic mathematics, Specification and Description Language for reactive and distributed systems, spreadsheet formulas and macros, SQL for relational database queries, YACC grammars for creating parsers, regular expressions for specifying lexers, the Generic Eclipse Modeling System for creating diagramming languages, Csound for sound and music synthesis, and the input languages of GraphViz and GrGen, software packages used for graph layout and graph rewriting, Hashicorp Configuration Language used for Terraform and other Hashicorp tools, Puppet also has its own configuration language.

GameMaker Language

[edit]

The GML scripting language used by GameMaker Studio is a domain-specific language targeted at novice programmers to easily be able to learn programming. While the language serves as a blend of multiple languages including Delphi, C++, and BASIC. Most of functions in that language after compiling in fact calls runtime functions written in language specific for targeted platform, so their final implementation is not visible to user. The language primarily serves to make it easy for anyone to pick up the language and develop a game, and thanks to GM runtime which handles main game loop and keeps implementation of called functions, few lines of code is required for simplest game, instead of thousands.

ColdFusion Markup Language

[edit]

ColdFusion's associated scripting language is another example of a domain-specific language for data-driven websites. This scripting language is used to weave together languages and services such as Java, .NET, C++, SMS, email, email servers, http, ftp, exchange, directory services, and file systems for use in websites.

The ColdFusion Markup Language (CFML) includes a set of tags that can be used in ColdFusion pages to interact with data sources, manipulate data, and display output. CFML tag syntax is similar to HTML element syntax.

FilterMeister

[edit]

FilterMeister is a programming environment, with a programming language that is based on C, for the specific purpose of creating Photoshop-compatible image processing filter plug-ins; FilterMeister runs as a Photoshop plug-in itself and it can load and execute scripts or compile and export them as independent plug-ins. Although the FilterMeister language reproduces a significant portion of the C language and function library, it contains only those features which can be used within the context of Photoshop plug-ins and adds a number of specific features only useful in this specific domain.

MediaWiki templates

[edit]

The Template feature of MediaWiki is an embedded domain-specific language whose fundamental purpose is to support the creation of page templates and the transclusion (inclusion by reference) of MediaWiki pages into other MediaWiki pages.

Software engineering uses

[edit]

There has been much interest in domain-specific languages to improve the productivity and quality of software engineering. Domain-specific language could possibly provide a robust set of tools for efficient software engineering. Such tools are beginning to make their way into the development of critical software systems.

The Software Cost Reduction Toolkit[6] is an example of this. The toolkit is a suite of utilities including a specification editor to create a requirements specification, a dependency graph browser to display variable dependencies, a consistency checker to catch missing cases in well-formed formulas in the specification, a model checker and a theorem prover to check program properties against the specification, and an invariant generator that automatically constructs invariants based on the requirements.

A newer development is language-oriented programming, an integrated software engineering methodology based mainly on creating, optimizing, and using domain-specific languages.

Metacompilers

[edit]

Complementing language-oriented programming, as well as all other forms of domain-specific languages, are the class of compiler writing tools called metacompilers. A metacompiler is not only useful for generating parsers and code generators for domain-specific languages, but a metacompiler itself compiles a domain-specific metalanguage specifically designed for the domain of metaprogramming.

Besides parsing domain-specific languages, metacompilers are useful for generating a wide range of software engineering and analysis tools. The meta-compiler methodology is often found in program transformation systems.

Metacompilers that played a significant role in both computer science and the computer industry include Meta-II,[7] and its descendant TreeMeta.[8]

Unreal Engine before version 4 and other games

[edit]

Unreal and Unreal Tournament unveiled a language called UnrealScript. This allowed for rapid development of modifications compared to the competitor Quake (using the Id Tech 2 engine). The Id Tech engine used standard C code meaning C had to be learned and properly applied, while UnrealScript was optimized for ease of use and efficiency. Similarly, more recent games have introduced their own specific languages for development. One more common example is Lua for scripting.[citation needed]

Rules engines for policy automation

[edit]

Various business rules engines have been developed for automating policy and business rules used in both government and private industry. ILOG, Oracle Policy Automation, DTRules, Drools and others provide support for DSLs aimed to support various problem domains. DTRules goes so far as to define an interface for the use of multiple DSLs within a rule set.

The purpose of business rules engines is to define a representation of business logic in as human-readable fashion as possible. This allows both subject-matter experts and developers to work with and understand the same representation of the business logic. Most rules engines provide both an approach to simplifying the control structures for business logic (for example, using declarative rules or decision tables) coupled with alternatives to programming syntax in favor of DSLs.

Statistical modelling languages

[edit]

Statistical modelers have developed domain-specific languages such as R (an implementation of the S language), Bugs, Jags, and Stan. These languages provide a syntax for describing a Bayesian model and generate a method for solving it using simulation.

Generate model and services to multiple programming Languages

[edit]

Generate object handling and services based on an Interface Description Language for a domain-specific language such as JavaScript for web applications, HTML for documentation, C++ for high-performance code, etc. This is done by cross-language frameworks such as Apache Thrift or Google Protocol Buffers.

Gherkin

[edit]

Gherkin is a language designed to define test cases to check the behavior of software, without specifying how that behavior is implemented. It is meant to be read and used by non-technical users using a natural language syntax and a line-oriented design. The tests defined with Gherkin must then be implemented in a general programming language. Then, the steps in a Gherkin program acts as a syntax for method invocation accessible to non-developers.

Other examples

[edit]

Other prominent examples of domain-specific languages include:

Advantages and disadvantages

[edit]

Some of the advantages:[2][3]

  • Domain-specific languages allow solutions to be expressed in the idiom and at the level of abstraction of the problem domain. The idea is that domain experts themselves may understand, validate, modify, and often even develop domain-specific language programs. However, this is seldom the case.[9]
  • Domain-specific languages allow validation at the domain level. As long as the language constructs are safe any sentence written with them can be considered safe.[citation needed]
  • Domain-specific languages can help to shift the development of business information systems from traditional software developers to the typically larger group of domain-experts who (despite having less technical expertise) have a deeper knowledge of the domain.[10]
  • Domain-specific languages are easier to learn, given their limited scope.

Some of the disadvantages:

  • Cost of learning a new language
  • Limited applicability
  • Cost of designing, implementing, and maintaining a domain-specific language as well as the tools required to develop with it (IDE)
  • Finding, setting, and maintaining proper scope.
  • Difficulty of balancing trade-offs between domain-specificity and general-purpose programming language constructs.
  • Potential loss of processor efficiency compared with hand-coded software.
  • Proliferation of similar non-standard domain-specific languages, for example, a DSL used within one insurance company versus a DSL used within another insurance company.[11]
  • Non-technical domain experts can find it hard to write or modify DSL programs by themselves.[9]
  • Increased difficulty of integrating the DSL with other components of the IT system (as compared to integrating with a general-purpose language).
  • Low supply of experts in a particular DSL tends to raise labor costs.
  • Harder to find code examples.

Tools for designing domain-specific languages

[edit]
  • JetBrains MPS is a tool for designing domain-specific languages. It uses projectional editing which allows overcoming the limits of language parsers and building DSL editors, such as ones with tables and diagrams. It implements language-oriented programming. MPS combines an environment for language definition, a language workbench, and an Integrated Development Environment (IDE) for such languages.[12]
  • MontiCore is a language workbench for the efficient development of domain-specific languages. It processes an extended grammar format that defines the DSL and generates Java components for processing the DSL documents.[13]
  • Xtext is an open-source software framework for developing programming languages and domain-specific languages (DSLs). Unlike standard parser generators, Xtext generates not only a parser but also a class model for the abstract syntax tree. In addition, it provides a fully featured, customizable Eclipse-based IDE.[14] The project was archived in April 2023.
  • Racket is a cross-platform language toolchain including native code, JIT and JavaScript compiler, IDE (in addition to supporting Emacs, Vim, VSCode and others) and command line tools designed to accommodate creating both domain-specific and general purpose languages.[15][16]

See also

[edit]

References

[edit]
  1. ^ Fowler, Martin; Parsons, Rebecca. "Domain Specific Languages". Retrieved 6 July 2019.
  2. ^ a b Marjan Mernik, Jan Heering, and Anthony M. Sloane. When and how to develop domain-specific languages. ACM Computing Surveys, 37(4):316–344, 2005.doi:10.1145/1118890.1118892
  3. ^ a b Diomidis Spinellis. Notable design patterns for domain specific languages. Journal of Systems and Software, 56(1):91–99, February 2001. doi:10.1016/S0164-1212(00)00089-3
  4. ^ Felleisen, Matthias; Findler, Robert Bruce; Flatt, Matthew; Krishnamurthi, Shriram; Barzilay, Eli; McCarthy, Jay; Tobin-Hochstadt, Sam (March 2018). "A Programmable Programming Language". Communications of the ACM. 61 (3): 62–71. doi:10.1145/3127323. S2CID 3887010. Retrieved 15 May 2019.
  5. ^ Stinson, Craig (2025-08-05). "Building the Perfect Spreadsheet". PC. pp. 101–164. Retrieved 2025-08-05.
  6. ^ Heitmeyer, C. (1999). "Using the SCR* toolset to specify software requirements" (PDF). Proceedings. 2nd IEEE Workshop on Industrial Strength Formal Specification Techniques. IEEE. pp. 12–13. doi:10.1109/WIFT.1998.766290. ISBN 0-7695-0081-1. S2CID 16079058. Archived from the original (PDF) on 2025-08-05.
  7. ^ Shorre, D. V. (1964). "META II a syntax-oriented compiler writing language". Proceedings of the 1964 19th ACM national conference. pp. 41.301 – 41.3011. doi:10.1145/800257.808896. S2CID 43144779.
  8. ^ Carr, C. Stephen; Luther, David A.; Erdmann, Sherian (1969). "The TREE-META Compiler-Compiler System: A Meta Compiler System for the Univac 1108 and General Electric 645". University of Utah Technical Report RADC-TR-69-83. Archived from the original on February 1, 2020.
  9. ^ a b Freudenthal, Margus (1 January 2009). "Domain Specific Languages in a Customs Information System". IEEE Software: 1. doi:10.1109/MS.2009.152.
  10. ^ Aram, Michael; Neumann, Gustaf (2025-08-05). "Multilayered analysis of co-development of business information systems" (PDF). Journal of Internet Services and Applications. 6 (1). doi:10.1186/s13174-015-0030-8. S2CID 16502371.
  11. ^ Miotto, Eric. "On the integration of domain-specific and scientific bodies of knowledge in Model Driven Engineering" (PDF). Archived from the original (PDF) on 2025-08-05. Retrieved 2025-08-05.
  12. ^ "JetBrains MPS: Domain-Specific Language Creator".
  13. ^ "MontiCore".
  14. ^ "Xtext".
  15. ^ Tobin-Hochstadt, S.; St-Amour, V.; Culpepper, R.; Flatt, M.; Felleisen, M. (2011). "Languages as Libraries" (PDF). Programming Language Design and Implementation.
  16. ^ Flatt, Matthew (2012). "Creating Languages in Racket". Communications of the ACM. Retrieved 2025-08-05.

Further reading

[edit]
[edit]
Articles
什么是失信被执行人 腱鞘炎用什么药能治好 螺旋幽门杆菌吃什么药治疗好 桃皮绒是什么面料 吃什么能补钙
唱过什么歌 肠炎是什么症状 桃花依旧笑春风什么意思 体重除以身高的平方是什么指数 孕早期吃什么有利于胎心胎芽发育
一天当中什么时候血压最高 女性痔疮挂什么科室 曹操的脸谱是什么颜色 一什么门牙 鼻渊是什么意思
dw手表属于什么档次 月经不调是什么症状 虎父无犬女是什么意思 茶壶里煮饺子的歇后语是什么 鼻窦炎挂什么科
8月30号是什么星座hcv8jop8ns4r.cn 河水像什么hcv8jop2ns0r.cn 气口是什么意思0297y7.com 藜芦是什么东西hcv9jop2ns6r.cn other是什么品牌cl108k.com
检查痛风挂什么科hcv7jop4ns8r.cn 罄竹难书的罄什么意思cl108k.com 维生素b族为什么不能晚上吃hcv8jop5ns8r.cn 9月是什么星座的mmeoe.com 爸爸生日送什么礼物hcv9jop1ns3r.cn
湍急是什么意思hcv9jop7ns3r.cn 总头晕是什么原因hcv8jop4ns7r.cn 为什么经常放屁hcv8jop1ns0r.cn 脚凉吃什么药hcv8jop7ns8r.cn 中产阶级的标准是什么hcv8jop3ns5r.cn
色彩斑斓是什么意思hcv8jop5ns0r.cn 梅毒会通过什么传染hcv7jop7ns2r.cn 什么时候不能喷芸苔素hcv8jop8ns8r.cn 什么的眼泪jasonfriends.com bra什么意思hcv8jop4ns5r.cn
百度