代码语言
.
CSharp
.
JS
Java
Asp.Net
C
MSSQL
PHP
Css
PLSQL
Python
Shell
EBS
ASP
Perl
ObjC
VB.Net
VBS
MYSQL
GO
Delphi
AS
DB2
Domino
Rails
ActionScript
Scala
代码分类
文件
系统
字符串
数据库
网络相关
图形/GUI
多媒体
算法
游戏
Jquery
Extjs
Android
HTML5
菜单
网页交互
WinForm
控件
企业应用
安全与加密
脚本/批处理
开放平台
其它
【
Java
】
词法分析器
作者:
shanxi_liyong
/ 发布于
2015/11/12
/
838
//package compiler1; import java.io.BufferedReader; import java.io.IOException; import java.io.InputStreamReader; //import java.util.Arrays; public class zcs { public static void main(String[] args) { // TODO Auto-generated method stub try{ BufferedReader myReader = new BufferedReader(new InputStreamReader( System.in)); String ch=myReader.readLine(); System.out.println(zcs.chToNum(ch)); } catch(IOException e) { } //s.chToNum(ch); } private static final String[] PT = { ">=", "<=", "==", "=", ">", "<", "+", "*", "/", "-", "{", "}", ",", ";", "(", ")", "[", "]" }; private static final String[] KT = { "int", "main", "void", "if", "else", "char" }; private static int chToNum(String ch) { int Num = 0; char ct[] = ch.toCharArray(); // PT界符运算符 for (int j = 0; j < PT.length; j++) { if (ch.equals(PT[j])) { Num = j + 10; return Num; } } // KT界符关键字 for (int j = 0; j < KT.length; j++) { if (ch.equals(KT[j])) { Num = j + 4; return Num; } } // // CT常数(数字) // if (isNUM(ch)) { // return 3; // } // cT常数(字符) // if (ct[0] == '\'' && ct[ct.length - 1] == '\'' && ct.length == 3) { if(Character.isLetter(ct[0])) { if(ct.length==1&&ct[0]!='A'&&ct[0]!='X') return 1; } // sT常数(字符串) if (ct[0] == '"' && ct[ct.length - 1] == '"') { return 2; } // iT常数(标识符) if (Character.isLetter(ct[0]) || ct[0] == '_') { if (ct.length == 1) { return 0; } else if((ch=="Ch")||(ch=="A")||(ch=="X")) return 0; for (int j = 1; j < ct.length; j++) { if (Character.isLetter(ct[j]) | Character.isDigit(ct[j]) | ct[j] == '_') { if (j < ct.length - 1) { continue; } else { return 0; } } else { break; } } } //cT常数; if (isNUM(ch)) { return 3; } return 999999; } private static boolean isNUM(String ch) { //int Num = 0; char ct[] = ch.toCharArray(); if((!Character.isLetter(ct[0]))&&(ct[0] >=0) && (ct[ct.length - 1] <=9)) // TODO Auto-generated method stub { for(int i=0;i<ct.length-1;i++) if((ct[i]>=0)||(ct[i]<=9)||(ct[i]=='.')&&(!Character.isLetter(ct[i]))) return true; } else if(ct[0]=='"'&&ct[ct.length-1]=='"') return false; return true; } }
试试其它关键字
词法分析器
同语言下
.
List 切割成几份 工具类
.
一行一行读取txt的内容
.
Java PDF转换成图片并输出给前台展示
.
java 多线程框架
.
double类型如果小数点后为零则显示整数否则保留两位小
.
将图片转换为Base64字符串公共类抽取
.
sqlParser 处理SQL(增删改查) 替换schema 用于多租户
.
JAVA 月份中的第几周处理 1-7属于第一周 依次类推 29-
.
java计算两个经纬度之间的距离
.
输入时间参数计算年龄
可能有用的
.
C#实现的html内容截取
.
List 切割成几份 工具类
.
SQL查询 多列合并成一行用逗号隔开
.
一行一行读取txt的内容
.
C#动态修改文件夹名称(FSO实现,不移动文件)
.
c# 移动文件或文件夹
.
c#图片添加水印
.
Java PDF转换成图片并输出给前台展示
.
网站后台修改图片尺寸代码
.
处理大图片在缩略图时的展示
shanxi_liyong
贡献的其它代码
(
10
)
.
iOS索引搜索核心代码
.
词法分析器
.
循环创建目录
.
freemark实现,简单的替换
.
计算斐波那契数列
.
字符串切片,拼接字符串处理文本
.
图片添加水印和压缩
.
图片延迟加载
.
javaBean中根据方法名获取属性名
.
复制属性的值
Copyright © 2004 - 2024 dezai.cn. All Rights Reserved
站长博客
粤ICP备13059550号-3