`
helloyesyes
  • 浏览: 1304325 次
  • 性别: Icon_minigender_2
  • 来自: 武汉
文章分类
社区版块
存档分类
最新评论

词法分析代码

阅读更多

import java.util.List;

import test.Analysis;


public class Main {

/**
* @param args
*/
public static void main(String[] args) {
// TODO Auto-generated method stub

Analysis an = new Analysis();

List list = an.scan("http://www.google.cn/search?hl=zh-CN&newwindow=1&q=fy+%E5%88%A4%E6%96%AD&aq=f&oq=&aqi=");

an.print(list);

}

}

package test;

public class Item {
private int type = 0;
private int length = 0;
private String content = "";

public int getType() {
return type;
}
public void setType(int type) {
this.type = type;
}
public int getLength() {
return length;
}
public void setLength(int length) {
this.length = length;
}
public String getContent() {
return content;
}
public void setContent(String content) {
this.content = content;
}

public String toString() {
StringBuilder builder = new StringBuilder();

builder.append("type : ").append(type).append("\n");
builder.append("length : ").append(length).append("\n");
builder.append("content : ").append(content).append("\n");

return builder.toString();
}
}

package test;

import java.util.ArrayList;
import java.util.List;

public class Analysis {

public List<Item> scan(String content) {
List<Item> result = new ArrayList<Item>();
StringBuilder builder = new StringBuilder();
int old = 0;
int temp = 0;
char c;

int s = 0;

s = content.length();

for(int i=0;i<s;i++) {
c = content.charAt(i);
temp = this.decide(c);
if(old == 0) {
old = temp;
builder.append(c);
} else {
if(old == temp) {
builder.append(c);
} else {
if( old == temp || (old == 2 && temp == 1) || (old == 2 && temp == 3)) {
builder.append(c);
} else {
Item item = new Item();
item.setType(old);
item.setContent(builder.toString());
item.setLength(item.getContent().length());
result.add(item);
//result.add(builder.toString());
builder.delete(0, builder.length());
builder.append(c);
old = temp;
}
}
}
}

if(builder.length() > 0) {
Item item = new Item();
item.setType(old);
item.setContent(builder.toString());
item.setLength(item.getContent().length());
result.add(item);
//result.add(builder.toString());
}
return result;
}

public int decide(char c) {
int result = 0;

if(c >= '0' && c <= '9') {
result = 1;
} else if(c >= 'A' && c <= 'Z') {
result = 2;
} else if(c >= 'a' && c <= 'z') {
result = 2;
} else if(c > 0 && c < 127){
result = c;
} else {
result = 3;
}

return result;
}


public void print(List<Item> result) {
int s = result.size();
for(int i=0;i<s;i++) {
System.out.println(result.get(i));
}
}
}

分享到:
评论

相关推荐

    词法分析代码.rar

    这里提供的"词法分析代码.rar"包含了实现词法分析器的C语言代码以及相关的实验报告,适合对编译原理感兴趣的程序员或计算机科学学生学习。 首先,`代码-词法分析-计科1605班-刘琦.cpp`是C++源代码文件,实现了词法...

    cminus词法分析代码

    ### cminus词法分析代码详解 #### 一、概述 本文档将深入解析一份C-(简称cminus)语言的词法分析代码。该代码基于《编译原理》书中介绍的TINY语言进行修改而成,旨在帮助读者理解词法分析的基本原理及实现方式。 ...

    linux 下的词法分析代码 编译原理

    标签中的“linux 下的词法分析代码”意味着重点是了解如何在Linux操作系统中进行词法分析相关的编码工作。Linux提供了丰富的开发工具和资源,如GCC编译器套件、Make构建系统以及各种调试工具(如gdb),便于开发者...

    c#词法分析代码包

    这个名为“c#词法分析代码包”的压缩文件很可能是为了帮助开发者理解和实现C#程序的词法分析过程。 在C#中,词法分析通常涉及以下知识点: 1. **字符集与转义序列**:C#代码使用Unicode字符集,支持各种字符。转义...

    编译原理词法分析代码

    "编译原理词法分析代码" 在编译原理中,词法分析是编译器前端的第一阶段,它的主要任务是将源代码分解成一个个的 tokens,以便于后续的语法分析和语义分析。在这篇文章中,我们将讨论如何使用 C++ 实现词法分析,并...

    编译原理-词法分析代码

    在这个“编译原理-词法分析代码”作业中,你可能会遇到以下知识点: 1. 正则表达式:在词法分析中,正则表达式是定义词素模式的常用工具。例如,你可以用正则表达式表示整数、浮点数、字符串等。通过匹配正则表达式...

    词法分析代码 能够使用自己编写的分析程序对简单的程序段进行词法分析。

    词法分析是编译原理中的一个重要环节,它负责将源代码转换成一系列有意义的符号(即“词”)。词法分析器通常作为编译器的第一阶段,在语法分析之前运行。 #### 二、词法分析的目的 1. **识别单词**:将源代码分割...

    编译原理-词法分析代码.zip

    《编译原理——词法分析代码》 在计算机科学领域,编译原理是研究如何将高级编程语言转换为机器可理解的低级语言的过程。这一过程通常分为几个阶段:词法分析、语法分析、语义分析和代码生成。本资料重点讨论的是...

    编译原理实验——词法分析代码

    词法分析器(也称为扫描器或tokenizer)负责将源代码分解成一个个独立的符号,这些符号被称为单词符号(token)。在这个实验中,我们将关注如何实现一个简单的词法分析器,它能识别并输出源程序的单词符号二元式代码...

    C语言词法分析代码加亮程序

    C语言词法分析代码加亮程序

    minipascal的lex词法分析代码

    minipascal的lex词法分析代码

    编译原理 词法分析 代码

    在这个过程中,词法分析是第一步,它负责从源代码中识别出有意义的元素,即单词符号,为后续的语法分析提供基础。本文将探讨如何用C语言实现一个针对PASCAL语言子集的词法分析器,处理源程序的无用成分,识别保留字...

    编译原理,词法分析代码实现,C语言程序,保证能运行

    词法分析是编译过程的第一步,其主要任务是将源程序中的字符流分解成一个个有意义的单词符号,这些符号可以是关键字、运算符、标识符、常量等。在这个过程中,我们通常会使用词法分析器(lexer 或 scanner)。在本例...

    java词法分析器源代码

    这些工具允许开发者定义词法规则,然后自动生成对应的词法分析代码。例如,JFlex是一个基于正则表达式的词法分析器生成器,它能根据用户定义的模式生成Java代码。 词法分析的过程通常包括以下步骤: 1. **字符流...

    词法分析(c语言实现)程序代码+报告

    调试并完成一个词法分析程序,加深对词法分析原理的理解。 二、 实验要求 1、 待分析的简单语言的词法 (1) 关键字: begin if then while do end 所有关键字都是小写。 (2) 运算符和界符: := + – * / ...

    C语言词法分析 代码

    根据给定的文件信息,我们可以深入探讨C语言中的词法分析这一重要概念,以及如何通过代码实现词法分析器的基本框架。词法分析是编译器设计中的关键步骤之一,其主要任务是从源代码中识别出有意义的符号,如关键字、...

    VB 版 词法分析代码

    VB版 词法分析程序,简单实现代码分析,因为加入的关键字不多,所以有需要的话自行在代码中添加关键字即可

Global site tag (gtag.js) - Google Analytics