栏目分类:
子分类:
返回
名师互学网用户登录
快速导航关闭
当前搜索
当前分类
子分类
实用工具
热门搜索
名师互学网 > IT > 软件开发 > 后端开发 > Java

编译原理,实验一简单的词法分析(java实现)

Java 更新时间: 发布时间: IT归档 最新发布 模块sitemap 名妆网 法律咨询 聚返吧 英语巴士网 伯小乐 网商动力

编译原理,实验一简单的词法分析(java实现)

一、实验目的
通过设计编制调试一个具体的词法分析程序,加深对词法分析原理的理解。并掌握在对程序设计语言源程序进行扫描过程中将其分解为各类单词的词法分析。
二、词法分析器的功能
完成对源程序字符串的词法分析,输出形式是源程序的五类单词符号的二元式代码,并保存在文件中。
三、设计内容
选择以下三个任务之一,编写其词法分析程序。


1、初级任务
已知某语言标识符由小写字母、数字和下划线3中符号组成,起始字符为字母,结束符为字母或数字,且下划线字符两两不相连,对该标识符集,试写出描述它的正规式及DFA,编写识别它的程序。

分析需要实现的功能:

  • 1、开头只能为字母;2、字符串只能出现字母数字下划线;3、结尾只能是字母或数字;4、不能连续出现两个‘_’。
  • 这个初级任务还是比较简单的,我的思路是把输入的字符串存入数组,用for循环遍历,ASCII码进行判断这些条件,如果符合就返回true输出语句,不符合返回false。
import java.util.Scanner;

// _的ASCII码:95
public class shiyan1_1 {
    private static int flag = 0;

    public static void main(String[] args) {
        Scanner sc = new Scanner(System.in);
        System.out.println("请输入字符串:");
        String s = sc.next();

        char[] chars = s.toCharArray();

        shiyan1_1.judge(s);
        if (shiyan1_1.judge(s) && chars[s.length()-1]!='_')
            System.out.println("输入正确:  "+s);
        else
            System.out.println("不合法的字符串!");
    }

    public static boolean judge(String s) {
        char[] chars = s.toCharArray();
        int flag = 0;
        int numSum = 0;

        if (chars[0] >= 65 && chars[0] <= 90 || chars[0] >= 97 && chars[0] <= 122)      //大小写字母
            for (int i = 0; i < chars.length; i++) {
                if(chars[i]>=65 && chars[i]<=90 || chars[i]>=97 && chars[i]<=122 || chars[i]==95 || chars[i]>=48 && chars[i]<=57){
                    numSum+=1;
                    if(chars[i]=='_'){
                        flag+=1;
                        if (flag == 2)
                            break;
                    }else flag=0;
                }
            }

        if (numSum == chars.length && flag < 2) {
            return true;
        }
        return false;
    }
}

转载请注明:文章转载自 www.mshxw.com
本文地址:https://www.mshxw.com/it/343141.html
我们一直用心在做
关于我们 文章归档 网站地图 联系我们

版权所有 (c)2021-2022 MSHXW.COM

ICP备案号:晋ICP备2021003244-6号