|
|
1.1 root 1: .\" @(#)ss.. 6.1 (Berkeley) 5/8/86
2: .\"
3: .EH 'PS1:15-%''Yacc: Yet Another Compiler-Compiler'
4: .OH 'Yacc: Yet Another Compiler-Compiler''PS1:15-%'
5: .\".RP
6: .ND "July 31, 1978"
7: .TL
8: Yacc:
9: Yet Another Compiler-Compiler
10: .AU "MH 2C-559" 3968
11: Stephen C. Johnson
12: .AI
13: .MH
14: .AB
15: .PP
16: Computer program input generally has some structure;
17: in fact, every computer program that does input can be thought of as defining
18: an ``input language'' which it accepts.
19: An input language may be as complex as a programming language, or as simple as
20: a sequence of numbers.
21: Unfortunately, usual input facilities
22: are limited, difficult to use,
23: and often are lax about checking their inputs for validity.
24: .PP
25: Yacc provides a general tool for describing
26: the input to a computer program.
27: The Yacc user specifies the structures
28: of his input, together with code to be invoked as
29: each such structure is recognized.
30: Yacc turns such a specification into a subroutine that
31: handles the input process;
32: frequently, it is convenient and appropriate to have most
33: of the flow of control in the user's application
34: handled by this subroutine.
35: .PP
36: The input subroutine produced by Yacc calls a user-supplied routine to
37: return the next basic input item.
38: Thus, the user can specify his input in terms of individual input characters, or
39: in terms of higher level constructs such as names and numbers.
40: The user-supplied routine may also handle idiomatic features such as
41: comment and continuation conventions, which typically defy easy grammatical specification.
42: .PP
43: Yacc is written in portable C.
44: The class of specifications accepted is a very general one: LALR(1)
45: grammars with disambiguating rules.
46: .PP
47: In addition to compilers for C, APL, Pascal, RATFOR, etc., Yacc
48: has also been used for less conventional languages,
49: including a phototypesetter language, several desk calculator languages, a document retrieval system,
50: and a Fortran debugging system.
51: .AE
52: .OK
53: .\"Computer Languages
54: .\"Compilers
55: .\"Formal Language Theory
56: .CS 23 11 34 0 0 8
This archive runs on limited infrastructure. Preserving old code on modern bandwidth. Automated agents are requested to crawl responsibly.