第三章-词法分析

extjs4 extjs4     2023-01-02     324

关键词:

 

(1)编码

词法分析将Java源文件的字符流转变为对应的Token流。一些规范的Token定义在Token枚举类中,如下:
其实在形成一个Token流时,在词法分析的过程中,可以归纳为三类,分别是:
/** An interface that defines codes for Java source tokens
 *  returned from lexical analysis.
 */
public enum Token implements Formattable 
    EOF,
    ERROR,
    IDENTIFIER, // 如类名、包名、变量名、方法名等
    ABSTRACT("abstract"),
    ASSERT("assert"),
    BOOLEAN("boolean"),
    BREAK("break"),
    BYTE("byte"),
    CASE("case"),
    CATCH("catch"),
    CHAR("char"),
    CLASS("class"),
    CONST("const"),
    CONTINUE("continue"),
    DEFAULT("default"),
    DO("do"),
    DOUBLE("double"),
    ELSE("else"),
    ENUM("enum"),
    EXTENDS("extends"),
    FINAL("final"),
    FINALLY("finally"),
    FLOAT("float"),
    FOR("for"),
    GOTO("goto"),
    IF("if"),
    IMPLEMENTS("implements"),
    IMPORT("import"),
    INSTANCEOF("instanceof"),
    INT("int"),
    INTERFACE("interface"),
    LONG("long"),
    NATIVE("native"),
    NEW("new"),
    PACKAGE("package"),
    PRIVATE("private"),
    PROTECTED("protected"),
    PUBLIC("public"),
    RETURN("return"),
    SHORT("short"),
    STATIC("static"),
    STRICTFP("strictfp"),
    SUPER("super"),
    SWITCH("switch"),
    SYNCHRONIZED("synchronized"),
    THIS("this"),
    THROW("throw"),
    THROWS("throws"),
    TRANSIENT("transient"),
    TRY("try"),
    VOID("void"),
    VOLATILE("volatile"),
    WHILE("while"),
    INTLITERAL,
    LONGLITERAL,
    FLOATLITERAL,
    DOUBLELITERAL,
    CHARLITERAL,
    STRINGLITERAL,
    TRUE("true"),
    FALSE("false"),
    NULL("null"),
    LPAREN("("),
    RPAREN(")"),
    LBRACE(""),
    RBRACE(""),
    LBRACKET("["),
    RBRACKET("]"),
    SEMI(";"),
    COMMA(","),
    DOT("."),
    ELLIPSIS("..."),
    EQ("="),
    GT(">"),
    LT("<"),
    BANG("!"),
    TILDE("~"),
    QUES("?"),
    COLON(":"),
    EQEQ("=="),
    LTEQ("<="),
    GTEQ(">="),
    BANGEQ("!="),
    AMPAMP("&&"),
    BARBAR("||"),
    PLUSPLUS("++"),
    SUBSUB("--"),
    PLUS("+"),
    SUB("-"),
    STAR("*"),
    SLASH("/"),
    AMP("&"),
    BAR("|"),
    CARET("^"),
    PERCENT("%"),
    LTLT("<<"),
    GTGT(">>"),
    GTGTGT(">>>"),
    PLUSEQ("+="),
    SUBEQ("-="),
    STAREQ("*="),
    SLASHEQ("/="),
    AMPEQ("&="),
    BAREQ("|="),
    CARETEQ("^="),
    PERCENTEQ("%="),
    LTLTEQ("<<="),
    GTGTEQ(">>="),
    GTGTGTEQ(">>>="),
    MONKEYS_AT("@"),
    CUSTOM;
     
    // 省略相关的方法

  

 
(1)标识符号:如Token.PLUS、Token.EQ、Token.LBRACE、Token.RBRACE等
(2)Java的保留关键字:
 
数据类型:
Booleanintlongshortytefloatdoublecharclassinterface
 
流程控制:
ifelsedowhileforswitchcasedefaultreakcontinue eturn rycatchfinally
 
修饰符:      
public   
protected   
private   
final   
void    
static   
strictfp    
abstract    
transient
synchronized    
volatile   
native
 
动作:          
package   
import    
throw   
throws    
extends   
implements   
this   
Super   
instanceof   
new
 
保留字:      
truefalse ullgotoconst
 
(3)Token.IDENTIFIER 
用来表示用户自定义的类名、包名、变量包、方法名等
 
 
 

 

 

(1)词法元素(关键字、符号和自定义单词)

 

(2)Java的Name与QualifiedName

 

一个字符一个字符的读取源代码,形成规范化的Token流。规范化的Token包含:

  • java关键词:package、import、public、class、int等
  • 自定义单词:包名、类名、变量名、方法名
  • 符号:=、;、+、-、*、/、%、、等

 

第三章-有穷自动机与词法分析

使用自动机和正则表达式判断字符串是否合法。构造词法分析器的方法可以分为人工方法和自动化方法。3.1.1词法分析器的功能①每当程序员敲击键盘上一个键时,自动向计算机输入一个相应的8位二进制码,这种码称为ASCII码。... 查看详情

