



Study with the several resources on Docsity
Earn points by helping other students or get them with a premium plan
Prepare for your exams
Study with the several resources on Docsity
Earn points to download
Earn points by helping other students or get them with a premium plan
Compile is software which translates high level programming language to computer basic language. Many compilers exist e.g. Borland, Java etc. Compiler construction have few steps which are taught in this course. This lecture includes: Running, Scanner, Compiler, Main, Void, Return, Int, Ctype, Studio, Tokdefs, C
Typology: Study notes
1 / 6
This page cannot be seen from the preview
Don't miss anything!




259,void 258,main 283,( 284,) 285,{ 258,FlexLexer 258,lex 290,; 260,int 258,tc 266,= 258,lex 291,. 258,yylex 283,( 284,) 290,; 263,while 283,( 258,tc 276,!= 257, 284,) 258,cout 279,<< 258,tc 279,<< 292,"," 279,<< 258,lex 291,. 258,YYText 283,( 284,) 279,<< 258,endl 290,; 258,tc 266,= 258,lex 291,. 258,yylex 283,( 284,) 290,; 286,}
%{ #include <ctype.h> #include <stdio.h> #include “tokdefs.h"
int lineno;
static int yywrap(void); static void skip_until_eol(void); static void skip_comment(void); static int check_identifier(const char *); %}
intsuffix ([uU][lL]?)|([lL][uU]?) fracconst ([0-9].[0-9]+)|([0-9]+.) exppart [eE][-+]?[0-9]+ floatsuffix [fFlL] chartext ([^'])|(\.) stringtext ([^"])|(\.) %% %% "\n" { ++lineno; } [\t\f\v\r ]+ { / Ignore whitespace. */ }
"/*" { skip_comment(); } "//" { skip_until_eol(); }
"{" { return '{'; } "<%" { return '{'; } "}" { return '}'; } "%>" { return '}'; } "[" { return '['; } "<:" { return '['; } "]" { return ']'; } ":>" { return ']'; } "(" { return '('; } ")" { return ')'; } ";" { return ';'; } ":" { return ':'; } "..." { return ELLIPSIS; } "?" { return '?'; } "::" { return COLONCOLON; } "." { return '.'; } "." { return DOTSTAR; } "+" { return '+'; } "-" { return '-'; } "" { return '*'; } "/" { return '/'; } "%" { return '%'; } "^" { return '^'; } "xor" { return '^'; } "&" { return '&'; }
"friend" { return FRIEND; } "goto" { return GOTO; } "if" { return IF; } "inline" { return INLINE; } "int" { return INT; } "long" { return LONG; } "mutable" { return MUTABLE; } "namespace" { return NAMESPACE; } "new" { return NEW; } "operator" { return OPERATOR; } "private" { return PRIVATE; } "protected" { return PROTECTED; } "public" { return PUBLIC; } "register" { return REGISTER; } "reinterpret_cast" { return REINTERPRET_CAST; } "return" { return RETURN; } "short" { return SHORT; } "signed" { return SIGNED; } "sizeof" { return SIZEOF; } "static" { return STATIC; } "static_cast" { return STATIC_CAST; } "struct" { return STRUCT; } "switch" { return SWITCH; } "template" { return TEMPLATE; } "this" { return THIS; } "throw" { return THROW; } "true" { return TRUE; } "try" { return TRY; } "typedef" { return TYPEDEF; } "typeid" { return TYPEID; } "typename" { return TYPENAME; } "union" { return UNION; } "unsigned" { return UNSIGNED; } "using" { return USING; } "virtual" { return VIRTUAL; } "void" { return VOID; } "volatile" { return VOLATILE; } "wchar_t" { return WCHAR_T; } "while" { return WHILE; }
[a-zA-Z_][a-zA-Z_0-9]* { return check_identifier(yytext); }
"0"[xX][0-9a-fA-F]+{intsuffix}? { return INTEGER; } "0"[0-7]+{intsuffix}? { return INTEGER; } [0-9]+{intsuffix}? { return INTEGER; }
{fracconst}{exppart}?{floatsuffix}? { return FLOATING; } [0-9]+{exppart}{floatsuffix}? { return FLOATING; }
"'"{chartext}"'" { return CHARACTER; } "L'"{chartext}"'" { return CHARACTER; }
"""{stringtext}""" { return STRING; } "L""{stringtext}""" { return STRING; }
. { fprintf(stderr, "%d: unexpected character `%c'\n", lineno, yytext[0]); }
static int yywrap(void)
return 1; } static void skip_comment(void) { int c1, c2;
c1 = input(); c2 = input();
while(c2 != EOF && !(c1 == '*' && c2 == '/')) { if (c1 == '\n') ++lineno; c1 = c2; c2 = input(); } } static void skip_until_eol(void) { int c;
while ((c = input()) != EOF && c != '\n') ; ++lineno; }
static int check_identifier(const char s) { /
Parsing