我有以下Antlr语法:
grammar MyGrammar;
doc : intro planet;
intro : 'hi';
planet : 'world';
MLCOMMENT
: '/*' ( options {greedy=false;} : . )* '*/' { $channel = HIDDEN; };
WHITESPACE : (
(' ' | '\t' | '\f')+
|
// handle newlines
( '\r\n' // DOS/Windows
| '\r' // Macintosh
| '\n' // Unix
)
)
{ $channel = HIDDEN; };
Run Code Online (Sandbox Code Playgroud)
在ANTLRWorks 1.2.3解释器,输入hi world,hi/**/world和hi /*A*/ world工作,符合市场预期.
但是,hiworld也应该接受不应该起作用的输入.我怎么做hiworld失败?如何在"hi"和"world"之间强制至少有一个空格(或注释)? …
可能会迟到,今晚修复一些错误,但也许SO可以帮助我.有没有人知道是否有办法"跟踪"一些被忽略的异常发生的地方?
基本上我在System.Drawing中发现了一些System.OverflowExceptions,导致某些图形无法绘制(红色X盒综合症).
问题是,我只能从Debug窗口告诉你,并且不能为我的生活找到这个被抛出的地方.我猜这个发生在哪里的编码器写了一个
试试{something} finally {blah}
要么...
尝试{something} catch {// Blah blah blah}
如果我是SOL那么,也许有人可能知道System.Drawing中的哪些方法可能导致StackOverflow感知......
谢谢!
如何忽略文件中的行?
例:
如果您知道文件中的第一行将以say,a或b开头,其余行以c结尾,那么如何解析文件以便忽略以a或b开头的行,并将结束c的行转换为a嵌套列表?
到目前为止我所拥有的:
fname = raw_input('Enter file name: ')
z = open(fname, 'r')
#I tried this but it converts all lines to a nested list
z_list = [i.strip().split() for i in z]
Run Code Online (Sandbox Code Playgroud)
我猜我需要一个for循环.
for line in z:
if line[0] == 'a':
pass
if line[0] == 'b':
pass
if line[-1] == 'c':
list_1 = [line.strip().split()]
Run Code Online (Sandbox Code Playgroud)
以上是一般的想法,但我是制作死代码的专家!如何渲染它不死?
谢谢,Seafoid.
我正在尝试在ac#应用程序中读取文本文件,但我不想读取前两行或最后一行.文件中有8行,所以有效地我只想阅读第3,4,5,6和7行.有什么方法可以做到这一点吗?
示例文件
USE [Shelley的其他数据库]
CREATE TABLE db.exmpcustomers(
fName varchar(100)NULL,
lName varchar(100)NULL,
dateOfBirth date NULL,
houseNumber int NULL,
streetName varchar(100)NULL
)ON [PRIMARY]
编辑
好吧,所以,我已经将Callum Rogers的答案应用到我的代码中,并且出于某种原因,它适用于我编辑的文本文件(我创建了一个文本文件,其中包含我不想省略的行)并且它完全符合它的要求,但每当我使用原始文本文件(上面)尝试它时,它会抛出异常.我在DataGrid中显示此信息,我认为这是抛出异常的地方.
有任何想法吗?
我有一堆需要转储到xaml的WPF控件。一些控件包含存储在其Tag属性中的不可序列化的对象。在保存Xaml时,我需要忽略它们,因为我需要布局本身,但是XamlWriter.Save会生成一条错误消息,指出它们不可序列化。
我有一个包含Maven项目的目录.它看起来像这样:
.hg
.idea
parentProject
project1
.idea
docs
src
target
pom.xml
project2
.idea
docs
src
target
pom.xml
target
pom.xml
.hgignore
Run Code Online (Sandbox Code Playgroud)
我想忽略我所有项目中的.idea和target目录.我已经包含了.idea和target目录,.hgignore但它只忽略了哪个目录中的目录.hgignore.这意味着,只有在根目录.idea和target被忽略.
如果我.hgignore在所有子项目中添加文件,则不会更改任何文件仍然不会被忽略.
我的忽略列表如下所示:
build
dist
target
faces-config.NavData
.idea
.iml
Run Code Online (Sandbox Code Playgroud)
我应该如何指定从各地.hgignore获取.idea和target忽略?
我有一个USB温度记录器,每隔30秒上传到Cosm.我遇到的问题是,每运行5分钟,当我运行命令时,它会报告文本错误而不是数字.
所以我试图找到一种方法来让它循环,直到它收到一个数字或只是忽略文本并恢复脚本(否则退出,否则).
我非常不优雅的解决方案是这样做:
# convert regular error message to number
if temp_C == "temporarily": # "temporarily" is used as it happens to be the 4th word in the error message
temp_C = 0.0
Run Code Online (Sandbox Code Playgroud)
目前的代码是:
while True:
# read data from temper usb sensor
sensor_reading=commands.getoutput('pcsensor')
#extract single temperature reading from the sensor
data=sensor_reading.split(' ') #Split the string and define temperature
temp_only=str(data[4]) #knocks out celcius reading from line
temp=temp_only.rstrip('C') #Removes the character "C" from the string to allow for plotting
# calibrate …Run Code Online (Sandbox Code Playgroud) 出于某种原因,当我到达某个地点时,我必须按Enter两次才能让它提交.我添加了clear以防止它跳过输入和ignore()以防止它在缓冲区中保留任何额外的字符.我输入我的输入然后它下降到一个新的行,我Enter再次点击它输入输入并继续该程序没有问题,但我想知道为什么.这是一段代码片段:
cin.ignore();
cout << "Enter Student Major (ex. COSC): ";
cin.getline(student.major, 6);
for(int i = 0; i < sizeof(student.major); i++)
student.major[i] = toupper(student.major[i]);
cin.clear();
cin.ignore(numeric_limits<streamsize>::max(), '\n');
Run Code Online (Sandbox Code Playgroud)
有什么建议?
我正在用C++创建一个简单的控制台应用程序,它从用户那里获取字符串和字符串输入.为了简单起见,我想使用string和char数据类型将输入从cin传递给.
要获取字符串输入,我使用的是getline方法:
string var;
cin.ignore(); //I used ignore() because it prevents skipping a line after using cin >> var
getline(cin, var);
Run Code Online (Sandbox Code Playgroud)
要获取char输入,我使用cin >> var方法:
char var;
cin >> var;
Run Code Online (Sandbox Code Playgroud)
这在大多数情况下都可以正常工作.但是,当我使用getline输入字符串时,它会忽略我的字符串的第一个字符.
是否可以使用getline和cin >>而不必使用ignore,或者我可以调用的方法以确保不跳过我的第一个字符?
这是我使用getline和cin >>的完整代码示例:
string firstName;
string lastName;
char gender = 'A';
cout << "First Name: ";
cin.ignore();
getline(cin, firstName);
cout << "Last Name: ";
cin.ignore();
getline(cin, lastName);
while(genderChar != …Run Code Online (Sandbox Code Playgroud) 我正在编写一个git钩子,拼写检查我的提交消息.这是我到目前为止:
#!/bin/sh
ASPELL=$(which aspell)
WORDS=$($ASPELL list < "$1")
if [ -n "$WORDS" ]; then
echo -e "Possible spelling errors found in commit message. Consider using git commit --amend to change the message.\n\tPossible mispelled words: " $WORDS
fi
Run Code Online (Sandbox Code Playgroud)
我不知道如何告诉aspell我想忽略缩进的行(两个或多个空格).这将避免有关文件名,注释等的恼人消息.
谢谢!