首页 > 最新文献

SIGPLAN Conferences and Workshops最新文献

英文 中文
A practical method for syntactic error diagnosis and recovery 一种实用的语法错误诊断和恢复方法
Pub Date : 2015-09-04 DOI: 10.1145/800230.806981
M. Burke, Gerald A. Fisher
Our goal is to develop a practical syntactic error recovery method applicable within the general framework of viable prefix parsing. Our method represents an attempt to accurately diagnose and report all syntax errors without reporting errors that are not actually present. Successful recovery depends upon accurate diagnosis of errors together with sensible “correction” or alteration of the text to put the parse back on track. The issuing of accurate and helpful diagnostics is achieved by indicating the nature of the recovery made for each error encountered. The error recovery is prior to and independent of any semantic analysis of the program. However, the method does not exclude the invocation of semantic actions while parsing or preclude the use of semantic information for error recovery. The method assumes a framework in which an LR or LL parser, driven by the tables produced by a parser generator, maintains an input symbol buffer, state or prediction stack, and parse stack. The input symbol buffer contains part or all of the sequence of remaining input tokens, including the current token. The LR state stack is analogous to the LL prediction stack; except when restricting our attention to the LL case, prediction stack shall serve as a generic term indicating the LR state or LL prediction stack. The parse stack contains the symbols of the right hand sides that have not yet been reduced.
我们的目标是开发一种实用的语法错误恢复方法,适用于可行的前缀解析的一般框架。我们的方法尝试准确地诊断和报告所有语法错误,而不报告实际不存在的错误。成功的恢复取决于对错误的准确诊断,以及合理的“纠正”或修改文本,以使解析回到正轨。通过指出针对遇到的每个错误所进行的恢复的性质,可以发布准确而有用的诊断。错误恢复先于程序的任何语义分析,并且独立于此。但是,该方法不排除在解析时调用语义操作,也不排除使用语义信息进行错误恢复。该方法假设一个框架,在该框架中,由解析器生成器生成的表驱动的LR或LL解析器维护输入符号缓冲区、状态或预测堆栈以及解析堆栈。输入符号缓冲区包含剩余输入符号序列的部分或全部,包括当前符号。LR状态堆栈类似于LL预测堆栈;除了将我们的注意力限制在LL情况外,预测堆栈应作为表示LR状态或LL预测堆栈的通称。解析堆栈包含右手边尚未简化的符号。
{"title":"A practical method for syntactic error diagnosis and recovery","authors":"M. Burke, Gerald A. Fisher","doi":"10.1145/800230.806981","DOIUrl":"https://doi.org/10.1145/800230.806981","url":null,"abstract":"Our goal is to develop a practical syntactic error recovery method applicable within the general framework of viable prefix parsing. Our method represents an attempt to accurately diagnose and report all syntax errors without reporting errors that are not actually present. Successful recovery depends upon accurate diagnosis of errors together with sensible “correction” or alteration of the text to put the parse back on track. The issuing of accurate and helpful diagnostics is achieved by indicating the nature of the recovery made for each error encountered. The error recovery is prior to and independent of any semantic analysis of the program. However, the method does not exclude the invocation of semantic actions while parsing or preclude the use of semantic information for error recovery.\u0000 The method assumes a framework in which an LR or LL parser, driven by the tables produced by a parser generator, maintains an input symbol buffer, state or prediction stack, and parse stack. The input symbol buffer contains part or all of the sequence of remaining input tokens, including the current token. The LR state stack is analogous to the LL prediction stack; except when restricting our attention to the LL case, prediction stack shall serve as a generic term indicating the LR state or LL prediction stack. The parse stack contains the symbols of the right hand sides that have not yet been reduced.","PeriodicalId":414056,"journal":{"name":"SIGPLAN Conferences and Workshops","volume":"39 1","pages":"0"},"PeriodicalIF":0.0,"publicationDate":"2015-09-04","publicationTypes":"Journal Article","fieldsOfStudy":null,"isOpenAccess":false,"openAccessPdf":"","citationCount":null,"resultStr":null,"platform":"Semanticscholar","paperid":"127776928","PeriodicalName":null,"FirstCategoryId":null,"ListUrlMain":null,"RegionNum":0,"RegionCategory":"","ArticlePicture":[],"TitleCN":null,"AbstractTextCN":null,"PMCID":"","EPubDate":null,"PubModel":null,"JCR":null,"JCRName":null,"Score":null,"Total":0}
引用次数: 21
The CIMS PL/I compiler CIMS PL/I编译器
Pub Date : 2015-08-23 DOI: 10.1145/800229.806960
P. Abrahams
CIMS PL/I is an implementation of PL/I on the Control Data 6600 computer. The most challenging aspect of implementing PL/I is dealing with the sheer size and complexity of the language; since a PL/I compiler is an inherently large object, building one is a good way to test the limits of ideas on compiler construction and programming methodology. Version 1 of CIMS PL/I has been in active use since 1973 and includes roughly 70% of the full language, but is limited by some severe design flaws. Version 2 is now under development; the parser and the declaration processor are in excellent working order, but the later passes are still being worked on. In this paper I shall describe Version 2 as though it already existed in full. Version 2 is intended to implement full ANSI Standard PL/I [1], and the passes that have been completed accept the full language. Both versions are themselves written almost entirely in PL/I, and have been developed using boot-strapping methods.
CIMS PL/I是PL/I在Control Data 6600计算机上的实现。实现PL/I最具挑战性的方面是处理语言的大小和复杂性;由于PL/I编译器本质上是一个大型对象,因此构建一个编译器是测试编译器结构和编程方法的局限性的好方法。CIMS PL/I的版本1自1973年以来一直在积极使用,包含了大约70%的完整语言,但由于一些严重的设计缺陷而受到限制。版本2目前正在开发中;解析器和声明处理器处于良好的工作状态,但是后面的传递仍在进行中。在本文中,我将描述版本2,就好像它已经完全存在一样。版本2旨在实现完整的ANSI标准PL/I[1],并且已经完成的通道接受完整的语言。这两个版本本身几乎完全是用PL/I编写的,并且是使用引导方法开发的。
{"title":"The CIMS PL/I compiler","authors":"P. Abrahams","doi":"10.1145/800229.806960","DOIUrl":"https://doi.org/10.1145/800229.806960","url":null,"abstract":"CIMS PL/I is an implementation of PL/I on the Control Data 6600 computer. The most challenging aspect of implementing PL/I is dealing with the sheer size and complexity of the language; since a PL/I compiler is an inherently large object, building one is a good way to test the limits of ideas on compiler construction and programming methodology. Version 1 of CIMS PL/I has been in active use since 1973 and includes roughly 70% of the full language, but is limited by some severe design flaws. Version 2 is now under development; the parser and the declaration processor are in excellent working order, but the later passes are still being worked on. In this paper I shall describe Version 2 as though it already existed in full. Version 2 is intended to implement full ANSI Standard PL/I [1], and the passes that have been completed accept the full language. Both versions are themselves written almost entirely in PL/I, and have been developed using boot-strapping methods.","PeriodicalId":414056,"journal":{"name":"SIGPLAN Conferences and Workshops","volume":"14 1","pages":"0"},"PeriodicalIF":0.0,"publicationDate":"2015-08-23","publicationTypes":"Journal Article","fieldsOfStudy":null,"isOpenAccess":false,"openAccessPdf":"","citationCount":null,"resultStr":null,"platform":"Semanticscholar","paperid":"124449505","PeriodicalName":null,"FirstCategoryId":null,"ListUrlMain":null,"RegionNum":0,"RegionCategory":"","ArticlePicture":[],"TitleCN":null,"AbstractTextCN":null,"PMCID":"","EPubDate":null,"PubModel":null,"JCR":null,"JCRName":null,"Score":null,"Total":0}
引用次数: 4
Design of an interpretive environment for Turing 图灵的解释环境设计
Pub Date : 1987-07-01 DOI: 10.1145/29650.29671
J. Cordy, T. Graham
This paper presents the design of an interpreter structure for modern programming languages such as Turing and Modula II that is modular and highly orthogonal while providing maximal flexibility and efficiency in implementation. At the outermost level, the structure consists of a front end, responsible for interaction with the user, and a back end, responsible for execution. The two are linked by a single database consisting of the tokenized statements of the user program. Interfaces between the major modules of each part are defined in such a way as to maximize reusability, and each interface can service a range of plug-compatible modules implementing radically different semantics. The design accommodates a wide spectrum of interpreter types ranging from batch-oriented compiler-simulators to statement-by-statement interactive execution, and provides for a range of program editing tools from simple line editors through to modern language-directed programming environments. It has served as the basis for several interpretive systems including the production Turing interpreter, the Turing Programming Environment, and the Turing Tool software maintenance tool.
本文提出了一种适用于图灵和Modula II等现代编程语言的解释器结构设计,该结构具有模块化和高度正交性,同时在实现上提供了最大的灵活性和效率。在最外层,该结构由前端(负责与用户交互)和后端(负责执行)组成。这两者通过由用户程序的标记化语句组成的单个数据库连接起来。每个部分的主要模块之间的接口都以最大化可重用性的方式定义,并且每个接口都可以服务于一系列实现完全不同语义的插件兼容模块。该设计适应了广泛的解释器类型,从面向批处理的编译模拟器到逐语句的交互式执行,并提供了一系列程序编辑工具,从简单的行编辑器到现代的面向语言的编程环境。它已经作为几个解释系统的基础,包括生产图灵解释器、图灵编程环境和图灵工具软件维护工具。
{"title":"Design of an interpretive environment for Turing","authors":"J. Cordy, T. Graham","doi":"10.1145/29650.29671","DOIUrl":"https://doi.org/10.1145/29650.29671","url":null,"abstract":"This paper presents the design of an interpreter structure for modern programming languages such as Turing and Modula II that is modular and highly orthogonal while providing maximal flexibility and efficiency in implementation. At the outermost level, the structure consists of a front end, responsible for interaction with the user, and a back end, responsible for execution. The two are linked by a single database consisting of the tokenized statements of the user program. Interfaces between the major modules of each part are defined in such a way as to maximize reusability, and each interface can service a range of plug-compatible modules implementing radically different semantics. The design accommodates a wide spectrum of interpreter types ranging from batch-oriented compiler-simulators to statement-by-statement interactive execution, and provides for a range of program editing tools from simple line editors through to modern language-directed programming environments. It has served as the basis for several interpretive systems including the production Turing interpreter, the Turing Programming Environment, and the Turing Tool software maintenance tool.","PeriodicalId":414056,"journal":{"name":"SIGPLAN Conferences and Workshops","volume":"11 1","pages":"0"},"PeriodicalIF":0.0,"publicationDate":"1987-07-01","publicationTypes":"Journal Article","fieldsOfStudy":null,"isOpenAccess":false,"openAccessPdf":"","citationCount":null,"resultStr":null,"platform":"Semanticscholar","paperid":"126614111","PeriodicalName":null,"FirstCategoryId":null,"ListUrlMain":null,"RegionNum":0,"RegionCategory":"","ArticlePicture":[],"TitleCN":null,"AbstractTextCN":null,"PMCID":"","EPubDate":null,"PubModel":null,"JCR":null,"JCRName":null,"Score":null,"Total":0}
引用次数: 4
The JADE interpreter: a RISC interpreter for syntax directed editing JADE解释器:用于语法定向编辑的RISC解释器
Pub Date : 1987-07-01 DOI: 10.1145/29650.29674
C. F. Clark
This paper describes key features of an interpreter for a language-based editor. The interpreter unites in a RISC framework features which have been used in other domains. The paper examines each feature's integration into the RISC framework.
本文描述了基于语言的编辑器的解释器的主要特性。解释器在RISC框架中统一了在其他领域中使用过的功能。本文研究了每个特性与RISC框架的集成。
{"title":"The JADE interpreter: a RISC interpreter for syntax directed editing","authors":"C. F. Clark","doi":"10.1145/29650.29674","DOIUrl":"https://doi.org/10.1145/29650.29674","url":null,"abstract":"This paper describes key features of an interpreter for a language-based editor. The interpreter unites in a RISC framework features which have been used in other domains. The paper examines each feature's integration into the RISC framework.","PeriodicalId":414056,"journal":{"name":"SIGPLAN Conferences and Workshops","volume":"247 1","pages":"0"},"PeriodicalIF":0.0,"publicationDate":"1987-07-01","publicationTypes":"Journal Article","fieldsOfStudy":null,"isOpenAccess":false,"openAccessPdf":"","citationCount":null,"resultStr":null,"platform":"Semanticscholar","paperid":"123259912","PeriodicalName":null,"FirstCategoryId":null,"ListUrlMain":null,"RegionNum":0,"RegionCategory":"","ArticlePicture":[],"TitleCN":null,"AbstractTextCN":null,"PMCID":"","EPubDate":null,"PubModel":null,"JCR":null,"JCRName":null,"Score":null,"Total":0}
引用次数: 0
Incremental re-execution of programs 程序的增量重执行
Pub Date : 1987-07-01 DOI: 10.1145/29650.29654
R. Karinthi, M. Weiser
Interpreters replace the edit/compile/run cyle with edit/run. Dynamic computing environments, like spreadsheets, shorten this still more to just edit. So-called "Visiprog" environments, such as Maryland's XED, permit developing normal imperative programs in a dynamic computing environment, XED and similar environments, because they show the results of executing a program after every (reasonable) editing step, raise the issue of efficient incremental execution. Incremental execution optimizations are also applicable to any programming situation, including batch/cards, in which nearly the same program is run many times on nearly the same data. However, the requirement of remembering large amounts of internal state between runs make incremental exectution most natural for interpreted languages. This paper examines some algorithms for incremental execution. Based on the frequency of typical program editing changes, we predict the importance of optimizing certain kinds of incremental execution. We also examine actual speedups obtained in executing programs after subjecting them to these simulated incremental edits under these optimizations. The speedups range from factors of 1.1 to near 10. Finally, we discuss the feasibility of including these optimizations in an actual dynamic computing environment like XED, and in more traditional programming environments.
解释器将编辑/编译/运行周期替换为编辑/运行。动态计算环境,如电子表格,将这一过程进一步缩短为编辑。所谓的“Visiprog”环境,如马里兰的XED,允许在动态计算环境、XED和类似的环境中开发正常的命令式程序,因为它们显示了在每一个(合理的)编辑步骤之后执行程序的结果,提出了有效增量执行的问题。增量执行优化也适用于任何编程情况,包括批处理/卡,在这种情况下,几乎相同的程序在几乎相同的数据上运行多次。然而,在运行之间记住大量内部状态的需求使得增量执行对于解释型语言来说是最自然的。本文研究了一些增量执行算法。基于典型程序编辑更改的频率,我们预测了优化某些类型的增量执行的重要性。我们还研究了在这些优化下对程序进行模拟增量编辑后执行程序所获得的实际加速。加速范围从1.1倍到接近10倍。最后,我们讨论了在实际的动态计算环境(如XED)和更传统的编程环境中包含这些优化的可行性。
{"title":"Incremental re-execution of programs","authors":"R. Karinthi, M. Weiser","doi":"10.1145/29650.29654","DOIUrl":"https://doi.org/10.1145/29650.29654","url":null,"abstract":"Interpreters replace the edit/compile/run cyle with edit/run. Dynamic computing environments, like spreadsheets, shorten this still more to just edit. So-called \"Visiprog\" environments, such as Maryland's XED, permit developing normal imperative programs in a dynamic computing environment, XED and similar environments, because they show the results of executing a program after every (reasonable) editing step, raise the issue of efficient incremental execution. Incremental execution optimizations are also applicable to any programming situation, including batch/cards, in which nearly the same program is run many times on nearly the same data. However, the requirement of remembering large amounts of internal state between runs make incremental exectution most natural for interpreted languages. This paper examines some algorithms for incremental execution. Based on the frequency of typical program editing changes, we predict the importance of optimizing certain kinds of incremental execution. We also examine actual speedups obtained in executing programs after subjecting them to these simulated incremental edits under these optimizations. The speedups range from factors of 1.1 to near 10. Finally, we discuss the feasibility of including these optimizations in an actual dynamic computing environment like XED, and in more traditional programming environments.","PeriodicalId":414056,"journal":{"name":"SIGPLAN Conferences and Workshops","volume":"81 1","pages":"0"},"PeriodicalIF":0.0,"publicationDate":"1987-07-01","publicationTypes":"Journal Article","fieldsOfStudy":null,"isOpenAccess":false,"openAccessPdf":"","citationCount":null,"resultStr":null,"platform":"Semanticscholar","paperid":"126229266","PeriodicalName":null,"FirstCategoryId":null,"ListUrlMain":null,"RegionNum":0,"RegionCategory":"","ArticlePicture":[],"TitleCN":null,"AbstractTextCN":null,"PMCID":"","EPubDate":null,"PubModel":null,"JCR":null,"JCRName":null,"Score":null,"Total":0}
引用次数: 15
Automatic design and implementation of language data types 自动设计和实现语言数据类型
Pub Date : 1987-07-01 DOI: 10.1145/29650.29653
S. Shebs, R. Kessler
Language implementation is in need of automation. Although compiler construction has long been aided by parser generators and other tools, interpreters and runtime systems have been neglected, even though they constitute a large component of languages like Lisp, Prolog, and Smalltalk. Of the several parts of a runtime system, the primitive datatype definitions present some of the most difficult decisions for the implementor. The effectiveness of type discrimination schemes, interactions between storage allocation and virtual memory, and general time/space tradeoffs are issues that have no simple resolution-they must be evaluated for each implementation. A formalism for describing implementations has been developed and used in a prototype designer of primitive data structures. The designer is a collection of heuristic rules that produce multiple designs of differing characteristics. Cost evaluation on machine code derived from those designs yields performance formulas, which are then used to estimate the designs' effect on benchmark programs.
语言实现需要自动化。尽管编译器的构造长期以来一直由解析器生成器和其他工具辅助,但解释器和运行时系统一直被忽视,尽管它们构成了Lisp、Prolog和Smalltalk等语言的重要组成部分。在运行时系统的几个部分中,基本数据类型定义为实现者提供了一些最困难的决策。类型识别方案的有效性、存储分配和虚拟内存之间的交互以及一般的时间/空间权衡都是没有简单解决方案的问题——必须针对每个实现对它们进行评估。一种描述实现的形式化方法已经被开发出来,并在原始数据结构的原型设计器中使用。设计师是启发式规则的集合,这些规则产生了具有不同特征的多种设计。从这些设计中得到的机器代码的成本评估产生性能公式,然后用于估计设计对基准程序的影响。
{"title":"Automatic design and implementation of language data types","authors":"S. Shebs, R. Kessler","doi":"10.1145/29650.29653","DOIUrl":"https://doi.org/10.1145/29650.29653","url":null,"abstract":"Language implementation is in need of automation. Although compiler construction has long been aided by parser generators and other tools, interpreters and runtime systems have been neglected, even though they constitute a large component of languages like Lisp, Prolog, and Smalltalk. Of the several parts of a runtime system, the primitive datatype definitions present some of the most difficult decisions for the implementor. The effectiveness of type discrimination schemes, interactions between storage allocation and virtual memory, and general time/space tradeoffs are issues that have no simple resolution-they must be evaluated for each implementation. A formalism for describing implementations has been developed and used in a prototype designer of primitive data structures. The designer is a collection of heuristic rules that produce multiple designs of differing characteristics. Cost evaluation on machine code derived from those designs yields performance formulas, which are then used to estimate the designs' effect on benchmark programs.","PeriodicalId":414056,"journal":{"name":"SIGPLAN Conferences and Workshops","volume":"25 1","pages":"0"},"PeriodicalIF":0.0,"publicationDate":"1987-07-01","publicationTypes":"Journal Article","fieldsOfStudy":null,"isOpenAccess":false,"openAccessPdf":"","citationCount":null,"resultStr":null,"platform":"Semanticscholar","paperid":"127812346","PeriodicalName":null,"FirstCategoryId":null,"ListUrlMain":null,"RegionNum":0,"RegionCategory":"","ArticlePicture":[],"TitleCN":null,"AbstractTextCN":null,"PMCID":"","EPubDate":null,"PubModel":null,"JCR":null,"JCRName":null,"Score":null,"Total":0}
引用次数: 10
A block-and-actions generator as an alternative to a simulator for collecting architecture measurements 块和动作生成器,作为收集体系结构度量的模拟器的替代方案
Pub Date : 1987-07-01 DOI: 10.1145/29650.29652
M. Huguet, T. Lang, Y. Tamir
To design a new processor or to modify an existing one, designers need to gather data to estimate the influence of specific architecture features on the performance of the proposed machine (PM). To obtain this data, it is necessary to measure on an existing machine (EM) the dynamic behavior of typical programs. Traditionally, simulators have been used to obtain measurements for PMs. Since several hundred EM instructions are required to decode, interpret, and measure each simulated (PM) instruction, the simulation time of typical programs is prohibitively large. Thus, designers tend to simulate only small programs and the results obtained might not be representative of a real system behavior. In this paper we present an alternative tool for collecting architecture measurements: the Block-and-Actions Generator (BKGEN). BKGEN produces a version of the program being measured which is directly executable by the EM. This executable version is obtained directly with the EM compiler or with the PM compiler and a assembly-to-assembly translator. The choice between these alternatives depends on the EM and PM compiler technology and the type of measurements to be obtained. BKGEN also collects the PM events to be measured (called actions). Each EM block of instructions is associated with a PM block of actions so that when the program is executed, it collects the measurements associated with the PM. The main advantage of BKGEN is that the execution time is substantially reduced compared to the execution time of a simulator while collecting similar data. Thus, large typical programs (compilers, assemblers, word processors, ...) can be used by the designer to obtain meaningful measurements.
为了设计一个新的处理器或修改现有的处理器,设计人员需要收集数据来估计特定架构特征对所提议机器(PM)性能的影响。为了获得这些数据,有必要在现有机器(EM)上测量典型程序的动态行为。传统上,模拟器已被用于获得pm的测量。由于需要数百个EM指令来解码、解释和测量每个模拟(PM)指令,因此典型程序的模拟时间非常长。因此,设计人员倾向于只模拟小程序,得到的结果可能不能代表真实的系统行为。在本文中,我们提出了一种用于收集架构度量的替代工具:块与动作生成器(BKGEN)。BKGEN生成一个被测量程序的版本,该版本可由EM直接执行。该可执行版本可通过EM编译器或PM编译器和汇编到汇编转换器直接获得。这些替代方案之间的选择取决于EM和PM编译器技术以及要获得的测量类型。BKGEN还收集要测量的PM事件(称为动作)。每个EM指令块都与一个PM操作块相关联,以便在执行程序时,它收集与PM相关联的度量。BKGEN的主要优点是,在收集类似数据时,与模拟器的执行时间相比,执行时间大大减少。因此,设计人员可以使用大型典型程序(编译器、汇编器、文字处理器等)来获得有意义的度量。
{"title":"A block-and-actions generator as an alternative to a simulator for collecting architecture measurements","authors":"M. Huguet, T. Lang, Y. Tamir","doi":"10.1145/29650.29652","DOIUrl":"https://doi.org/10.1145/29650.29652","url":null,"abstract":"To design a new processor or to modify an existing one, designers need to gather data to estimate the influence of specific architecture features on the performance of the proposed machine (PM). To obtain this data, it is necessary to measure on an existing machine (EM) the dynamic behavior of typical programs. Traditionally, simulators have been used to obtain measurements for PMs. Since several hundred EM instructions are required to decode, interpret, and measure each simulated (PM) instruction, the simulation time of typical programs is prohibitively large. Thus, designers tend to simulate only small programs and the results obtained might not be representative of a real system behavior. In this paper we present an alternative tool for collecting architecture measurements: the Block-and-Actions Generator (BKGEN). BKGEN produces a version of the program being measured which is directly executable by the EM. This executable version is obtained directly with the EM compiler or with the PM compiler and a assembly-to-assembly translator. The choice between these alternatives depends on the EM and PM compiler technology and the type of measurements to be obtained. BKGEN also collects the PM events to be measured (called actions). Each EM block of instructions is associated with a PM block of actions so that when the program is executed, it collects the measurements associated with the PM. The main advantage of BKGEN is that the execution time is substantially reduced compared to the execution time of a simulator while collecting similar data. Thus, large typical programs (compilers, assemblers, word processors, ...) can be used by the designer to obtain meaningful measurements.","PeriodicalId":414056,"journal":{"name":"SIGPLAN Conferences and Workshops","volume":"137 1","pages":"0"},"PeriodicalIF":0.0,"publicationDate":"1987-07-01","publicationTypes":"Journal Article","fieldsOfStudy":null,"isOpenAccess":false,"openAccessPdf":"","citationCount":null,"resultStr":null,"platform":"Semanticscholar","paperid":"129390562","PeriodicalName":null,"FirstCategoryId":null,"ListUrlMain":null,"RegionNum":0,"RegionCategory":"","ArticlePicture":[],"TitleCN":null,"AbstractTextCN":null,"PMCID":"","EPubDate":null,"PubModel":null,"JCR":null,"JCRName":null,"Score":null,"Total":0}
引用次数: 17
DI: an interactive debugging interpreter for applicative languages 用于应用语言的交互式调试解释器
Pub Date : 1987-07-01 DOI: 10.1145/29650.29661
S. Skedzielewski, R. K. Yates, R. Oldehoeft
The DI interpreter is both a debugger and interpreter of SISAL programs. Its use as a program interpreter is only a small part of its role; it is designed to be a tool for studying compilation techniques for applicative languages. DI interprets dataflow graphs expressed in the IF1 and IF2 languages, and is heavily instrumented to report the activity of dynamic storage activity, reference counting, copying and updating of structured data values. It also aids the SISAL language evaluation by providing an interim execution vehicle for SISAL programs. DI provides determinate, sequential interpretation of graph nodes for sequential and parallel operations in a canonical order. As a debugging aid, DI allows tracing, breakpointing, and interactive display of program data values. DI handles creation of SISAL and IF1 error values for each data type and propagates them according to a well-defined algebra. We have begun to implement IF1 optimizers and have measured the improvements with DI.
DI解释器既是SISAL程序的调试器又是解释器。它作为程序解释器的用途只是其作用的一小部分;它被设计成一个研究应用语言编译技术的工具。DI解释用IF1和IF2语言表达的数据流图,并被大量用于报告动态存储活动、引用计数、复制和更新结构化数据值的活动。它还通过为SISAL程序提供临时执行工具来帮助SISAL语言评估。DI以规范顺序为顺序和并行操作提供确定的、顺序的图节点解释。作为调试辅助工具,DI允许跟踪、断点和程序数据值的交互式显示。DI处理每种数据类型的SISAL和IF1错误值的创建,并根据定义良好的代数传播它们。我们已经开始实现IF1优化器,并测量了使用DI的改进。
{"title":"DI: an interactive debugging interpreter for applicative languages","authors":"S. Skedzielewski, R. K. Yates, R. Oldehoeft","doi":"10.1145/29650.29661","DOIUrl":"https://doi.org/10.1145/29650.29661","url":null,"abstract":"The DI interpreter is both a debugger and interpreter of SISAL programs. Its use as a program interpreter is only a small part of its role; it is designed to be a tool for studying compilation techniques for applicative languages. DI interprets dataflow graphs expressed in the IF1 and IF2 languages, and is heavily instrumented to report the activity of dynamic storage activity, reference counting, copying and updating of structured data values. It also aids the SISAL language evaluation by providing an interim execution vehicle for SISAL programs. DI provides determinate, sequential interpretation of graph nodes for sequential and parallel operations in a canonical order. As a debugging aid, DI allows tracing, breakpointing, and interactive display of program data values. DI handles creation of SISAL and IF1 error values for each data type and propagates them according to a well-defined algebra. We have begun to implement IF1 optimizers and have measured the improvements with DI.","PeriodicalId":414056,"journal":{"name":"SIGPLAN Conferences and Workshops","volume":"47 1","pages":"0"},"PeriodicalIF":0.0,"publicationDate":"1987-07-01","publicationTypes":"Journal Article","fieldsOfStudy":null,"isOpenAccess":false,"openAccessPdf":"","citationCount":null,"resultStr":null,"platform":"Semanticscholar","paperid":"122829001","PeriodicalName":null,"FirstCategoryId":null,"ListUrlMain":null,"RegionNum":0,"RegionCategory":"","ArticlePicture":[],"TitleCN":null,"AbstractTextCN":null,"PMCID":"","EPubDate":null,"PubModel":null,"JCR":null,"JCRName":null,"Score":null,"Total":0}
引用次数: 11
TOOLS: a unifying approach to object-oriented language interpretation 工具:面向对象语言解释的统一方法
Pub Date : 1987-07-01 DOI: 10.1145/29650.29667
K. Koskimies, J. Paakki
The object-oriented paradigm is applied to the interpreting of programming languages. An intermediate representation of a program is created as a collection of objects representing various entities in the conceptual world of the source language. These objects cover both the static and the dynamic aspects of a program. As a major advantage of this approach, issues that are traditionally handled by very different techniques (like symbol table management and the generation and execution of intermediate code) can be treated in a unified manner. The specification language of an interpreter generator based on these principles is described.
面向对象范式应用于程序设计语言的解释。程序的中间表示被创建为表示源语言概念世界中各种实体的对象集合。这些对象涵盖了程序的静态和动态方面。这种方法的一个主要优点是,传统上由非常不同的技术处理的问题(如符号表管理和中间代码的生成和执行)可以以统一的方式处理。描述了基于这些原理的解释器生成器的说明语言。
{"title":"TOOLS: a unifying approach to object-oriented language interpretation","authors":"K. Koskimies, J. Paakki","doi":"10.1145/29650.29667","DOIUrl":"https://doi.org/10.1145/29650.29667","url":null,"abstract":"The object-oriented paradigm is applied to the interpreting of programming languages. An intermediate representation of a program is created as a collection of objects representing various entities in the conceptual world of the source language. These objects cover both the static and the dynamic aspects of a program. As a major advantage of this approach, issues that are traditionally handled by very different techniques (like symbol table management and the generation and execution of intermediate code) can be treated in a unified manner. The specification language of an interpreter generator based on these principles is described.","PeriodicalId":414056,"journal":{"name":"SIGPLAN Conferences and Workshops","volume":"28 1","pages":"0"},"PeriodicalIF":0.0,"publicationDate":"1987-07-01","publicationTypes":"Journal Article","fieldsOfStudy":null,"isOpenAccess":false,"openAccessPdf":"","citationCount":null,"resultStr":null,"platform":"Semanticscholar","paperid":"116705321","PeriodicalName":null,"FirstCategoryId":null,"ListUrlMain":null,"RegionNum":0,"RegionCategory":"","ArticlePicture":[],"TitleCN":null,"AbstractTextCN":null,"PMCID":"","EPubDate":null,"PubModel":null,"JCR":null,"JCRName":null,"Score":null,"Total":0}
引用次数: 6
Managing stack frames in Smalltalk 管理Smalltalk中的堆栈帧
Pub Date : 1987-07-01 DOI: 10.1145/29650.29675
J. Moss
The Smalltalk programming language allows contexts (stack frames) to be accessed and manipulated in very general ways. This sometimes requires that contexts be retained even after they have terminated executing, and that they be reclaimed other than by LIFO stack discipline. The authoritative definition of Smalltalk [Goldberg and Robson 83] uses reference counting garbage collection to manage contexts, an approach found to be inadequate in practice [Krasner, et al. 83]. Deutsch and Schiffman have described a technique that uses an actual stack as much as possible [Deutsch and Schiffman 84]. Here we offer a less complex technique that we expect will have lower total overhead and reclaim many frames sooner and more easily. We are implementing our technique as part of a state of the art Smalltalk interpreter. The approach may apply to other languages that allow indefinite lifetimes for execution contexts, be they interpreted or compiled.
Smalltalk编程语言允许以非常通用的方式访问和操作上下文(堆栈帧)。这有时要求上下文即使在终止执行后也要保留,并且需要通过后进先出堆栈规则以外的方式回收它们。Smalltalk的权威定义[Goldberg and Robson 83]使用引用计数垃圾收集来管理上下文,这种方法在实践中被发现是不充分的[Krasner等人83]。Deutsch和Schiffman描述了一种尽可能使用实际堆栈的技术[Deutsch和Schiffman 84]。在这里,我们提供了一种不太复杂的技术,我们希望它能降低总开销,并更快更容易地回收许多帧。我们将我们的技术作为最先进的Smalltalk解释器的一部分来实现。这种方法也适用于其他允许执行上下文无限期生存期的语言,无论是解释的还是编译的。
{"title":"Managing stack frames in Smalltalk","authors":"J. Moss","doi":"10.1145/29650.29675","DOIUrl":"https://doi.org/10.1145/29650.29675","url":null,"abstract":"The Smalltalk programming language allows contexts (stack frames) to be accessed and manipulated in very general ways. This sometimes requires that contexts be retained even after they have terminated executing, and that they be reclaimed other than by LIFO stack discipline. The authoritative definition of Smalltalk [Goldberg and Robson 83] uses reference counting garbage collection to manage contexts, an approach found to be inadequate in practice [Krasner, et al. 83]. Deutsch and Schiffman have described a technique that uses an actual stack as much as possible [Deutsch and Schiffman 84]. Here we offer a less complex technique that we expect will have lower total overhead and reclaim many frames sooner and more easily. We are implementing our technique as part of a state of the art Smalltalk interpreter. The approach may apply to other languages that allow indefinite lifetimes for execution contexts, be they interpreted or compiled.","PeriodicalId":414056,"journal":{"name":"SIGPLAN Conferences and Workshops","volume":"51 1","pages":"0"},"PeriodicalIF":0.0,"publicationDate":"1987-07-01","publicationTypes":"Journal Article","fieldsOfStudy":null,"isOpenAccess":false,"openAccessPdf":"","citationCount":null,"resultStr":null,"platform":"Semanticscholar","paperid":"122473160","PeriodicalName":null,"FirstCategoryId":null,"ListUrlMain":null,"RegionNum":0,"RegionCategory":"","ArticlePicture":[],"TitleCN":null,"AbstractTextCN":null,"PMCID":"","EPubDate":null,"PubModel":null,"JCR":null,"JCRName":null,"Score":null,"Total":0}
引用次数: 18
期刊
SIGPLAN Conferences and Workshops
全部 Acc. Chem. Res. ACS Applied Bio Materials ACS Appl. Electron. Mater. ACS Appl. Energy Mater. ACS Appl. Mater. Interfaces ACS Appl. Nano Mater. ACS Appl. Polym. Mater. ACS BIOMATER-SCI ENG ACS Catal. ACS Cent. Sci. ACS Chem. Biol. ACS Chemical Health & Safety ACS Chem. Neurosci. ACS Comb. Sci. ACS Earth Space Chem. ACS Energy Lett. ACS Infect. Dis. ACS Macro Lett. ACS Mater. Lett. ACS Med. Chem. Lett. ACS Nano ACS Omega ACS Photonics ACS Sens. ACS Sustainable Chem. Eng. ACS Synth. Biol. Anal. Chem. BIOCHEMISTRY-US Bioconjugate Chem. BIOMACROMOLECULES Chem. Res. Toxicol. Chem. Rev. Chem. Mater. CRYST GROWTH DES ENERG FUEL Environ. Sci. Technol. Environ. Sci. Technol. Lett. Eur. J. Inorg. Chem. IND ENG CHEM RES Inorg. Chem. J. Agric. Food. Chem. J. Chem. Eng. Data J. Chem. Educ. J. Chem. Inf. Model. J. Chem. Theory Comput. J. Med. Chem. J. Nat. Prod. J PROTEOME RES J. Am. Chem. Soc. LANGMUIR MACROMOLECULES Mol. Pharmaceutics Nano Lett. Org. Lett. ORG PROCESS RES DEV ORGANOMETALLICS J. Org. Chem. J. Phys. Chem. J. Phys. Chem. A J. Phys. Chem. B J. Phys. Chem. C J. Phys. Chem. Lett. Analyst Anal. Methods Biomater. Sci. Catal. Sci. Technol. Chem. Commun. Chem. Soc. Rev. CHEM EDUC RES PRACT CRYSTENGCOMM Dalton Trans. Energy Environ. Sci. ENVIRON SCI-NANO ENVIRON SCI-PROC IMP ENVIRON SCI-WAT RES Faraday Discuss. Food Funct. Green Chem. Inorg. Chem. Front. Integr. Biol. J. Anal. At. Spectrom. J. Mater. Chem. A J. Mater. Chem. B J. Mater. Chem. C Lab Chip Mater. Chem. Front. Mater. Horiz. MEDCHEMCOMM Metallomics Mol. Biosyst. Mol. Syst. Des. Eng. Nanoscale Nanoscale Horiz. Nat. Prod. Rep. New J. Chem. Org. Biomol. Chem. Org. Chem. Front. PHOTOCH PHOTOBIO SCI PCCP Polym. Chem.
×
引用
GB/T 7714-2015
复制
MLA
复制
APA
复制
导出至
BibTeX EndNote RefMan NoteFirst NoteExpress
×
0
微信
客服QQ
Book学术公众号 扫码关注我们
反馈
×
意见反馈
请填写您的意见或建议
请填写您的手机或邮箱
×
提示
您的信息不完整,为了账户安全,请先补充。
现在去补充
×
提示
您因"违规操作"
具体请查看互助需知
我知道了
×
提示
现在去查看 取消
×
提示
确定
Book学术官方微信
Book学术文献互助
Book学术文献互助群
群 号:481959085
Book学术
文献互助 智能选刊 最新文献 互助须知 联系我们:info@booksci.cn
Book学术提供免费学术资源搜索服务,方便国内外学者检索中英文文献。致力于提供最便捷和优质的服务体验。
Copyright © 2023 Book学术 All rights reserved.
ghs 京公网安备 11010802042870号 京ICP备2023020795号-1