java - java中的特殊“%”
问题描述
当我阅读 Eclipse 的源代码时,我发现了一个名为“$className$.java”的文件。其部分内容如下:
package $packageName$;
% if viewType =="treeViewer"
import java.util.ArrayList;
% endif
import org.eclipse.swt.widgets.Composite;
import org.eclipse.ui.part.*;
import org.eclipse.jface.viewers.*;
import org.eclipse.swt.graphics.Image;
import org.eclipse.jface.action.*;
import org.eclipse.jface.dialogs.MessageDialog;
import org.eclipse.ui.*;
import org.eclipse.swt.widgets.Menu;
import org.eclipse.swt.SWT;
% if viewType == "treeViewer"
import org.eclipse.core.runtime.IAdaptable;
% endif
% Options in the template:
%
% packageName
% className
% viewName
% viewCategoryId
% viewCategoryName
% viewType
% doubleClick
% popup
% localToolbar
% localPulldown
% sorter
% filter
% drillDown
public class $className$ extends ViewPart {
%if viewType == "tableViewer"
private TableViewer viewer;
%else
% if viewType == "treeViewer"
private TreeViewer viewer;
private DrillDownAdapter drillDownAdapter;
% endif
%endif
%if (localToolbar || localPulldown || popup)
private Action action1;
private Action action2;
%endif
%if doubleClick
private Action doubleClickAction;
%endif
我试图提取 if 的 AST,然后出现错误。java中的“% if”和“% endif”是什么意思?我怎样才能得到它的AST?
解决方案
这不是一个有效的 Java 源文件,它要么是用于生成某种类型的 Java 文件的 Eclipse 文件模板,要么是一个在成为真正有效的 Java 源文件之前首先需要通过预处理器运行的文件。
如果是第一个,那么您甚至不应该尝试从中获取 AST,如果是后者,您需要找出该项目使用的预处理器(Java 中没有标准的预处理器),并通过它运行文件并从预处理步骤的结果中提取 AST。
推荐阅读
- python - df.loc 和值计数
- java - 为什么即使定义了字符串,java也找不到符号?
- android-studio - 错误:在 SDK、PATH 或 cmake.dir 属性中找不到 CMake '3.19.0' 或更高版本
- python - 为什么python if while以死循环结束
- python-3.x - 如何找到指定的字符串并解析接下来的 3 行,如果没有指定的字符串则跳过行
- wordpress - Wordpress 没有为错误的类别名称显示 404
- javascript - 在节点js / javascript中的map函数之外获取异步等待数据
- javascript - require.context 加载未定义
- javascript - 如何使用 date-fns 获取准确的时区?
- elasticsearch - 用于匹配“AABB”、“ABCABC”的 Elasticsearch 正则表达式