|
|
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.