编译原理-语法分析器的java实现

编译原理课程设计实战:Java实现词法分析与语法分析器 编译原理是计算机科学的核心课程,其中词法分析和语法分析是编译器前端的基础环节。词法分析通过有限自动机将源代码字符流转换为token序列,语法分析则基于文法规则将token流构建为语法树。掌握这两项技术,不仅能深入理解程序语言的解析机制,还能提升代码调试与工程实践能力。在实际应用中,它们广泛用于编译器开发、代码分析工具和领域特定语言实现。本文以北邮课程设计为例,详细讲解如何用Java快速实现可运行的词法分析器和递归下降语法分析器,并分享常见避坑技巧。 阅读详情

语法分析器

实验步骤

1.2.1 1. 文法

  • E->TE’
  • E’->+TE’|ε
  • T->FT’
  • T’->*FT’|ε
  • F->(E)|i

1.2.2 2. 程序描述(LL(1)文法)

本程序是基于已构建好的某一个语法的预测分析表来对用户的输入字符串进行分析,判断输入的字符串是否属于该文法的句子。  
基本实现思想:接收用户输入的字符串(字符串以“#”表示结束)后,对用做分析栈的一维数组和存放分析表的二维数组进行初始化。然后取出分析栈的栈顶字符,判断是否为终结符,若为终结符则判断是否为“#”且与当前输入符号一样,若是则语法分析结束,输入的字符串为文法的一个句子,否则出错若不为“#”且与当前输入符号一样则将栈顶符号出栈,当前输入符号从输入字符串中除去,进入下一个字符的分析。若不为“#”且不与当前输入符号一样,则出错。

1.2.3 3.判断是否LL(1)文法

要判断是否为LL(1)文法,需要输入的文法G有如下要求:

  1. 具有相同左部的规则的SELECT集两两不相交,即: SELECT(A→?)∩ SELECT(A→?)= ?
  2. 如果输入的文法都符合以上的要求,则该文法可以用LL(1)方法分析。
  3. 算法描述如下:
    把第一条产生式的SELECT(0)集放到一个临时数组temp[]中,for(i=1;i<=产生式总数-1;i++)
    求temp的长度length    
    if
    i指向的当前产生式的左部等于上一条产生式的左部
    then     
    把SELECT(i)并入到temp数组中,

If (temp的长度小于length加上SELECT (i)的长度)
返回0       
else   
把temp清空   
把SELECT (i)存放到temp中   
结果返回1;

预测分析表

在这里插入图片描述

实验内容

流程图

在这里插入图片描述

程序代码
public class LL1_Deque {    
	//预测分析表 
	private String[][] analysisTable = new String[][]{ 
		{"TE'","","","TE'","",""}, 
		{"","+TE'","","","ε","ε"}, 
		{"FT'","","","FT'","",""},
		{"","ε","*FT'","","ε","ε"},
		{"i","","","(E)","",""}
	}; 
	//终结符 
	private String[] VT = new String[]{"i","+","*","(",")","#"};  
	//非终结符 
	private String[] VN = new String[]{"E","E'","T","T'","F"};  
	//输入串strToken 
	private static StringBuilder strToken = new StringBuilder("i*(i+()i)");  
	//分析栈stack 
	private Deque stack = new ArrayDeque<>();
	//shuru1保存从输入串中读取的一个输入符号,当前符号     
	private String shuru1 = null;  
	//X中保存stack栈顶符号     
	private String X = null;  
	//flag标志预测分析是否成功     
	private boolean flag = true;  
	//记录输入串中当前字符的位置 
	private int cur = 0;  
	//记录步数 
	private int count = 0;  
	public static void main(String[] args) {  
		System.out.println("所输入的表达式为:" + strToken );
		LL1_Deque ll1 = new LL1_Deque();         
		ll1.init(); 
		ll1.totalControlProgram();         
		ll1.printf();    
	}  
	//初始化 
	private void init() { 
		strToken.append("#");         
		stack.push("#"); 
		System.out.printf("%-20s %-80s %-40s %s\n", "步骤 ", "符号栈 ", "输入串 ", "所用产生式 ");         
		stack.push("E");         
		curCharacter(); 
		System.out.printf("%-10d %-30s %-20s\n", count, stack.toString(), strToken.substring(cur, strToken.length()));   
	}  
	//读取当前栈顶符号    
	private void stackPeek() {         
		X = (String) stack.peekFirst();     
	}  
	//返回输入串中当前位置的字母    
	private String curCharacter() { 
		shuru1 = String.valueOf(strToken.charAt(cur));        
		return shuru1;     
	}  
	//判断X是否是终结符     
	private boolean XisVT() { 
		for (int i = 0; i < (VT.length - 1); i++) {
			if (VT[i].equals(X)) {                 
				return true;             
			}         
		} 
		return false;     
	}  
	//查找X在非终结符中分析表中的横坐标     
	private String VNTI() {         
		int Ni = 0, Tj = 0; 
		for (int i = 0; i < VN.length; i++) {
			if (VN[i].equals(X)) {                 
				Ni = i;             
			}         
		} 
		for (int j = 0; j < VT.length; j++) {             
			if (VT[j].equals(shuru1)) {                 
				Tj = j;             
			}         
		} 
		return analysisTable[Ni][Tj];     
	}  
//	判断M[A,a]={X->X1X2...Xk}     
//	把X1X2...Xk推进栈 
//	X1X2...Xk=ε,不推什么进栈     
	private boolean productionType() {         
		return VNTI() != "";     
	}  
	//推进stack栈 
	private void pushStack() {         
		stack.pop(); 
		String M = VNTI();         
		String ch; 
		//处理TE' FT' *FT'特殊情况         
		switch (M) {             
			case "TE'": 
				stack.push("E'");                 
				stack.push("T");                 
				break;             
			case "FT'": 
				stack.push("T'"); 
				stack.push("F");                 
				break;             
			case "*FT'": 
				stack.push("T'");                 
				stack.push("F");                 
				stack.push("*");                 
				break;             
			case "+TE'": 
				stack.push("E'");                 
				stack.push("T");                 
				stack.push("+");                 
				break;             
			default: 
				for (int i = (M.length() - 1); i >= 0; i--) {                     
					ch = String.valueOf(M.charAt(i));                     
					stack.push(ch);                 
				}                 
				break;         
		} 
		System.out.printf("%-10d %-30s %-20s %s->%s\n", (++count), stack.toString(), strToken.substring(cur, strToken.length()), X, M);     
	}  
	//总控程序 
	private void totalControlProgram() {         
		while (flag) { 
			stackPeek();  
			//读取当前栈顶符号  令X=栈顶符号             
			if (XisVT()) { 
				if (X.equals(shuru1)) {                     
					cur++; 
					shuru1 = curCharacter();                     
					stack.pop(); 
					System.out.printf("%-10d %-30s %-20s \n", (++count), stack.toString(), strToken.substring(cur, strToken.length())); 
				} else { 
					ERROR();                 
				} 
			} else if (X.equals("#")) {                 
				if (X.equals(shuru1)) {                     
					flag = false;                 
				} else { 
					ERROR();                 
				} 
			} else if (productionType()) {  
				if (VNTI().equals("")) {                     
					ERROR(); 
				} else if (VNTI().equals("ε")) {                     
					stack.pop(); 
					System.out.printf("%-10d %-30s %-20s %s->%s\n", (++count), stack.toString(), strToken.substring(cur, strToken.length()), X, VNTI());                 } else { 
					pushStack();                 
				}             
			} else { 
				ERROR();            
			}         
		}     
	}  
	//出现错误 
	private void ERROR() { 
//		System.out.println("输入串出现错误,无法进行分析");  
		System.out.println( false );
		System.exit(0);     
	}  
	//打印存储分析表     
	private void printf() {         
		if (!flag) {  
			System.out.println( true );
//			System.out.println("****分析成功啦!****");         
		} else { 
//			System.out.println("****分析失败了****"); 
			System.out.println( false );
		}     
	} 
}

运行结果

在这里插入图片描述
在这里插入图片描述

实验总结

  1. 基于LL1算法构造语法树
  2. 对于输入的字符串进行语法分析,本实验只针对于加法、乘法、括号做了判断
  3. 返回:
    a) 分析正确,返回true
    b) 分析错误,返回false
    源代码下载:https://download.youkuaiyun.com/download/Simple__Code/12817517
