Lexical analyzer generator

Slides:



Advertisements
Similar presentations
提升教學品質研討會 工學院教師教學經驗分享 長庚大學 資訊工程學系 / 醫療機電工程研究所 助理教授 趙一平 2015/04/10.
Advertisements

Linux 环境及 Shell 程序 操作系统实验 1. 二、 Shell 编程与进程通信 常用 shell 命令 文件及文件属性操作 ls 、 cp 、 mv 、 rm ln 、 ln –s 、 chmod 、 groupadd 、 useradd 输入输出操作 echo 、 cat >> 、
While 迴圈 - 不知重複執行次數
a simplified C to Java Compiler
泰宁小学 六(2)班 林丹敏 早恋?!.
景氣循環 景氣循環 美國景氣循環變化歷程 景氣循環面面觀 景氣循環分析的介紹 總體經濟學 chapter 8 景氣循環.
程序设计基础 贺辉 图书馆三楼办公室(进馆左侧上楼)
Loops.
古緯詩(PHD; 香港中文大學社會學系兼任教授)
任课老师:戴新宇 助教: 实验一 词法分析和语法分析 任课老师:戴新宇 助教: 2014年3月20日.
年度校樹選拔秀 主辦單位:楊梅國小.
第九章日治時期的台灣(下).
指導教授:古錦松 分享同學: 蔡斗溍、陳姿云 陳俊仰、陳國睿(助教)
TQC+ 物件導向程式認證-JAVA.
编译原理上机实习
编 译 原 理 指导教师:杨建国 二零一零年三月.
Chapter 4 流程控制.
The discipline of algorithms
程設一.
CH1 Number Systems and Conversion
Introduction to Lex 電資三 B 盧逸峮
程設一.
第8章 字元與字串處理 8-1 C語言的字元檢查函數 8-2 C語言的字串 8-3 字串的輸入與輸出 8-4 指標與字串
7 Intermediate Representation
Introduction to the C Programming Language
Compilers Flex & Bison 的安裝使用
2.2 语法分析器生成器YACC 分析器的构造步骤: 产生式→识别活前缀的DFA→分析表(+驱动器) YACC概述
實作輔導 日期: 3/11 09:10~16:00 地點:臺北市立大學 臺北市中正區愛國西路一號 (中正紀念堂站7號出口)
Java 與 Regular Expression
第二章 共轴球面系统的物像关系 Chapter 2: Object-image relations of coaxial spheric system.
助教:胡光能,解定宝 编译原理讲师:戴新宇
Last Lecture Revisited
编译原理与技术 词法分析(1) 2018/11/28 《编译原理与技术》讲义.
Function.
鄭士康 國立台灣大學 電機工程學系/電信工程研究所/ 資訊網路與多媒體研究所
第三章 词法分析.
Part3词法分析 授课:胡静.
Last Lecture Revisited
第2次课 上下文无关文法
词法&语法解析.
第七章常見的演算法 目的:解決問題 遞迴演算法 (一)從程式語言的角度來看:就是程序自 己呼叫自己的情況。
编译原理与技术 词法分析 (2) 2018/12/30 《编译原理与技术》讲义.
重點 資料結構之選定會影響演算法 選擇對的資料結構讓您上天堂 程式.
本章中將會更詳細地考慮有關重複的概念,並且會 介紹for和do…while等兩種用來控制重複的敘述 式。 也將會介紹switch多重選擇敘述式。 我們會討論直接和迅速離開某種控制敘述式的 break敘述式,以及用來跳過重複敘述式本體剩餘 部份的continue敘述式。 本章會討論用來組合控制條件的邏輯運算子,最後.
Instructor:Po-Yu Kuo 教師:郭柏佑
中间代码生成.
第二章 词法分析 (Lexical Analysis)
语法分析 本章内容 语法分析器:把词法分析生成的词法单元流翻译成语法分析树(parse tree)
Programming Languages
Answering aggregation question over knowledge base
C语言概述 第一章.
1.2 C语言程序的结构与书写规则 一、 C语言程序的总体结构
Instructor:Po-Yu Kuo 教師:郭柏佑
Course 10 削減與搜尋 Prune and Search
项目1 C程序设计起步 学习目标: 通过该项目你可以知道: C语言的用途。 C语言的基本符号和关键字。 C语言程序的结构及特点。
冀教版 九年级 Lesson 20: Say It in Five.
本节内容 Lua基本语法.
第三章 基本的輸出與輸入函數 (Basic Output & Input Function)
遊戲設計 Homework3 – 小朋友下樓梯.
Introduction to the C Programming Language
第1章程序设计和C语言.
Arguments to the main Function and Final Project
编译原理 第一章 引 论 南京大学计算机科学与技术系 戴新宇.
高级大数据人才培养丛书之一,大数据挖掘技术与应用
Introduction to Computer Security and Cryptography
變數與資料型態  綠園.
劉庠宏、林合治編著 國立高雄大學應用數學系 2005年3月1日
輸出執行結果到螢幕上 如果要將執行結果的文字和數值都「輸出」到電腦螢幕時,程式要怎麼寫? class 類別名稱 {
编译原理实践 --词法分析程序的自动生成器LEX
Presentation transcript:

Lexical analyzer generator Last Lecture Review ? Lexical analyzer generator State convention graph Regular expression Computer realization Regular expression grammar Equivalence Equivalence Subset construction Nondeterministic finite automaton Deterministic finite automaton Minimalist deterministic finite automaton Combining the undistinguishable states Deterministic finite automaton Language Sate enumeration method

2.5 Lexical Analyzer Generator Creating a lexical analyzer with Lex Lex compiler Lex source code lex.l lex.yy.c C a.out Input Stream Sequence of tokens

2.5 Lexical Analyzer Generator Lex program has three parts Declarations %% Translation rules auxiliary functions Lex translation rules p1 {action 1} p2 {action 2} … … pn {action n}

2.5 Lexical Analyzer Generator ex---Declarations %{ /* defination of manifest constants LT, LE, EQ, NE, GT, GE, WHILE, DO, ID, NUMBER, RELOP*/ %} /* regular definations */ delim [ \t \n ] ws {delim}+ letter [A Za  z] digit [09] id {letter}({letter}|{digit})* number {digit}+(\ .{digit}+)?(E[+\]?{digit}+)?

2.5 Lexical Analyzer Generator ex---translation rule {ws} {/* no actions,no return */} while {return (WHILE);} do {return (DO);} {id} {yylval = install_id ( ); return (ID);} {number} {yylval = install_num( ); return (NUMBER);} “ < ” {yylval = LT; return (RELOP);} “ <= ” {yylval = LE; return (RELOP);} “ = ” {yylval = EQ; return (RELOP);} “ <> ” {yylval = NE; return (RELOP);} “ > ” {yylval = GT; return (RELOP);} “ >= ” {yylval = GE; return (RELOP);}

2.5 Lexical Analyzer Generator ex---auxiliary fuction install_ id ( ) { /* function to install the lexeme。 yytext points to the first character of lexeme, yyleng is the length of lexeme */ } install_num ( ) { /* similar to install_id,but puts numerical constrants into a separate table */

2.5 Lexical Analyzer Generator Example for experiment : example.l int num_lines = 0, num_chars = 0; %% \n ++num_lines; ++num_chars; . ++num_chars; main() { yylex(); printf("# of lines = %d, # of chars = %d\n ",num_lines,num_chars); }

2.5 Lexical Analyzer Generator Example for experiment : example.l hello world wo ai tian an men hello world i love lex.yy. exe # of lines = 3, # of chars = 49

Chapter Checklist Lex Manual Computer Realization Source code characters combination lexemes tokens pattern Transition Diagrams Name Lex equal Non-Formalization Description Formalization Description Syntax-directed Non-deterministic Finite Automata Minimization of Finite Automata Regular Expression letters combination string Language set Alphabet Table Merge undistinguished state Subset construction State Enumeration Deterministic Finite Automata Union LUM concatenation LM closure L* Positive closure L+ conjunction exponent

HOMEWORK 1、从软件学院编译原理论坛下载“软件学院编译原理实践.zip”,阅读教程中有关PL/0词法分析器的源代码。 2、从软件学院编译原理论坛下载“lex_实验.zip”,按照 “flex 说明.txt”要求完成如下上机题(选作):

1、编写一个词法分析器,它针对输入文件,实现以下功能: 1)每遇到你的学号,就输出你的名字,对于其他的串原样输出。 2)统计输入文件中字母的数目。 例如:(以肖永跃的上机题为例): 输入文件如下所示: 200213001 hello world wo ai tian an men hello world i love 200213001 输出应该如下所示: 肖永钦 hello world wo ai tian an men hello world i love 肖永钦 # of ids = 11, # of chars = 66