java控制台:关于错误: 需要<标识符>

博主在学习Java第一天遇到编译错误,执行javac HelloWorld.java时提示需要标识符,经检查发现是代码中“static”拼写为“stastic”导致的。

学习第一天遇到的bug

D:\path\jdk\jdk11\bin>javac HelloWorld.java
HelloWorld.java:2: 错误: 需要<标识符>
  public stastic void main(String []args){}

错误原因是static打错了

一、实验目的 加深对词法分析工作过程的理解;强化对词法分析方法的掌握;能够采用C/C++或Java编程语言实现PL/0编译程序的词法分析程序,并使用自己编写程序对PL/0编程语言程序段进行词法分析。 二、相关知识 2.1 PL/0语言编译系统 PL/0语言编译系统由编译程序和解释程序两部分组成,分别称为PL/0编译程序和类P-code解释程序。PL/0语言编译系统的运行过程如下图所示,PL/0语言程序被PL/0编译程序转换为等价的类P-code程序,当编译程序正常结束时,PL/0语言编译系统会调用解释程序(也称类P-code虚拟机),解释执行所生成的目标程序[1]。其中,PL/0编译程序可以使用C/C++、Pascal或Java等各种语言进行编写。 2.2 扩展巴克斯范式 扩展巴克斯范式(Extended Backus-Naur Form, EBNF)是程序语言语法描述的一种形式,其用到的元符号及对应的含义如下表所示。 2.3 词法分析 词法分析是编译的第一个阶段,它的主要任务是从左往右逐个字符地对源程序进行扫描,产生一个个单词序列,用于语法分析。执行词法分析的程序称为词法分析程序或扫描程序。语法分析程序调用词法分析程序的过程如下图所示,其原理为:将词法分析程序设计成一个子程序,每当语法分析程序需要一个单词时,调用该子程序;词法分析程序每得到一次调用,便从源程序文件中读入一些字符,直到识别出一个单词,或是直到下一个单词的第一个字符为止。 PL/0的单词可以划分为5个大类:保留字(关键字)、标识符、运算符、无符号整数和界符。具体如下: (1)保留字:共有13个,包括const,var,procedure,begin,endodd,if, then,call,while,do,read,write。 (2)运算符:共有11个,包括4个整型算数运算符号+、-、*和/,6个比较运算符号<、<=、>、>=、#和=,1个赋值运算符:=。 (3)界符:共有5个,包括(、)、,、;和.。 (4)无符号整数:是由一个或多个数字组成的序列,数字为0,1,2,…,9。 (5)标识符:是字母开头的字母数字序列,字母包括大小写英文字母:a,b,c, ...,z,A,B,…,Z。 PL/0语言中5类单词的EBNF描述如下: <无符号整数>::=<数字>{<数字>} <标识符>::=<字母>{<字母>|<数字>} <字母>::=a|b|...|X|Y|Z <数字>::=0|1|2|...|8|9 <保留字>::=const|var|procedure|begin|end|odd|if|then|call|while| do|read|write <运算符>::=+|-|*|/|<|<=|>|>=|#|=|:= <界符>::=(|)|,|;|. 三、实验内容: 1、设计词法分析系统结构; 2、设计词法分析算法(画出识别单词的DFA); 3、识别出的单词以(种别码,值)的形式保存在符号表中,正确设计和维护符号表; 4、需要注意的点: (1)识别非法字符:如@、&和!等; (2)识别非法单词:数字开头的数字字母组合; (3)标识符和无符号整数的长度不超过8位; (4)能自动识别并忽略/* */及//格式的注释信息; (5)词法分析过程中遇到错误后能继续往下识别,并输出错误信息。
最新发布
09-27
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
红包 添加红包
表情包 插入表情
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值