Compilers construction paper
I and a dear brother in faith of mine called Wellington Magalhães Leite wrote a paper titled: A Syntactic Analyzer built with the CASE tools Flex and YACC
See the paper's abstract below:
The function of a syntactic analyzer in a compiler is to verify the syntactic structure of a program’s source code. It then detects, signalize and handle the syntactic errors found in the source code and at the same time servers as the framework for the front-end (user interface) of the program. So, its construction helps with the familiarization regarding the tasks included in the compiler project.
The language used in this paper does not have left recursion. The language neither presents subprograms, nor indexed variables and its only loop command is while for the sake of simplicity. The syntactic analyzer implemented uses the bottom-up parsing approach.
This paper presents the steps to the construction of a syntactic analyzer, which serves as a base element for a compiler implementation.
Keywords: syntactic analyzer, syntactical analysis, compiler construction, case tools, flex, yacc
CONTENTS
1 INTRODUCTION 7
1.1 Objective 7
1.2 Definition 7
1.2.1 Grammar 7
1.2.1.1 Grammar productions 8
1.2.1.2 Lexical specifications 8
1.2.1.3 Reserved words or keywords 10
1.2.1.4 Operator types and attributes 11
1.2.1.5 Separator types 11
2 DEVELOPMENT 13
2.1 Lexical analysis 13
2.1.1 Sample source code of a factorial program 13
2.1.2 Flex 16
2.2 Syntactical analysis 16
2.2.1 Sample syntactic tree 16
2.2.2 YACC 20
3 APPLICATION 21
3.1 Constructing the file for the lexical analysis (lexan.lex) 21
3.2 Constructing the file for the syntactic analysis (sinan.yacc) 21
3.3 Guide to implementation 24
3.4 Using a batch file to avoid boilerplate work 28
4 CONCLUSION 30
5 REFERENCES 31
6 ADDENDUM 32
See a screenshot of the syntactic analyzer in action:
You can get a PDF copy of the paper and the accompanying syntactical analyzer's files in a ZIP file at:
http://leniel.googlepages.com/SyntacticAnalyzerBuiltWithFlexYACC.pdf http://leniel.googlepages.com/SyntacticAnalyzerBuiltWithFlexYACC.zip