编译原理(第三版)词法分析器(代码片段)

/*beginx:=9;ifx>0thenx:=2*x+1/3;end#*/#include<stdio.h>#include<stdlib.h>#include<string.h>#define_KEY_WORD_END"waitingforyourexpanding"typedefstructinttypenum;char*word;WORD;ch 查看详情

词法分析

分析3样东西第一步:  先分析参数第二步:在分析变量声明第三步:分析函数声明 一个函数能使用的局部变量,就从上面的三步分析而来具体步骤:0:函数运行前的一瞬间生成ActiveObject(活动对象 简称AO)1: 1.1&nb... 查看详情

编译原理-第三章词法分析-3.7从正则表达式到自动机-从nfa到dfa的转换(代码片段)

从NFA到DFA的转换一、子集构造法1.定义2.在NFA状态集上的操作3.代码状态转换表的构建ε-closure(T)的计算4.输入输出及相关要求二、示例1.演算步骤1.首确定起始状态,依据ε的闭包确定,并填入状态表2.依据字母表的字母和ε的闭包... 查看详情

nlp+语篇分析︱中文语篇分析研究现状(cips2016)

摘录自:CIPS2016中文信息处理报告《第三章语篇分析研究进展、现状及趋势》P21CIPS2016中文信息处理报告下载链接:http://cips-upload.bj.bcebos.com/cips2016.pdfNLP词法、句法、语义、语篇综合系列:NLP+词法系列(一)︱中文分词技术小结... 查看详情

词法分析

1.词法分析的功能 词法分析(英语:lexicalanalysis)是计算机科学中将字符序列转换为单词(Token)序列的过程。进行词法分析的程序或者函数叫作词法分析器(Lexicalanalyzer,简称Lexer),也叫扫描器(Scanner)。词法分析器一... 查看详情

词法分析

词法分析词法分析方法:js运行前有一个类似编译的过程即词法分析,词法分析主要有三个步骤:分析参数再分析变量的声明分析函数说明具体步骤如下:函数在运行的瞬间,生成一个活动对象(ActiveObject),简称AO分析参数函... 查看详情

词法分析

 实验一、词法分析实验专业 商软二班  姓名 罗肖凤 学号 201504040262一、       实验目的通过设计编制调试一个具体的词法分析程序,加深对词法分析原理的理解。并掌握在对程... 查看详情

词法分析程序的功能

1.完成词法分析任务的程序称为词法分析程序或词法分析器或扫描器。 2.从左至右地对源程序进行扫描,按照语言的词法规则识别各类单词,并产生相应单词的属性字。 查看详情

词法分析实验

 实验一、词法分析实验专业商业软件工程  姓名杨晓潮 学号201506110224一、       实验目的编写词法分析程序,对输入进行词法分析二、       实验内容和要求进行... 查看详情

词法分析

本章概述执行词法分析的程序称为词法分析器。本章中,了解词法分析器的功能和输出形式,熟练掌握词法分析器设计的原理和方法,能够以转换图为工具使用某种语言的编写并调试一个扫描器。在正确理解正规表达... 查看详情

词法分析程序的功能

1.完成词法分析任务的程序称为词法分析程序或词法分析器或扫描器。 2.从左至右地对源程序进行扫描,按照语言的词法规则识别空格和保留字和标识符,并产生相应单词的属性字。 查看详情

词法分析

...sp;            词法分析的功能:词法分析器的主要任务是读入源程序的输入字符、将它们组成词素,生成并输出一个词法单元序列,每个词法单元对应于一个词素。当词法分析器发现了... 查看详情

词法分析实验

实验一、词法分析实验商业软件3班 谭颖欣244一、        实验目的 编制一个词法分析程序。通过设计一个编译词法分析程序,实现对词法分析转换的理解,加深对转换过程的认识,通过这个... 查看详情

词法分析实验报告

实验一、词法分析实验1502商业软件工程专业黄浩峰 姓名 201506110142学号一、 实验目的      通过实验了解词法分析器的词法分析过程。 二、 实验内容和要求设计一个词法分析程序,对关... 查看详情

试验1:词法分析

实验一、词法分析实验商业软件工程3班  李华秋  201506110205一、 实验目的    编制一个词法分析程序。通过设计一个编译词法分析程序,实现对词法分析转换的理解,加深对转换过程的认识,通... 查看详情

实验报告-词法分析

---恢复内容开始---实验一、词法分析实验专业:商软二班  姓名:黄思慧 学号:201506110189一、       实验目的通过设计编制调试一个具体的词法分析程序,加深对词法分析原理的理解。并掌握... 查看详情

词法分析实验报告

词法分析实验报告一、        实验目的编制一个词法分析器,通过该词法分析程序的设计实例,进一步了解词法分析程序构造的一些细节。  二、        实验内容... 查看详情