我正在阅读有关AST(抽象语法树)的内容,但我看到的所有示例都使用了以下表达式:
a + b * c
Run Code Online (Sandbox Code Playgroud)
哪个可以用类似lispy的语法表示为:
(+ a (* b c) )
Run Code Online (Sandbox Code Playgroud)
这相当于:
+
/ \
a *
/ \
b c
Run Code Online (Sandbox Code Playgroud)
我的问题是OOPL中一个类的AST会是什么样子?
我天真的尝试是为了这个Java代码:
class Person {
String name;
int age;
public String toString() {
return "name";
}
}
Run Code Online (Sandbox Code Playgroud)
方法是:
;Hand written
(classDeclaration Person
(varDeclaration String name)
(varDeclaration int age )
(funcDeclaration String toString
(return "name")
)
)
Run Code Online (Sandbox Code Playgroud)
但我不太确定我对真正的AST代表有多近或多远.
这取决于我选择的语言.需要多少细节?这些"xyzDeclaraction"是否需要或可能如下:
(Person (String name) (int age))
Run Code Online (Sandbox Code Playgroud)
在哪里可以看到实际编程语言的"真实"表示以了解更多信息.
java compiler-construction programming-languages abstract-syntax-tree
如何在java中管理两个JRadioButtons,以便一次只能选择其中一个?java中是否有任何方法可以解决这个问题,或者您需要构建自己的逻辑?
我很久以前就安装了Xcode.
显然我没有检查"UNIX开发支持"复选框.
现在我想拥有它们但是当我点击安装时会出现这样的情况:
" UNIX开发支持"复选框已禁用
问:如何安装UNIX开发支持?有没有一种方法来运行一些脚本,从创建所有需要链接/Developer/到/usr/bin?
编辑: 注意:这是旧的Xcode 3. Xcode 4的屏幕和工具名称不同("Unix命令行工具")
例如,我想压缩存储在/Users/me/Desktop/image.jpg中的文件
我做了这个方法:
public static Boolean generateZipFile(ArrayList<String> sourcesFilenames, String destinationDir, String zipFilename){
// Create a buffer for reading the files
byte[] buf = new byte[1024];
try {
// VER SI HAY QUE CREAR EL ROOT PATH
boolean result = (new File(destinationDir)).mkdirs();
String zipFullFilename = destinationDir + "/" + zipFilename ;
System.out.println(result);
// Create the ZIP file
ZipOutputStream out = new ZipOutputStream(new FileOutputStream(zipFullFilename));
// Compress the files
for (String filename: sourcesFilenames) {
FileInputStream in = new FileInputStream(filename);
// Add ZIP entry to …Run Code Online (Sandbox Code Playgroud) 我想匹配:
some.name.separated.by.dots
Run Code Online (Sandbox Code Playgroud)
但我不知道怎么做.
我可以像这样匹配一个部分
\w+\.
Run Code Online (Sandbox Code Playgroud)
怎么说"重复那个"
我有一个使用Netbeans构建的示例代码.
它有一个build.xml文件,所以我下载了ant并尝试运行它.
我有这个错误信息:
...... nbproject\build-impl.xml:76: Platform is not correctly set up
Run Code Online (Sandbox Code Playgroud)
对于我所看到的,这可以通过"简单地"下载Netbeans并从那里运行样本来解决,但是......我不想安装它来运行10个文件样本.
是否有使用Java运行Netbeans项目的解决方法?什么是我必须修改的正确的.properties文件?
这不是一个"问题"所以我正在制作CW.
该
assert
Run Code Online (Sandbox Code Playgroud)
关键字很棒!
它应该让你觉得你的自己对你编写的代码更有信心,但是,直到今天,当我创建一个小型测试类(<20行)时,我意识到自从它被引入以来从未使用它.
哎呀!我几乎没有使用记录器,这确实非常有用,但直到今天我才意识到我不使用断言.
你使用断言吗?如果不是,那是什么原因?
什么是JSON/JavaScript的日期文字(如果存在这样的东西?)
我正在尝试执行一些超级简单的解析o日志文件,所以我使用这样的String.split方法:
String [] parts = input.split(",");
Run Code Online (Sandbox Code Playgroud)
并且非常适合输入:
a,b,c
Run Code Online (Sandbox Code Playgroud)
要么
type=simple, output=Hello, repeat=true
Run Code Online (Sandbox Code Playgroud)
只是说些什么.
我怎么能逃脱逗号,所以它与中间逗号不匹配?
例如,如果我想在其中一个部分中包含逗号:
type=simple, output=Hello, world, repeate=true
Run Code Online (Sandbox Code Playgroud)
我想的是:
type=simple, output=Hello\, world, repeate=true
Run Code Online (Sandbox Code Playgroud)
但我不知道如何创建拆分以避免匹配逗号.
我试过了:
String [] parts = input.split("[^\,],");
Run Code Online (Sandbox Code Playgroud)
但是,嗯,不起作用.