尝试通过ANTLR4 lexer/parser抓取给定PHP文件的所有空行(仅行号)。我使用的语法在GitHub Antlr语法for PHP上可用。
定义为:
Whitespace: [ \t\r\n]+ -> skip;
Whitespace: (
' '
| '\t'
| '\r' '\n' { newline(); }
| '\n' { newline(); }
);
要测试的示例PHP:
<?php
//02-5002201-00001 5002201 - Machine hours test
function test()
{
/* Name: Test.php
Title: Demo
by: XYZ
*/
if (true && false)
{
echo "aa";
}
//TODO
echo <<<SEGDTA
<link rel="stylesheet" type="text/css" href="ui.css"/>
<script type="text/javascript" src="min.js"></script>
SEGDTA;
}
?>
试试下面这样的方法:
lexer grammar DemoLexer;
EmptyLine
: {super.getCharPositionInLine() == 0}? [ \t]* '\r'? '\n'
;
Whitespace
: [ \t\r\n] -> skip
;
Other
: .
;
如果运行以下测试类:
import org.antlr.v4.runtime.CharStreams;
import org.antlr.v4.runtime.Token;
public class Main {
public static void main(String[] args) {
String source = "foo\n" +
"\n" +
"bar\n" +
" \n" +
" baz \r\n" +
" \t\t\n" +
"\tend\n\n";
DemoLexer lexer = new DemoLexer(CharStreams.fromString(source));
for (Token t : lexer.getAllTokens()) {
String name = lexer.getTokenNames()[t.getType()];
String text = t.getText().replace("\r","\\r").replace("\n","\\n").replace("\t","\\t");
System.out.printf("%-20s '%s'\n", name, text);
}
}
}
这将被打印:
Other 'f'
Other 'o'
Other 'o'
EmptyLine '\n'
Other 'b'
Other 'a'
Other 'r'
EmptyLine ' \n'
Other 'b'
Other 'a'
Other 'z'
EmptyLine ' \t\t\n'
Other 'e'
Other 'n'
Other 'd'
EmptyLine '\n'
参见:http://www.antlr.org/api/java/org/antlr/v4/runtime/tokensource.html#GetCharPositionInline()
问题内容: 我正在使用一些房屋更换产品,使我可以隐藏通知栏,而这正是我真正喜欢的东西。 所有信息都可以用一些小部件代替,但是我也想显示通知。 当我已经开发了一些应用程序时,我想知道是否存在允许应用程序获取所有通知的命令行。我打算将此添加到小部件或烤面包。 非常感谢您提供任何线索或帮助。 问题答案: 从Android API级别18(Android 4.3)开始,提供了一个类 Notificatio
问题内容: 对于公司项目,我需要使用PHP和JavaScript(包括jQuery)创建一个Web抓取应用程序,该应用程序将从客户网站的每个页面提取特定数据。抓取应用需要为每个页面获取两种类型的数据:1)确定是否存在具有特定ID的某些HTML元素,以及2)提取特定JavaScript变量的值。每个页面上的JS变量名称都相同,但是值通常不同。 我相信我知道如何获得第一个数据要求:使用PHP file
问题内容: [我想做的事] 刮擦下面的网页以获取二手车数据。 http://www.goo- net.com/php/search/summary.php?price_range=&pref_c=08,09,10,11,12,13,14&easysearch_flg=1 [问题] 刮整个页面。在上面的网址中,仅显示前30个项目。我可以在下面编写的代码中删除这些内容。指向其他页面的链接显示为1 2
我使用youtube API制作了一个应用程序。首先,我使用< code > retrieve 加载视频列表,然后我继续使用< code > retrieve 加载列表中视频的所有信息。 由于<code>列表视图<code>支持刷新和加载更多,我需要<code>取消<code>所有调用请求。 我知道调用了<code>cancel()cancel()。 还有更好的解决方案吗?
问题内容: 我需要插入所有随发布发送的变量,它们是每个代表用户的复选框。 如果我使用GET,将会得到如下信息: 我需要在数据库中插入变量。 如何获取所有通过POST发送的变量?用逗号或其他东西隔开的数组或值? 问题答案: 该变量将自动填充。 尝试查看内容。 您可以这样访问各个值: 当然,这假设您的表单使用的是典型的表单编码(即 如果您的帖子数据采用其他格式(例如JSON或XML),则可以执行以下操