西北工业大学编译原理实验2:Java实现MJAVA语法分析器与AST可视化输出 面向西北工业大学软件学院编译原理课程实验2,提供开箱即用的MJAVA语法分析工具grammarAnalyzer.jar,支持命令行直接解析MJAVA源代码并生成结构清晰的抽象语法树(AST)。资源包内含完整测试用例集(.txt格式)、多份学生参考实现(含C语言AST报告、Pyc+parser方案)、节点结构定义说明、详细语法规范文档、实验要求与指导手册,覆盖词法预处理、文法设计、递归下降/LL(1)分析实现到AST构建全流程。所有Java源码可编译调试,配套run.sh脚本简化运行流程,.gitignore 阅读详情

相关推荐

语法分析器java实现

语法分析器java实现,包含词法分析器。程序代码作为词法分析器的输入,词法分析器的输出作为语法分析器的输入,由语法分析器输出语法分析的结果。

基于Java语言的语法分析器

编译原理的语法分析器

stu_kk的博客 3471

基于java实现的语法分析器及词法分析器

词法分析器 基于java实现的语法分析器及词法分析器

Java实现LL1语法分析器【编译原理】

Java实现LL1语法分析器【编译原理】

小心星的博客 3845

编译原理预测分析LL(1)文法 JAVA实现

