Difference between revisions of "Yacc"
Line 14: | Line 14: | ||
== Examples == | == Examples == | ||
− | * [http://eplmediawiki.di.uminho.pt/uploads/Lavanda_LexYacc.w Lavanda.w] | + | * [http://eplmediawiki.di.uminho.pt/uploads/Lavanda_LexYacc.w Lavanda.w] |
* [http://eplmediawiki.di.uminho.pt/uploads/Lavanda_LexYacc.pdf Lavanda.pdf] | * [http://eplmediawiki.di.uminho.pt/uploads/Lavanda_LexYacc.pdf Lavanda.pdf] | ||
[[Category:Compiler Generators]] | [[Category:Compiler Generators]] |
Latest revision as of 00:18, 11 December 2012
Yacc: Yet Another Compiler-Compiler
Computer program input generally has some structure; in fact, every computer program that does input can be thought of as defining an "input language" which it accepts.
An input language may be as complex as a programming language, or as simple as a sequence of numbers. Unfortunately, usual input facilities are limited, difficult to use, and often are lax about checking their inputs for validity.
Yacc provides a general tool for describing the input to a computer program. The Yacc user specifies the structures of his input, together with code to be invoked as each such structure is recognized. Yacc turns such a specification into a subroutine that handles the input process; frequently, it is convenient and appropriate to have most of the flow of control in the user's application handled by this subroutine.