首页>>后端>>Spring->Javaparser教师Big(java编写一个teacher类)

Javaparser教师Big(java编写一个teacher类)

时间:2023-12-05 本站 点击:0

java parser

java parser是什么,让我们一起了解一下?罩斗闷

Java Parser是基于JavaCC作为Java语言词法解析的工具,支持Java语言生成AST(Abstract Syntax Tree抽象语法树),在AST基础上进行类型推断分析,支持修改AST从而生成新的Java文件内容,支持从Java 1.0到14所有的版本的AST解析。

AST结构允许以一种简单的编程方式使用Java代码。可以专门操作Java文件,使用起来也更简单物弯。它提供了一种方便的机制,可以使用我们称为“访客支持”的功能来导航树。这使开发人员能够专注于在源代码中识别有趣的模式,销缺而不必编写费力的树遍历代码。该库的最终主要功能是能够操纵源代码的基础结构。然后可以将其写入文件,为开发人员提供构建自己的代码生成软件的便利。

那么我们使用JavaParser theere时,总是希望进行很多操作。

例如,我们希望对整个项目进行操作,因此在给定目录的情况下,我们将探索所有Java文件。 此类应有助于完成此任务:

package me.tomassetti.support; import java.io.File; public class DirExplorer { public interface FileHandler { void handle(int level, String path, File file); } public interface Filter { boolean interested(int level, String path, File file); } private FileHandler fileHandler; private Filter filter; public DirExplorer(Filter filter, FileHandler fileHandler) { this.filter = filter; this.fileHandler = fileHandler; } public void explore(File root) { explore(0, "", root); } private void explore(int level, String path, File file) { if (file.isDirectory()) { for (File child : file.listFiles()) { explore(level + 1, path + "/" + child.getName(), child); } } else { if (filter.interested(level, path, file)) { fileHandler.handle(level, path, file); } } } }

对于每个Java文件,我们首先要为每个Java文件构建一个抽象语法树(AST),然后对其进行导航。 这样做有两种主要策略:

1、使用访客:要在特定类型的AST节点上进行操作时,这是正确的策略。

2、使用递归迭代器:这允许处理所有类型的节点。

请问怎么用java一行一行的读取ini文件,然后进行内容匹配,最后输出一个list? 已有的是一个

你好,你的问题是:如何在一个class里使销洞吵用另一个class的应用。

先看你Parser类上方四行代码

package parseme;

import java.util.ArrayList;

import java.util.Calendar;

import java.io.*;

public class Parser {

    private static ArrayListPerson personen = new ArrayList();

    //...

}

Java里的关键字import,意思是导入类(无需后缀.class)。即你可以在导入某个类之后,按照规范调用该类的属性和行为。表现为:

import packageName.ClassName;

//如上述代码,Parser中定义了Person类的集合personen

packageName就是代码第一行的,称为“包名”,简单理解就是路径

package parseme;

Java规范允许同一包下的类在互相使用时无需显示导入类(另默认导入了java.lang路径下的所有类)。所以Parser类可以在代码中直接调用Person类。因为它们属于同亏侍一路径

package parseme;

//import ...

public class Person{

    //...

}

使用另一个类的应用(属性和行为),你可以看到Parser类中的parse方法

Person p = new Person(vname, nname, birthd);

//...

System.out.println(p);

//等等,均为你所说的使用另一个类的应用

类中成员表现形式有两种:类变量/方法和实例变量/方法

类变量通常用static关键词修饰,如

System.out.println(p);//System是java.lang包下的类,out是System中一个由static修饰颤闷过的变量(类变量),out本身是一个实例,它提供了实例方法println()。

实例变量只允许类的对象使用,如

Person p = new Person(vname, nname, birthd);//实例化Person、新建Person对象

//Person类中有许多没有static关键词修饰的变量和方法,只有实例化之后才可以使用它们。

p.toString();

利用JAVACC将HQL-SQL

首先下载JAVACC 编写 jj文件 定义要空开的分隔符SKIP :{  | \t | \n | \r | \f } 定义关键字 from 为HQL的关键字 Teacher是用户输入的类名 应当是一个喊梁宏任意由字母和数字组成的单词 我们可以用正则表达式:[ A Z a z ]来表示 TOKEN: /*RESERVED TOKENS FOR UQL */{FROM: from   | FROM_OBJECT:([ A Z a z ])+ } 接下来定义一下输入的顺序与规范void expression() :{ Token tTable;}{ ( FROM tTable = FROM_OBJECT ) { sqlSB append( SELECT * ); sqlSB append( FROM ) append(tTable image); }}最后就是写解析代码 以便生成java代码PARSER_BEGIN(HQLParser)import java lang StringBuffer;import java io StringReader;import java io Reader;public class HQLParser {private static StringBuffer sqlSB;/**A String based constructor for ease of use  **/public HQLParser(String s) 郑册{this((Reader)(new StringReader(s))); sqlSB = new StringBuffer();}public String getSQL(){return sqlSB toString();}  public static void main(String args[]){try{ String query = args[ ]; HQLParser parser = new HQLParser(query);  parser parse(); System out println( SQL: +parser getSQL());}catch(Exception e){渣雹 e printStackTrace();}}public void parse(){ try { expression(); } catch(Exception e){e printStackTrace();}}}PARSER_END(HQLParser)接下来到dos下输入:javacc debug_parser test jj debug_parser:用来输出语法树这时候会生成 个java文件 每个文件的作用以后会详细说明这时候只需要javac * java即可编译全部的java文件然后执行java HQLParser from Teacher 这时候屏幕上就会显示出 select * from Teacher lishixinzhi/Article/program/Java/JSP/201311/19735


本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。
如若转载,请注明出处:/Spring/12650.html