This shows you the differences between two versions of the page.
Both sides previous revision Previous revision Next revision | Previous revision Last revision Both sides next revision | ||
semantic_tutorial [2015/11/20 16:01] deva |
semantic_tutorial [2016/12/01 17:07] deva |
||
---|---|---|---|
Line 3: | Line 3: | ||
==== Step 1: Preparation === | ==== Step 1: Preparation === | ||
- | * In this tutorial we use the [[http://deva.web.elte.hu/compilers/lab/while-language.html|While language]]. It is possible to use your own lexer and parser. If you have not completed it, use [[http://deva.web.elte.hu/compilers/lab/parser.zip|this implementation]]. | + | * In this tutorial we use the [[http://deva.web.elte.hu/compilers/lab/while-language.html|While language]]. It is possible to use your own lexer and parser. If you have not completed it, use [[http://deva.web.elte.hu/compilers/parser.zip|this implementation]]. |
* If you are working not with your own parser, please take the time to understand the grammar. | * If you are working not with your own parser, please take the time to understand the grammar. | ||
* Look into the ''Parser.ih'' file. | * Look into the ''Parser.ih'' file. | ||
* The function called ''lex'' asks the current line number from the parser and saves it into a field of the ''d_loc<nowiki>__</nowiki>'' attribute of the ''Parser'' class. Then it asks for the next token from the lexer and returns it to the parser. | * The function called ''lex'' asks the current line number from the parser and saves it into a field of the ''d_loc<nowiki>__</nowiki>'' attribute of the ''Parser'' class. Then it asks for the next token from the lexer and returns it to the parser. | ||
* The line number information is used in the ''error'' function to print location information for error messages. | * The line number information is used in the ''error'' function to print location information for error messages. | ||
- | * Make sure you can compile the parser and it accepts all the correct [[http://deva.web.elte.hu/compilers/lab/while-tests.zip|test files]] and rejects the lexical error ones. Try out the semantic error test cases! They are accepted. The goal of the tutorial is to find those errors as well. | + | * Make sure you can compile the parser and it accepts all the correct [[http://deva.web.elte.hu/compilers/while-tests.zip|test files]] and rejects the lexical error ones. Try out the semantic error test cases! They are accepted. The goal of the tutorial is to find those errors as well. |
==== Step 2: Symbol table === | ==== Step 2: Symbol table === |