1、项目开发工具为MyEclipse2014 2、使用了Struts2框架作为控制层 3、HTML5图形用户界面 4、JAVA语言写后端 该项目完成的功能有:自动消去规则左递归;自动计算出First、Follow集;自动构造预测分析表;可输入句子进行判断。 代码我都写了注释,由于项目后期完成的比较急促,所以代码冗余度比较大,还没有时间进行精简。 如果不需要网页的图形用户界面,可将项目中的算法部分单独取出,也可直接运行得到结果。算法部分位于项目中的MyClass包中。

编译原理之LL1文法的java代码实现

本实验是对LL1文法的代码实现,仅供学习交流参考使用,禁止用于商业用途,如有错误,请批评斧正.同时欢迎各位大佬交流

基于Java实现的语法分析器

Lex 类:词法分析程序Token 类:Token 序列中的元素Production 类:产生式类,包括两个属性,一个是 left(String 类型),表示产生式的左部;另一个是 right(List类型),表示产生式的右部。FirstFollow 类:表示 First 或 Follow 的类,包括两个属性,一个是 left(String 类型),另一个是 right(List类型)。Syntax 类:语法分析程序核心 终结符和非终结符分别用 List类型来表示。

毕业作品网站 3213

java语法分析器源代码LL(1)文法

该系统由java实现,能够对输入串进行词法和语法分析,用LL(1)文法对输入串进行语法分析,在Ecplise运行,编译原理课程设计。

编译原理:LL(1)语法分析器的实现(内含代码详细注释)

自顶向下语法分析器的设计与实现 一、说明 这是一个简单的自顶向下语法分析程序——LL(1) 语法分析程序。自顶向下分析也称面向目标的分析方法,也就是从文法的开始符出发,试图推导出与输入单词串相匹配的句子。 预测分析法(LL(1)方法)的基本思想是:从文法开始符S 出发,从左到右扫描源程序,每次通过向前查看 1 个字符,选择合适的产生式,生成句子的最左推导。 二、程序功能及运行截图 功能...

kailang的博客 6万+

从零到一:构建嵌入式Nginx的模块化架构与跨平台部署实战

本文详细介绍了在ARM32架构的RV1126嵌入式设备上,通过交叉编译技术构建模块化Nginx服务器的完整实战流程。涵盖环境配置、依赖库编译、Nginx核心与http_ssl_module等模块集成、性能优化及部署调试,为嵌入式开发提供高效可靠的Web服务器解决方案。

rock5的博客 203

【编译原理(实验)】语法分析器(Java实现,带UI界面)

该语法分析器附带词法分析器; 通过将词法分析的单词压入语法分析栈中,采用 LL(1) 型文法进行分析; 实现功能 能够识别简单语法,包括: 1.变量声明; 2.变量赋值; 3.变量的运算; 4.if,for,while等循环或条件语句; 5.自动过滤注释语句。

