VLDB 2026 Research / reviewers in the wild / expert
Charles N. Fischer
dblp:f/CNFischer
· DBLP profile ↗
32ranked-venue papers
7as first author
0since 2021 · last 2009
—ORCID · none
Domains — the database's venue-derived domains; a paper can count in several
Software engineering, systems software and programming languages · 24 · 4 first-authorTheory of computation · 7 · 3 first-authorSystems, architecture and hardware · 2Databases, data management, data science and information retrieval · 2 · 1 first-author
Expertise — from the expertise taxonomy: the topics of the expert's papers under the CCF categories. A weight counts papers with recency: 1 for a paper about the topic, 0.3 when the topic is its context, halved every five years.
| Software engineering, system software, and programming languages
17 papers |
Compilers and program optimization · 89% Program analysis · 4% Programming languages and type systems · 4% | |
| Computer architecture, parallel and distributed computing, and storage systems
6 papers |
Processor architecture and microarchitecture · 48% Memory systems · 26% Parallel and multicore computing · 26% |
Topics — the 30 heaviest of 40, each with the papers that count most for it
| Topic | Weight | Papers | Last | Evidence papers |
|---|---|---|---|---|
Compilers and program optimization
register allocation |
0.1 | 6 | 1996 | Demand-Driven Register Allocation · ACM Trans. Program. Lang. Syst. 1996 Minimum Cost Interprocedural Register Allocation · POPL 1996 Zero-cost Range Splitting · PLDI 1994 |
Memory systems
cache coherence |
0.0 | 1 | 2003 | User-controllable coherence for high performance shared memory multiprocessors · PPoPP 2003 |
Parallel and multicore computing › multiprocessor system
shared-memory multiprocessor |
0.0 | 1 | 2003 | User-controllable coherence for high performance shared memory multiprocessors · PPoPP 2003 |
Processor architecture and microarchitecture
instruction-level parallelism |
0.0 | 2 | 1995 | Efficient Instruction Scheduling for Delayed-Load Architectures · ACM Trans. Program. Lang. Syst. 1995 Zero-cost Range Splitting · PLDI 1994 |
Compilers and program optimization
instruction scheduling |
0.0 | 2 | 1995 | Efficient Instruction Scheduling for Delayed-Load Architectures · ACM Trans. Program. Lang. Syst. 1995 Linear-Time, Optimal Code Scheduling for Delayed-Load Architectures · PLDI 1991 |
Processor architecture and microarchitecture
register file |
0.0 | 1 | 1997 | Exploiting Dead Value Information · MICRO 1997 |
Compilers and program optimization
compiler optimization |
0.0 | 1 | 1996 | Minimum Cost Interprocedural Register Allocation · POPL 1996 |
Compilers and program optimization › register allocation
interprocedural register allocation |
0.0 | 1 | 1996 | Minimum Cost Interprocedural Register Allocation · POPL 1996 |
Compilers and program optimization › register allocation
live-range splitting |
0.0 | 1 | 1994 | Zero-cost Range Splitting · PLDI 1994 |
Processor architecture and microarchitecture
instruction scheduling |
0.0 | 1 | 1994 | Zero-cost Range Splitting · PLDI 1994 |
Processor architecture and microarchitecture › instruction scheduling
software pipelining |
0.0 | 1 | 1994 | Zero-cost Range Splitting · PLDI 1994 |
Compilers and program optimization › register allocation
global register allocation |
0.0 | 1 | 1992 | Probalistic Register Allocation · PLDI 1992 |
Compilers and program optimization
parsing |
0.0 | 3 | 1988 | Determining the Extent of Lookahead in Syntactic Error Repair · ACM Trans. Program. Lang. Syst. 1988 On Parsing and Compiling Arithmetic Expressions on Vector Computers · ACM Trans. Program. Lang. Syst. 1980 An Efficient Insertion-Only Error-Corrector for LL(1) Parsers · POPL 1977 |
Compilers and program optimization › parsing
syntax error recovery |
0.0 | 2 | 1988 | Determining the Extent of Lookahead in Syntactic Error Repair · ACM Trans. Program. Lang. Syst. 1988 An Efficient Insertion-Only Error-Corrector for LL(1) Parsers · POPL 1977 |
Compilers and program optimization
code generation |
0.0 | 2 | 1985 | Affix Grammar Driven Code Generation · ACM Trans. Program. Lang. Syst. 1985 Description-Driven Code Generation using Attribute Grammars · POPL 1982 |
Compilers and program optimization › compiler optimization › local optimization
peephole optimization |
0.0 | 2 | 1985 | Affix Grammar Driven Code Generation · ACM Trans. Program. Lang. Syst. 1985 Description-Driven Code Generation using Attribute Grammars · POPL 1982 |
Processor architecture and microarchitecture › register file
physical register management |
0.0 | 1 | 1997 | Exploiting Dead Value Information · MICRO 1997 |
Compilers and program optimization › register allocation
register spilling |
0.0 | 1 | 1995 | Efficient Instruction Scheduling for Delayed-Load Architectures · ACM Trans. Program. Lang. Syst. 1995 |
Compilers and program optimization › code generation
retargetable code generation |
0.0 | 1 | 1985 | Affix Grammar Driven Code Generation · ACM Trans. Program. Lang. Syst. 1985 |
Programming languages and type systems
block-structured languages |
0.0 | 1 | 1984 | A Simple Separate Compilation Mechanism for Block-Structured Languages · IEEE Trans. Software Eng. 1984 |
Compilers and program optimization › compiler toolchain
separate compilation |
0.0 | 1 | 1984 | A Simple Separate Compilation Mechanism for Block-Structured Languages · IEEE Trans. Software Eng. 1984 |
Program verification
correctness proof |
0.0 | 1 | 1992 | SPARE: A Development Environment For Program Analysis Algorithms · IEEE Trans. Software Eng. 1992 |
Compilers and program optimization › compiler optimization
machine-specific optimization |
0.0 | 1 | 1982 | Description-Driven Code Generation using Attribute Grammars · POPL 1982 |
Compilers and program optimization › compiler construction
retargetable compilation |
0.0 | 1 | 1982 | Description-Driven Code Generation using Attribute Grammars · POPL 1982 |
Processor architecture and microarchitecture
instruction set architecture |
0.0 | 1 | 1989 | On the Minimization of Loads/Stores in Local Register Allocation · IEEE Trans. Software Eng. 1989 |
Programming languages and type systems › grammar formalisms
attribute grammars |
0.0 | 2 | 1985 | A Meta-Language and System for Nonlocal Incremental Attribute Evaluation in Language-Based Editors · POPL 1985 Non-Syntactic Attribute Flow in Language Based Editors · POPL 1982 |
Program verification › dynamic verification
runtime verification |
0.0 | 1 | 1980 | The Implementation of Run-Time Diagnostics in Pascal · IEEE Trans. Software Eng. 1980 |
Processor architecture and microarchitecture
vector processing |
0.0 | 1 | 1980 | On Parsing and Compiling Arithmetic Expressions on Vector Computers · ACM Trans. Program. Lang. Syst. 1980 |
Automata and formal languages › formal grammars
attribute grammars |
0.0 | 1 | 1979 | LL(k) Parsing for Attributed Grammars · ICALP 1979 |
Automata and formal languages
grammar formalisms |
0.0 | 1 | 1979 | LL(k) Parsing for Attributed Grammars · ICALP 1979 |
Methods — techniques the papers use, named apart from their topics
simulation · 0.0optimal tree scheduling · 0.0heuristic DAG scheduling · 0.0spill code insertion · 0.0delay slot filling · 0.0polynomial-time algorithm · 0.0network flow · 0.0dual problem · 0.0probabilistic analysis · 0.0operational semantics · 0.0denotational semantics · 0.0vector operations · 0.0concurrent algorithms · 0.0
| Year | Publication | Venue | Position |
|---|---|---|---|
| 2009 | Mostly-Functional Behavior in Java Programs
William C. Benton, Charles N. Fischer |
VMCAI | 2 |
| 2007 | Interactive, scalable, declarative program analysis: from prototype to implementationabstractStatic analyses provide the semantic foundation for tools ranging from optimizing compilers to refactoring browsers and advanced debuggers. Unfortunately, developing new analysis specifications and implementations is often difficult and error prone. Since analysis specifications are generally written in a declarative style, logic programming presents an attractive model for producing executable specifications of analyses. However, prior work on using logic programming for program analysis has focused exclusively on solving constraints derived from program texts by an external preprocessor. In this paper, we present DIMPLE, an analysis framework for Java bytecodes implemented in the Yap Prolog system [8]. DIMPLE provides both a representation of Java bytecodes in a database of relations and a declarative domain-specific language for specifying new analyses as queries over this database. DIMPLE thus enables researchers to use logic programming for every step of the analysis development process, from specification to prototype to implementation. We demonstrate that our approach facilitates rapid prototyping of new program analyses and produces executable analysis implementations that are speed-competitive with specialized analysis toolkits. William C. Benton, Charles N. Fischer |
PPDP | 2 |
| 2003 | User-controllable coherence for high performance shared memory multiprocessorsabstractIn programming high performance applications, shared address-space platforms are preferable for fine-grained computation, while distributed address-space platforms are more suitable for coarse-grained computation. However, currently only distributed address-space systems scale beyond the low hundreds of processors. In this paper we introduce a hybrid architecture that allows users to trade off local memory usage for coherence communication, making possible larger-scale shared memory architectures. We introduce a programming model and examine possible implementations of hardware mechanisms, evaluating some of the trade-offs inherent in each. Preliminary experiments on an application with particularly fine-grained communication requirements indicate that effective placement of directives can reduce coherence communication by more than a factor of 10 for 64 processors. Collin McCurdy, Charles N. Fischer |
PPoPP | 2 |
| 2000 | Concurrent Garbage Collection Using Program Slices on Multithreaded ProcessorsabstractWe investigate reference counting in the context of a multithreaded architecture by exploiting two observations: (1) reference-counting can be performed by a transformed program slice of the mutator that isolates heap references, and (2) hardware trends indicate that microprocessors in the near future will be able to execute multiple concurrent threads on a single chip. We generate a reference-counting collector as a transformed program slice of an application and then execute this slice in parallel with the application as a "run-behind" thread. Preliminary measurements of collector overheads are quite encouraging, showing a 25% to 53% space overhead to transfer garbage collection to a separate thread. Manoj Plakal, Charles N. Fischer |
ISMM | 2 |
| 1997 | Exploiting Dead Value InformationabstractWe describe dead value information (DVI) and introduce three new optimizations which exploit it. DVI provides assertions that certain register values are dead, meaning they will not be read before being overwritten. The processor can use DVI to track dead registers and dynamically eliminate unnecessary save and restore instructions from the execution stream at procedure calls and context switches. Our results indicate that dynamic saves and restore instances can be reduced by 46% for procedure calls and by 51% for context switches. In addition, save/restore elimination for procedure calls can improve overall performance by up to 5%. DVI also allows the processor to manage physical registers efficiently, reducing the size requirements of the physical register file. When the system clock rate as proportional to the register file cycle time, this optimization can improve performance. All of these optimizations can be supported with only a few new instructions and minimal additional hardware structures. Milo M. K. Martin, Amir Roth, Charles N. Fischer |
MICRO | 3 |
| 1997 | Low-Cost, Concurrent Checking of Pointer and Array Accesses in C ProgramsabstractIllegal pointer and array accesses are a major cause of failure for C programs. We present a technique called ‘guarding’ to catch illegal array and pointer accesses. Our implementation of guarding for C programs works as a source-to-source translator. Auxiliary objects called guards are added to a user program to monitor pointer and array accesses at run time. Guards maintain attributes to catch out of bounds array accesses and accesses to deallocated memory. Our system has found a number of previously unreported errors in widely-used Unix utilities and SPEC92 benchmarks. Many commonly used programs have bugs which may not always manifest themselves as a program crash, but may instead produce a subtly wrong answer. These programs are not routinely checked for run-time errors because the increase in execution time due to run-time checking can be very high. We present two techniques to handle the high cost of run-time checking of pointer and array accesses in C programs: ‘customization’ and ‘shadow processing’. Customization works by decoupling run-time checking from original computation. A user program is customized for guarding by throwing away computation not relevant for guarding. We have explored using program slicing for customization. Customization can cut the overhead of guarding by up to half. Shadow processing uses idle processors in multiprocessor workstations to perform run-time checking in the background. A user program is instrumented to obtain a ‘main process’ and a ‘shadow process’. The main process performs computations from the orignal program, occasionally communicating a few key values to the shadow process. The shadow process follows the main process, checking pointer and array accesses. The overhead to the main process which the user sees is very low – almost always less than 10%. © 1997 by John Wiley & Sons, Ltd. Harish Patil, Charles N. Fischer |
Softw. Pract. Exp. | 2 |
| 1996 | Minimum Cost Interprocedural Register AllocationabstractPast register allocators have applied heuristics to allocate registers at the local, global, and interprocedural levels. This paper presents a polynomial time interprocedural register allocator that models the cost of allocating registers to procedures and spilling registers across calls. To find the minimum cost allocation, our allocator maps solutions from a dual network flow problem that can be solved in polynomial time. Experiments show that our interprocedural register allocator can yield significant improvements in execution time. Steven M. Kurlander, Charles N. Fischer |
POPL | 2 |
| 1996 | Demand-Driven Register AllocationabstractA new global register allocation technique,demand-driven register allocation, is described. Demand-driven register allocation quantifies the costs and benefits of allocating variables to registers over live ranges so that high-quality allocations can be made. Local allocation is done first, and then global allocation is done iteratively beginning in the most deeply nested loops. Because local allocation precedes global allocation, demand-driven allocation does not interfere with the use of well-known, high-quality local register allocation and instruction-scheduling techniques. Todd A. Proebsting, Charles N. Fischer |
ACM Trans. Program. Lang. Syst. | 2 |
| 1995 | Efficient Instruction Scheduling for Delayed-Load ArchitecturesabstractA fast, optimal code-scheduling algorithm for processors with a delayed load of one instruction cycle is described. The algorithm minimizes both execution time and register use and runs in time proportional to the size of the expression-tree. An extension that spills registers when too few registers are available is also presented. The algorithm also performs very well for delayed loads of greater than one instruction cycle. A heuristic that schedules DAGs and is based on our optimal expression-tree-scheduling algorithm is presented and compared with Goodman and Hsu's algorithm Integrated Prepass Scheduling (IPS). Both schedulers perform well on benchmarks with small basic blocks, but on large basic blocks our scheduler outperforms IPS and is significantly faster. Steven M. Kurlander, Todd A. Proebsting, Charles N. Fischer |
ACM Trans. Program. Lang. Syst. | 3 |
| 1994 | Zero-cost Range SplittingabstractThis paper presents a new optimization technique that uses empty delay slots to improve code scheduling. We are able to split live ranges for free, by inserting spill code into empty delay slots. Splitting a live range can reduce interferences with other live ranges and can sometimes free registers. Live ranges no longer interfering with the split live range can sometimes make use of the extra register. Steven M. Kurlander, Charles N. Fischer |
PLDI | 2 |
| 1992 | Probalistic Register AllocationabstractA new global register allocation technique, probabilistic register allocation, is described. Probabilistic register allocation quantifies the costs and benefits of allocating variables to registers over live ranges so that excellent allocation choices can be made. Local allocation is done first, and then global allocation is done iteratively beginning in the most deeply nested loops. Because local allocation precedes global allocation, probabilistic allocation does not interfere with the use of well-known, high-quality local register allocation and instruction scheduling techniques. Todd A. Proebsting, Charles N. Fischer |
PLDI | 2 |
| 1992 | A Simple, Fast, and Effective LL(1) Error Repair Algorithm
Charles N. Fischer, Jon Mauney |
Acta Informatica | 1 |
| 1992 | SPARE: A Development Environment For Program Analysis AlgorithmsabstractA tool that bridges the gap between the theory and practice of program analysis specifications is described. The tool supports a high-level specification language that enables clear and concise expression of analysis algorithms. The denotational nature of the specifications eases the derivation of formal proofs of correctness for the analysis algorithm. SPARE (structured program analysis refinement environment) is based on a hybrid approach that combines the positive aspects of both the operational and the semantics-driven approach. An extended denotational framework is used to provide specifications in a modular fashion. Several extensions to the traditional denotational specification language have been designed to allow analysis algorithms to be expressed in a clear and concise fashion. This extended framework eases the design of analysis algorithms as well as the derivation of correctness proofs. The tool provides automatic implementation for testing purposes.> G. A. Venkatesh, Charles N. Fischer |
IEEE Trans. Software Eng. | 2 |
| 1991 | Linear-Time, Optimal Code Scheduling for Delayed-Load ArchitecturesabstractArticle Linear-time, optimal code scheduling for delayed-load architectures Share on Authors: Todd A. Proebsting University of Wisconsin-Madison, Dept. of Computer Sciences, 1210 W. Dayton St., Madison, WI University of Wisconsin-Madison, Dept. of Computer Sciences, 1210 W. Dayton St., Madison, WIView Profile , Charles N. Fischer University of Wisconsin-Madison, Dept. of Computer Sciences, 1210 W. Dayton St., Madison, WI University of Wisconsin-Madison, Dept. of Computer Sciences, 1210 W. Dayton St., Madison, WIView Profile Authors Info & Claims PLDI '91: Proceedings of the ACM SIGPLAN 1991 conference on Programming language design and implementationMay 1991 Pages 256–267https://doi.org/10.1145/113445.113467Online:01 May 1991Publication History 28citation670DownloadsMetricsTotal Citations28Total Downloads670Last 12 Months11Last 6 weeks0 Get Citation AlertsNew Citation Alert added!This alert has been successfully added and will be sent to:You will be notified whenever a record that you have chosen has been cited.To manage your alert preferences, click on the button below.Manage my AlertsNew Citation Alert!Please log in to your account Save to BinderSave to BinderCreate a New BinderNameCancelCreateExport CitationPublisher SiteGet Access Todd A. Proebsting, Charles N. Fischer |
PLDI | 2 |
| 1989 | On the Minimization of Loads/Stores in Local Register Allocation
Wei-Chung Hsu, Charles N. Fischer, James R. Goodman |
IEEE Trans. Software Eng. | 2 |
| 1988 | Integrating Code Generation and Peephole Optimization
Mahadevan Ganapathi, Charles N. Fischer |
Acta Informatica | 2 |
| 1988 | Determining the Extent of Lookahead in Syntactic Error RepairabstractMany syntactic error repair strategies examine several additional symbols of input to guide the choice of a repair; a problem is determining how many symbols to examine. The goal of gathering all relevant information is discussed and shown to be impractical; instead we can gather all information relevant to choosing among a set of “minimal repairs.” We show that finding symbols with the property “Moderate Phrase-Level Uniqueness” is sufficient to establish that all information relevant to these minimal repairs has been seen. Empirical results on the occurrence of such symbols in Pascal are presented. Jon Mauney, Charles N. Fischer |
ACM Trans. Program. Lang. Syst. | 2 |
| 1985 | A Meta-Language and System for Nonlocal Incremental Attribute Evaluation in Language-Based EditorsabstractArticle Free Access Share on A meta-language and system for nonlocal incremental attribute evaluation in language-based editors Authors: Gregory F. Johnson Cornell University Cornell UniversityView Profile , C. N. Fischer U. of Wisconsin - Madison U. of Wisconsin - MadisonView Profile Authors Info & Claims POPL '85: Proceedings of the 12th ACM SIGACT-SIGPLAN symposium on Principles of programming languagesJanuary 1985Pages 141–151https://doi.org/10.1145/318593.318627Published:01 January 1985Publication History 42citation149DownloadsMetricsTotal Citations42Total Downloads149Last 12 Months14Last 6 weeks4 Get Citation AlertsNew Citation Alert added!This alert has been successfully added and will be sent to:You will be notified whenever a record that you have chosen has been cited.To manage your alert preferences, click on the button below.Manage my AlertsNew Citation Alert!Please log in to your account Publisher SiteeReaderPDF Gregory F. Johnson, Charles N. Fischer |
POPL | 2 |
| 1985 | Affix Grammar Driven Code GenerationabstractAffix grammars are used to describe the instruction set of a target architecture for purposes of compiler code generation. A code generator is obtained automatically for a compiler using attributed parsing techniques. A compiler built on this model can automatically perform most popular machine-dependent optimizations, including peephole optimizations. Code generators based on this model demonstrate retargetability for the VAX 1 -11, iAPX 2 -86, Z-8000 3 , PDP 4 -11, MC-68000, NS32032, FOM, and IBM-370 architectures. Mahadevan Ganapathi, Charles N. Fischer |
ACM Trans. Program. Lang. Syst. | 2 |
| 1984 | Attributed Linear Intermediate Representations for Retargetable Code GeneratorsabstractAbstract This paper illustrates the usefulness of an attributed prefix linear intermediate representation for compiler code generation. In separating the machine‐independent and machine‐dependent aspects of a compiler, we discuss the advantages and disadvantages of an attributed linear intermediate representation with respect to tree‐structured intermediate representations. Some of these issues are relevant to fundamental questions of compiler structure with particular emphasis on retargetability. We discuss our implementation experience using this linear intermediate representation with a table‐driven code generation scheme for a variety of target architectures. Mahadevan Ganapathi, Charles N. Fischer |
Softw. Pract. Exp. | 2 |
| 1984 | A Simple Separate Compilation Mechanism for Block-Structured LanguagesabstractA very simple and efficient technique for the introduction of separate compilation facilities into compilers for block-structured languages is presented. Using this technique, programs may be compiled in parts while the compile-time checking advantages of compilation as a whole are retained. These features are simple for a programmer to understand and are easy to implement. Experience has shown this separate compilation mechanism to be a useful tool in the development of large programs in block-structured languages. Richard J. LeBlanc, Charles N. Fischer |
IEEE Trans. Software Eng. | 2 |
| 1982 | Description-Driven Code Generation using Attribute GrammarsabstractThe instruction-set of a target architecture is represented as a set of attribute-grammar productions. A code generator is obtained automatically for any compiler using attributed parsing techniques. A compiler built on this model can automatically perform most popular machine-dependent optimizations, including peephole optimizations. The code generator is also easily retargetable to different machine architectures. Mahadevan Ganapathi, Charles N. Fischer |
POPL | 2 |
| 1982 | Non-Syntactic Attribute Flow in Language Based EditorsabstractArticle Free Access Share on Non-syntactic attribute flow in language based editors Authors: Gregory F. Johnson University of Wisconsin-Madison University of Wisconsin-MadisonView Profile , Charles N. Fischer University of Wisconsin-Madison University of Wisconsin-MadisonView Profile Authors Info & Claims POPL '82: Proceedings of the 9th ACM SIGPLAN-SIGACT symposium on Principles of programming languagesJanuary 1982Pages 185–195https://doi.org/10.1145/582153.582174Published:25 January 1982Publication History 18citation113DownloadsMetricsTotal Citations18Total Downloads113Last 12 Months12Last 6 weeks3 Get Citation AlertsNew Citation Alert added!This alert has been successfully added and will be sent to:You will be notified whenever a record that you have chosen has been cited.To manage your alert preferences, click on the button below.Manage my AlertsNew Citation Alert!Please log in to your account Save to BinderSave to BinderCreate a New BinderNameCancelCreateExport CitationPublisher SiteeReaderPDF Gregory F. Johnson, Charles N. Fischer |
POPL | 2 |
| 1982 | A Case Study of Run-Time Errors in Pascal ProgramsabstractAbstract The results of a case study in which over 100,000 Pascal program executions were monitored for run‐time errors are reported. A large number of run‐time errors in a wide variety of categories were observed. The data reported provided insight into the use and misuse of the features of Pascal by a large population of programmers. Some implications of these statistics on compiler implementation and programming language design are discussed. The number and variety of errors detected suggests that run‐time checking mechanisms are more important and useful than is generally recognized, judging by the incompleteness of such mechanisms in many compilers. Richard J. LeBlanc, Charles N. Fischer |
Softw. Pract. Exp. | 2 |
| 1981 | An Improvement to Immediate Error Detection in Strong LL(1) Parsers
Jon Mauney, Charles N. Fischer |
Inf. Process. Lett. | 2 |
| 1980 | Efficient LL(1) Error Correction and Recovery Using Only Insertions
Charles N. Fischer, D. R. Milton, S. B. Quiring |
Acta Informatica | 1 |
| 1980 | On the Role of Error Productions in Syntactic Error Correction
Charles N. Fischer, Jon Mauney |
Comput. Lang. | 1 |
| 1980 | On Parsing and Compiling Arithmetic Expressions on Vector ComputersabstractThe problem of parsing and compiling arithmetic expressions on vector computers is considered. Methods are developed which allow encodings of one or more arithmetic expressions to be transformed directly into encodings of their corresponding derivation trees. The algorithm which performs this transformation is compact, efficient, and able to make extensive use of concurrent vector operations. Routines which concurrently transverse encoded derivation trees in a top-down or bottom-up manner are presented. These routines can be used to structure efficient, compact, and highly concurrent algorithms which complete the process of compiling arithmetic expressions. Charles N. Fischer |
ACM Trans. Program. Lang. Syst. | 1 |
| 1980 | The Implementation of Run-Time Diagnostics in PascalabstractThis paper considers the role of run-time diagnostic checking in enforcing the rules of the Pascal programming language. Run-time diagnostic checks must be both complete (covering all language requirements) and efficient. Further, such checks should be implemented so that the cost of enforcing the correct use of a given construct is borne by users of that construct. This paper descxibes simple and efficient mechanisms currently in use with a diagnostic Pascal compiler that monitor the run-time behavior of such sensitive Pascal constructs as pointers, variant records, reference (i.e., var) parameters, and with statements. The use of these mechanisms with related constructs in other languages is considered. Language modifications that simplify run-time checking ate also noted. Charles N. Fischer, Richard J. LeBlanc |
IEEE Trans. Software Eng. | 1 |
| 1979 | LL(k) Parsing for Attributed Grammars
D. R. Milton, Charles N. Fischer |
ICALP | 2 |
| 1979 | Immediate Error Detection in Strong LL(1) Parsers
Charles N. Fischer, Kuo-Chung Tai, D. R. Milton |
Inf. Process. Lett. | 1 |
| 1977 | An Efficient Insertion-Only Error-Corrector for LL(1) ParsersabstractAn LL(1)-based error-corrector which operates by insertion-only is studied. The corrector is able to correct and parse any input string. It is efficient (linear in space and time requirements) and chooses least-cost insertions (as defined by the user) in correcting syntax errors. Moreover, the error-corrector can be generated automatically from the grammar and a table of terminal symbol insertion costs. The class of LL(1) grammars correctable by this method contains (with minor modifications) grammars used to specify most common programming languages. Preliminary results suggest that this method can be used to advantage in LL(1)-driven compilers. Charles N. Fischer, D. R. Milton, S. B. Quiring |
POPL | 1 |