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

语法分析代码

阅读更多

import java.util.List;

import test.Analysis;
import test.Grammar;


public class Test {

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

String[][] table = {
{"1", "2", "3", ":", "/", ".", "?", ";", "//"},

{"", "1", "", "", "", "", "", "", ""},
{"", "", "", "2", "", "5", "", "", ""},
{"", "", "", "", "", "", "", "", "3"},
{"", "4", "", "", "", "", "", "", ""},
{"", "", "", "", "", "5", "", "", ""},
{"", "6", "", "", "", "", "", "", ""},
{"", "", "", "7", "0", "5", "0", "0", ""},
{"8", "", "", "", "", "", "", "", ""},
{"", "", "", "", "0", "", "0", "0", ""}
};

Grammar grammar = new Grammar(table);

Analysis an = new Analysis();

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

//an.print(list);

String result = grammar.analysis2(list);

System.out.println(result);

}
}

package test;

import java.util.HashMap;
import java.util.List;

public class Grammar {
private HashMap map = new HashMap();

public Grammar(String[][] table) {
String[] temp;
String[] v;
int s = table.length;
int l = 0;

temp = table[0];
l = temp.length;

for(int i=1;i<s;i++) {
HashMap m = new HashMap();
v = table[i];
for(int j=0;j<l;j++) {
String t = v[j];
if(t == null || t.length() ==0) {
t = "-1";
}
m.put(temp[j], t);
}

this.map.put(i-1, m);
}

}

public String analysis2(List<Item> result) {
StringBuilder builder = new StringBuilder();

int state = 0;
int s;

s = result.size();

for(int i=0;i<s;i++) {
builder.append(result.get(i).getContent());
Item item = result.get(i);
String temp;
if(item.getType() == 1 || item.getType() == 2 || item.getType() == 3) {
HashMap t = (HashMap) map.get(state);
temp = (String) t.get(String.valueOf(item.getType()));
} else {
HashMap t = (HashMap) map.get(state);
temp = (String) t.get(item.getContent());
}
if(temp != null) {
int v = 0;
try{
v = Integer.parseInt(temp);
} catch(Exception e) {
v = -1;
}
if(v == 0) {
break;
} else if(v == -1) {
builder.delete(0, builder.length());
break;
} else {
state = v;
}
} else {
builder.delete(0, builder.length());
break;
}
}

return builder.toString();
}

}

分享到:
评论

相关推荐

    语法分析代码(C语言)

    在该环境中编写和运行语法分析代码,开发者可以利用其调试工具、代码编辑器和编译器进行有效的开发工作。 在实现语法分析代码时,我们需要考虑以下几个关键点: 1. **文法定义**:首先,你需要定义目标语言的上...

    LL(1)语法分析代码

    LL(1)语法分析代码,基于编译原理程序设计,对输入给定的文法,自动计算FIRST、FOLLOW集合和SELECT集合,应能判断识别是否为给定文法的句子,并给出推导过程

    编译原理语法分析代码设计报告

    详细的语法分析代码设计思路,并且有软件实现结果,用于学习

    编译原理语法分析代码

    语法分析是编译器设计中的关键步骤,它从源代码的词法单元流中构造出抽象语法树(AST),从而解析出程序的结构和语义。本压缩包中的“编译原理02”文件可能是这个过程的一个实现或示例。 语法分析通常分为两个阶段...

    C语言 语法分析 代码

    2. **词法分析**:在语法分析之前,词法分析器会把源代码分解成一个个的词法单元(token),比如标识符、关键字、常量、运算符等。这些词法单元是语法分析的输入。 3. **上下文无关文法(CFG)**:C语言的语法可以...

    C++语法分析代码

    总的来说,C++实现的LL1语法分析代码是一个实现编译器或解释器核心部分的实例,它展示了如何将源代码转换为可理解的结构,从而为后续的代码生成和优化阶段奠定基础。理解和掌握这个过程对于深入学习编译原理和C++...

    LL(1)语法分析代码及报告

    LL(1)语法分析代码及报告 编译原理 目 录 1 课题综述 1 1.1 课题来源 1 1.2 课题意义 1 1.3 预期的目标 1 1.4 面对的问题 2 1.5 需解决的关键技术 2 2 系统分析 2 2.1 涉及的基础知识 2 2.2 解决问题的基本思路 4 ...

    编译原理语法分析代码 包含课程报告

    这份“编译原理语法分析代码 包含课程报告”资料涵盖了这些关键步骤,并且提供了实践项目,帮助深入理解编译器的设计与实现。 首先,词法分析(Lexical Analysis)是编译器的第一步,它的任务是识别源代码中的单词...

    《编译原理及实现》孙悦红 附录词法分析 语法分析代码

    总的来说,"《编译原理及实现》孙悦红 附录词法分析 语法分析代码"提供了一个全面的学习平台,不仅涵盖了编译器设计的基础理论,还通过附录中的代码实例强化了实践操作。对于想深入理解和构建编译器的读者,这是一份...

    编译原理实验报告+语法分析代码(C语言)

    实验报告通常涵盖了编译过程的各个阶段,包括词法分析、语法分析、语义分析以及代码生成。在本实验报告中,我们将专注于语法分析这一关键步骤,它是将源代码结构化为抽象语法树(AST)的过程,为后续的编译工作奠定...

    linux 下的语法分析代码 编译原理 语法实验报告

    这个过程通常分为词法分析、语法分析、语义分析和代码生成四个阶段。在本实验中,我们重点关注的是语法分析。 2. **词法分析**: 在词法分析阶段,输入的源代码被分解成一个个有意义的单元,称为“标记”或“token...

    语法分析 代码

    编译原理课程设计语法分析代码

    LL(1)语法分析器代码java编译原理,带注释,可运行借鉴.pdf

    LL(1) 语法分析器代码 Java 编译原理 本资源是一个 LL(1) 语法分析器的 Java 实现代码,带有详细的注释和可运行的示例代码。该代码实现了一个语法分析器,能够识别和解析输入的字符串,并输出解析结果。 LL(1) ...

    语法分析(C实现)

    语法分析是编译器设计的关键组成部分,它负责将源代码转换为抽象语法树(AST),以便后续阶段可以理解和处理程序的结构。在这个过程中,C语言作为一种强大的系统编程语言,经常被用于实现这样的工具。本项目将详细...

    编译原理LL1语法分析器(C++版)源代码.zip

    在编程领域,编译原理是理解计算机语言处理过程的关键部分,它涉及词法分析、语法分析、语义分析以及代码生成等步骤。本项目聚焦于其中的语法分析,特别是LL1分析器的实现,这是一种自顶向下、左到右的语法分析方法...

    编译原理语法分析实验代码

    首先,我们有两个文件,"语法分析2.txt"和"语法分析1.txt",它们可能包含了用C语言实现的语法分析器的源代码。C语言是一种广泛应用的编程语言,因其高效性和灵活性,常被用来编写编译器和其他底层系统软件。 语法...

    语义分析 语法分析 词法分析源代码

    编译原理 实验 课程设计语义分析 语法分析 词法分析源代码极为一体的源文件

Global site tag (gtag.js) - Google Analytics