Nonoas的博客 7997

Python实现支付宝转账接口

由于工作需要使用python开发一个自动转账接口,记录一下开发过程。 首先需要在蚂蚁金服上申请开通开发者账户,有了开发者账户就可以使用沙箱进行开发了。 在开发之前我们需要在沙箱应用中填写密钥,密钥的获取可以使用阿里提供的工具包自动生成。 前期准备工作完成了,接下来是编写代码部分。主要用到了python-alipay-sdk库,使用pip安装即可,如果安装的过程中遇到问题推荐使用Anaconda...

FanMLei的博客 8517

语法分析器代码java_编译原理实验:java实现语法分析器

实验方法:递归下降分析法基本思想是,对文法中的每个非终结符编写一个函数,每个函数的功能是识别由该非终结符所表示的语法成分。因此需要分别构造E,E’,T,T’,F 函数来执行自己的识别功能,根据文法的内容顺序决定函数的识别功能。 java程序实现:import java.util.Scanner;public class GrammarAnalysis {static char[] s = new...

weixin_42104947的博客 522

单细胞数据pseudobulks差异分析实战:从聚合到DESeq2

本文详细介绍了单细胞转录组数据分析中pseudobulks(伪散装)方法的实战流程。通过将同一样本的同类型细胞表达值聚合,模拟Bulk RNA-seq数据,再利用DESeq2进行稳健的差异基因分析。该方法有效降低了单细胞数据的技术噪音,特别适用于样本量有限但追求结果稳定性的研究场景,并提供了完整的R代码实现与结果解读指南。

sea99的博客 761

从零到一:Admin.NET中Swagger与Knife4jUI的深度集成实践

本文详细介绍了在Admin.NET框架中深度集成Swagger与Knife4jUI的实践方法,从基础配置到高级定制,包括认证配置、安全增强、界面主题定制等。通过Furion框架简化配置,开发者可以快速构建专业且友好的API文档界面,提升团队协作效率。

defi6farmer的博客 409

编译原理实验:Java实现SLR(1)语法分析器资源下载

编译原理实验:Java实现SLR(1)语法分析器资源下载 去发现同类优质开源项目:https://gitcode.com/ 欢迎来到编译原理实验资源下载页面!这里提供了一个名为“byyl SLR(1).zip”的压缩文件,包含了使用Java语言实现的SLR(1)语法分析器相关代码和文档。 文件内容 本压缩文件中包含了以下内容: Java源代码:实现SLR(1)语法分析器的核心代码。 配套文档:详...

gitblog_06732的博客 365

解决anaconda占用C盘空间过多问题

anaconda就算安装在其他盘,默认会把索引、锁定文件、压缩包等都放到系统盘(C盘),我用了两年,占用30GB。 1. 卸载不用的虚拟环境 查看已安装的虚拟环境 conda env list 卸载不用的、过期的虚拟环境 conda remove -n (要卸载的环境的名字) --all 2. 删除索引缓存、锁定文件、未使用过的包和tar包 conda clean -a 清理完之后,删除了15GB,还剩15GB,舒服了 ...

沉迷单车的追风少年 3万+

编译原理实验:Java实现SLR(1)语法分析器

编译原理实验:Java实现SLR(1)语法分析器

qq_18449299的博客 3693

[RK-Linux] 移植Linux-5.10到RK3399(十)| 配置AP6256模组使能WIFI、BT功能

[RK-Linux] 移植Linux-5.10到RK3399(十)| 配置AP6256模组使能WIFI、BT功能

Systemcall名屋 2984

Nova — GPU/vGPU 虚拟机

目录 文章目录目录云主机使用显卡的实现方式虚拟显卡物理显卡直通物理显卡虚拟化 云主机使用显卡的实现方式 采用虚拟显卡 采用物理显卡直通 采用物理显卡虚拟化 虚拟显卡 虚拟显卡技术,主要用于虚拟机 Remote Console 领域,如:VNC(Virtual Network Computing,虚拟网络计算机),它能将完整的窗口界面通过网络,传输到另一台计算机的屏幕上。 VNC 主要由 VNC server 和 VNC viewer 两部分组成。用户需先将 VNC server 安装在被远程操控的计算

烟云的计算 2430

编译原理实验java_编译原理实验:java实现语法分析器

实验方法:递归下降分析法基本思想是,对文法中的每个非终结符编写一个函数,每个函数的功能是识别由该非终结符所表示的语法成分。因此需要分别构造E,E’,T,T’,F 函数来执行自己的识别功能,根据文法的内容顺序决定函数的识别功能。java程序实现:import java.util.Scanner;public class GrammarAnalysis {static char[] s = new ...

weixin_35910073的博客 781

深度学习工具包 DeepLearningToolbox

深度学习工具包Deprecation notice.-----This toolbox is outdated and no longer maintained.There are much better tools available for deep learning than this toolbox, e.g. [Theano](http://deeplearning.net/software/theano/), [torch](http://torch.ch/) or [tensorflow](http://www.tensorflow.org/)I would suggest you use one of the tools mentioned above rather than use this toolbox.Best, Rasmus.DeepLearnToolbox================A Matlab toolbox for Deep Learning.Deep Learning is a new subfield of machine learning that focuses on learning deep hierarchical models of data.It is inspired by the human brain's apparent deep (layered, hierarchical) architecture.A good overview of the theory of Deep Learning theory is[Learning Deep Architectures for AI](http://www.iro.umontreal.ca/~bengioy/papers/ftml_book.pdf)For a more informal introduction, see the following videos by Geoffrey Hinton and Andrew Ng.* [The Next Generation of Neural Networks](http://www.youtube.com/watch?v=AyzOUbkUf3M) (Hinton, 2007)* [Recent Developments in Deep Learning](http://www.youtube.com/watch?v=VdIURAu1-aU) (Hinton, 2010)* [Unsupervised Feature Learning and Deep Learning](http://www.youtube.com/watch?v=ZmNOAtZIgIk) (Ng, 2011)If you use this toolbox in your research please cite [Prediction as a candidate for learning deep hierarchical models of data](http://www2.imm.dtu.dk/pubdb/views/publication_details.php?id=6284)```@MASTERSTHESIS\{IMM2012-06284, author = "R. B. Palm", title = "Prediction as a candidate for learning deep hierarchical models of data", year = "2012",}```Contact: rasmusbergpalm at gmail dot comDirectories included in the toolbox-----------------------------------`NN/` - A library for Feedforward Backpropagation Neural Networks`CNN/` - A library for Convolutional Neural Networks`DBN/` - A library for Deep Belief Networks`SAE/` - A library for Stacked Auto-Encoders`CAE/` - A library for Convolutional Auto-Encoders`util/` - Utility functions used by the libraries`data/` - Data used by the examples`tests/` - unit tests to verify toolbox is workingFor references on each library check REFS.mdSetup-----1. Download.2. addpath(genpath('DeepLearnToolbox'));Example: Deep Belief Network---------------------```matlabfunction test_example_DBNload mnist_uint8;train_x = double(train_x) / 255;test_x = double(test_x) / 255;train_y = double(train_y);test_y = double(test_y);%% ex1 train a 100 hidden unit RBM and visualize its weightsrand('state',0)dbn.sizes = [100];opts.numepochs = 1;opts.batchsize = 100;opts.momentum = 0;opts.alpha = 1;dbn = dbnsetup(dbn, train_x, opts);dbn = dbntrain(dbn, train_x, opts);figure; visualize(dbn.rbm{1}.W'); % Visualize the RBM weights%% ex2 train a 100-100 hidden unit DBN and use its weights to initialize a NNrand('state',0)%train dbndbn.sizes = [100 100];opts.numepochs = 1;opts.batchsize = 100;opts.momentum = 0;opts.alpha = 1;dbn = dbnsetup(dbn, train_x, opts);dbn = dbntrain(dbn, train_x, opts);%unfold dbn to nnnn = dbnunfoldtonn(dbn, 10);nn.activation_function = 'sigm';%train nnopts.numepochs = 1;opts.batchsize = 100;nn = nntrain(nn, train_x, train_y, opts);[er, bad] = nntest(nn, test_x, test_y);assert(er < 0.10, 'Too big error');```Example: Stacked Auto-Encoders---------------------```matlabfunction test_example_SAEload mnist_uint8;train_x = double(train_x)/255;test_x = double(test_x)/255;train_y = double(train_y);test_y = double(test_y);%% ex1 train a 100 hidden unit SDAE and use it to initialize a FFNN% Setup and train a stacked denoising autoencoder (SDAE)rand('state',0)sae = saesetup([784 100]);sae.ae{1}.activation_function = 'sigm';sae.ae{1}.learningRate = 1;sae.ae{1}.inputZeroMaskedFraction = 0.5;opts.numepochs = 1;opts.batchsize = 100;sae = saetrain(sae, train_x, opts);visualize(sae.ae{1}.W{1}(:,2:end)')% Use the SDAE to initialize a FFNNnn = nnsetup([784 100 10]);nn.activation_function = 'sigm';nn.learningRate = 1;nn.W{1} = sae.ae{1}.W{1};% Train the FFNNopts.numepochs = 1;opts.batchsize = 100;nn = nntrain(nn, train_x, train_y, opts);[er, bad] = nntest(nn, test_x, test_y);assert(er < 0.16, 'Too big error');```Example: Convolutional Neural Nets---------------------```matlabfunction test_example_CNNload mnist_uint8;train_x = double(reshape(train_x',28,28,60000))/255;test_x = double(reshape(test_x',28,28,10000))/255;train_y = double(train_y');test_y = double(test_y');%% ex1 Train a 6c-2s-12c-2s Convolutional neural network %will run 1 epoch in about 200 second and get around 11% error. %With 100 epochs you'll get around 1.2% errorrand('state',0)cnn.layers = { struct('type', 'i') %input layer struct('type', 'c', 'outputmaps', 6, 'kernelsize', 5) %convolution layer struct('type', 's', 'scale', 2) %sub sampling layer struct('type', 'c', 'outputmaps', 12, 'kernelsize', 5) %convolution layer struct('type', 's', 'scale', 2) %subsampling layer};cnn = cnnsetup(cnn, train_x, train_y);opts.alpha = 1;opts.batchsize = 50;opts.numepochs = 1;cnn = cnntrain(cnn, train_x, train_y, opts);[er, bad] = cnntest(cnn, test_x, test_y);%plot mean squared errorfigure; plot(cnn.rL);assert(er<0.12, 'Too big error');```Example: Neural Networks---------------------```matlabfunction test_example_NNload mnist_uint8;train_x = double(train_x) / 255;test_x = double(test_x) / 255;train_y = double(train_y);test_y = double(test_y);% normalize[train_x, mu, sigma] = zscore(train_x);test_x = normalize(test_x, mu, sigma);%% ex1 vanilla neural netrand('state',0)nn = nnsetup([784 100 10]);opts.numepochs = 1; % Number of full sweeps through dataopts.batchsize = 100; % Take a mean gradient step over this many samples[nn, L] = nntrain(nn, train_x, train_y, opts);[er, bad] = nntest(nn, test_x, test_y);assert(er < 0.08, 'Too big error');%% ex2 neural net with L2 weight decayrand('state',0)nn = nnsetup([784 100 10]);nn.weightPenaltyL2 = 1e-4; % L2 weight decayopts.numepochs = 1; % Number of full sweeps through dataopts.batchsize = 100; % Take a mean gradient step over this many samplesnn = nntrain(nn, train_x, train_y, opts);[er, bad] = nntest(nn, test_x, test_y);assert(er < 0.1, 'Too big error');%% ex3 neural net with dropoutrand('state',0)nn = nnsetup([784 100 10]);nn.dropoutFraction = 0.5; % Dropout fraction opts.numepochs = 1; % Number of full sweeps through dataopts.batchsize = 100; % Take a mean gradient step over this many samplesnn = nntrain(nn, train_x, train_y, opts);[er, bad] = nntest(nn, test_x, test_y);assert(er < 0.1, 'Too big error');%% ex4 neural net with sigmoid activation functionrand('state',0)nn = nnsetup([784 100 10]);nn.activation_function = 'sigm'; % Sigmoid activation functionnn.learningRate = 1; % Sigm require a lower learning rateopts.numepochs = 1; % Number of full sweeps through dataopts.batchsize = 100; % Take a mean gradient step over this many samplesnn = nntrain(nn, train_x, train_y, opts);[er, bad] = nntest(nn, test_x, test_y);assert(er < 0.1, 'Too big error');%% ex5 plotting functionalityrand('state',0)nn = nnsetup([784 20 10]);opts.numepochs = 5; % Number of full sweeps through datann.output = 'softmax'; % use softmax outputopts.batchsize = 1000; % Take a mean gradient step over this many samplesopts.plot = 1; % enable plottingnn = nntrain(nn, train_x, train_y, opts);[er, bad] = nntest(nn, test_x, test_y);assert(er < 0.1, 'Too big error');%% ex6 neural net with sigmoid activation and plotting of validation and training error% split training data into training and validation datavx = train_x(1:10000,:);tx = train_x(10001:end,:);vy = train_y(1:10000,:);ty = train_y(10001:end,:);rand('state',0)nn = nnsetup([784 20 10]); nn.output = 'softmax'; % use softmax outputopts.numepochs = 5; % Number of full sweeps through dataopts.batchsize = 1000; % Take a mean gradient step over this many samplesopts.plot = 1; % enable plottingnn = nntrain(nn, tx, ty, opts, vx, vy); % nntrain takes validation set as last two arguments (optionally)[er, bad] = nntest(nn, test_x, test_y);assert(er < 0.1, 'Too big error');```[![Bitdeli Badge](https://d2weczhvl823v0.cloudfront.net/rasmusbergpalm/deeplearntoolbox/trend.png)](https://bitdeli.com/free "Bitdeli Badge")

编译原理:SNL语言语法分析器Java实现

SNL语言语法分析器 很详细

qq_36795903的博客 1816

霍尼韦尔SoftMaster使用说明

霍尼韦尔SoftMaster使用说明

复分析 阿尔福斯(Ahlfors) 第三版答案 英文

答案分为十章,有部分习题没有答案,全英文复分析阿尔福斯(Ahlfors) 第三版答案

java语法分析_编译原理实验:java实现语法分析器

实验方法:递归下降分析法基本思想是,对文法中的每个非终结符编写一个函数,每个函数的功能是识别由该非终结符所表示的语法成分。因此需要分别构造E,E’,T,T’,F 函数来执行自己的识别功能,根据文法的内容顺序决定函数的识别功能。java程序实现:import java.util.Scanner;public class GrammarAnalysis {static char[] s = new ...

weixin_32795109的博客 722

IMSL CNL 7.0.0 (x86-64)Crack

IMSL CNL 7.0.0 (x86-64)Crack intel的算法库破解文件,这是C++版本的破解文件

java实现语法分析器_编译原理基础 java的编译 解释执行 编译执行

学习于:https://www.bilibili.com/video/av17649289/?p=1 参考:《深入理解java虚拟机》什么是编译?我们知道,计算机语言一般被分为3种,高级语言,汇编语言,机器语言。机器语言是一串二进制序列,全部是由0或1组成。能直接被计算机识别。如:c706是操作码,整个语句的意思是将数值2存放到地址0000的地方。这里是使用16禁止表示。机器语言与人类表达习惯想去...

weixin_39558221的博客 972

编译原理实验-LL1语法分析器(自动生成First集、Follow集求法)java实现

编译原理实验-LL1语法分析器(自动生成First、Follow)java 博主在做实验时,参考众多他人代码,发现bug众多,在[@moni_mm]代码基础上,与伙伴把能看到的BUG都做出修正,同时增添了一个GUI展示。再次我将代码做出讲解。完整代码最下方贴出。(https://blog.youkuaiyun.com/moni_mm/article/details/80599843) 一、数据结构 下文程序运行的问法为: static String[] grammarStr = {"E->TG" ,"G->

qq_43046501的博客 6292
上一篇: 编译原理-词法分析器的java实现
下一篇: Oracle数据库连接报错
夕卜
博客等级 码龄6年 18粉丝 28原创
评论 3
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

当前余额3.43元 前往充值 >
需支付:10.00元
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付元
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值