标签: expression

ANSI C中的parens表达式包含复合语句(块)吗?

浏览Linux内核源代码时,我发现了一段代码,其中括号括起来的语句块被视为表达式a laisp(或ML),即表达式,其值是最后一个语句的值.

例如:

int a = ({
    int i;
    int t = 1;
    for (i = 2; i<5; i++) {
        t*=i;
    }
    t;
});
Run Code Online (Sandbox Code Playgroud)

我一直在研究ANSI C语法,试图弄清楚这段代码如何适合解析树,但我还没有成功.

那么,有没有人知道这种行为是由标准规定还是只是GCC的特殊性?

更新:我已尝试使用标志-pedantic,编译器现在给我一个警告:

warning: ISO C forbids braced-groups within expressions
Run Code Online (Sandbox Code Playgroud)

c standards gcc expression

37
推荐指数
2
解决办法
7507
查看次数

HH的正则表达式模式:MM:SS时间字符串

我想解析一个hh:mm:ss字符串.一个简单的是([0-1]?\d|2[0-3]):([0-5]?\d):([0-5]?\d) 期望2:3:2402:03:24字符串.

我想更进一步,即使在像这样的情况下也要通过验证

  1. 如果你只输入56,它应该通过,因为56可以被认为是56秒[SS]
  2. 如果您输入2:3或02:03或02:3或2:03则应该通过.2分3秒[MM:SS]
  3. 如果你进入20:30:12传球20小时30分12秒[HH:MM:SS]
  4. 如果你输入78:12,不要过78分钟是错误的....

基本上,如果找到一个":",则将":"之前的数字视为MM,将":"之后的数字视为SS.如果发现两个":",则认为是HH:MM:SS

我想出了这种模式.

(^([0-1]?\d|2[0-3]):([0-5]?\d):([0-5]?\d)$)|(^([0-5]?\d):([0-5]?\d)$)|(^[0-5]?\d$)
Run Code Online (Sandbox Code Playgroud)

它似乎工作正常.我想知道任何其他更简单的正则表达式,它可以完成这项工作.

regex expression hour minute seconds

37
推荐指数
2
解决办法
7万
查看次数

无法从用法推断出类型参数.尝试显式指定类型参数

有人可以请我澄清一些事情.在我的ASP.NET MVC 2应用程序中,我有一个BaseViewModel包含以下方法的类:

public virtual IDictionary<string, object> GetHtmlAttributes<TModel, TProperty>
                        (Expression<Func<TModel, TProperty>> propertyExpression)
{
    return new Dictionary<string, object>();
}
Run Code Online (Sandbox Code Playgroud)

我们的想法是每个子视图模型都可以覆盖此方法,并根据某些逻辑提供一组合适的html属性,以便在视图中呈现:

<%: Html.TextBoxFor(model => model.MyProperty, Model.GetHtmlAttributes
                                                 (model => model.MyProperty)) %>
Run Code Online (Sandbox Code Playgroud)

但是当在上面的行中使用时,当我点击视图时出现编译错误:

方法' ...BaseViewModel.GetHtmlAttributes<TModel,TProperty> Expression<System.Func<TModel,TProperty>)' 的类型参数不能从用法中推断出来.尝试显式指定类型参数.

我必须做以下事情:

<%: Html.TextBoxFor(model => model.MyProperty, Model.GetHtmlAttributes
                             <ChildModel, string>(model => model.MyProperty)) %>
Run Code Online (Sandbox Code Playgroud)

我只是在寻找一些关于它如何尝试推断类型的清晰度,在HtmlHelper/TextBoxFor扩展方法中这样做是没有问题的?

是因为HtmlHelper在视图中将自动ViewUserControl与页面顶部指定的类型相同,而我的代码可以用于继承的任何类型BaseViewModel?有可能以这样的方式编写它,它可以推断我的模型/属性类型?

c# linq generics expression asp.net-mvc-2

36
推荐指数
3
解决办法
9万
查看次数

使用javascript或jquery删除url参数

我正在尝试使用youtube数据api生成视频播放列表.但是,视频网址需要youtube.com/watch?v=3sZOD3xKL0Y格式,但api生成的是youtube.com/watch?v=3sZOD3xKL0Y&feature=youtube_gdata.所以我需要做的是能够选择&符号之后的所有内容并将其从url中删除.使用javascript和某种正则表达式的任何方式吗?

javascript jquery expression query-string

35
推荐指数
7
解决办法
12万
查看次数

将Expression <T,bool>转换为String

我需要一种方法来在将来的某个时刻重新创建动态生成的报告.简而言之,我需要将特定的linq查询(每个报告不同)存储到数据库中,然后使用动态Linq执行查询.

这一切都很好,但我找不到将表达式转换为字符串的方法.

如:

Expression<Func<Product, bool>> exp = (x) => (x.Id > 5 && x.Warranty != false);
Run Code Online (Sandbox Code Playgroud)

应成为:

"Product.Id > 5 && Product.Warranty != false"
Run Code Online (Sandbox Code Playgroud)

有没有办法做到这一点?

c# expression dynamic-linq

35
推荐指数
1
解决办法
1万
查看次数

Rails SQL正则表达式

我正在尝试搜索A0001,A0002,A1234,A2351等系列中的最大数字...问题是我正在搜索的列表也有字符串,如AG108939,E092357,AL399,22-30597等等......

基本上,我想在我的数据库中获得最高的####值.我使用以下查询:

@max_draw = Drawing.where("drawing_number LIKE ?", "A%")
Run Code Online (Sandbox Code Playgroud)

这种情况一直有效,直到像AG309这样的数字开始受阻,因为它以A开头,但格式与我正在寻找的格式不同.

我假设这应该是非常直接的正则表达式,但我是新来的,不知道如何正确编写这个查询与正则表达式.以下是我试过的一些东西,只需返回nil:

 @max_draw = Drawing.where("drawing_number LIKE ?", /A\d+/)
 @max_draw = Drawing.where("drawing_number LIKE ?", "/A\d+/")
 @max_draw = Drawing.where("drawing_number LIKE ?", "A[0-9]%")
Run Code Online (Sandbox Code Playgroud)

sqlite activerecord expression ruby-on-rails

34
推荐指数
2
解决办法
3万
查看次数

Tcl中的复数运算?

是否有一个等效的expr命令适用于复数(代表两个双打的列表)?

库提供了复数运算的函数,似乎是定义所需cexpr函数的有用实用程序,但它不能很好地工作.

例如,它没有正确处理括号.

ParseExpressions::ParseExpr { (1) + ((2) + (3)) } { }
Run Code Online (Sandbox Code Playgroud)

回报

+ [+ 1 ((2)] (3))
Run Code Online (Sandbox Code Playgroud)

虽然它应该回来

+ [+ 1 2] 3
Run Code Online (Sandbox Code Playgroud)

还有ParseExpressions :: ParseExpr {{1 2} + {3 4}} {}

回报

+ 1 2 3 4
Run Code Online (Sandbox Code Playgroud)

虽然它应该回来

+ {1 2} {3 4}
Run Code Online (Sandbox Code Playgroud)

所以基本上我要求这个实用程序的强大版本.

parsing expression tcl complex-numbers

33
推荐指数
1
解决办法
876
查看次数

Java中赋值操作的返回值

我在Java中遇到了一个声明

while ((line = reader.readLine()) != null) {
    out.append(line);
}
Run Code Online (Sandbox Code Playgroud)

赋值操作如何在Java中返回值?

我们正在检查的声明是line = reader.readLine(),我们将其与之进行比较null.

既然readLine会返回一个字符串,我们究竟要检查的是null什么?

java expression file-handling assignment-operator

32
推荐指数
4
解决办法
1万
查看次数

在C++中评估数学表达式的最佳方法是什么?

例如,评估任何自定义数学表达式的最佳方法是什么

3+sqrt(5)+pow(3)+log(5)
Run Code Online (Sandbox Code Playgroud)

我知道将Python嵌入到C++中可以做到这一点; 有没有更好的方法?

谢谢!

c++ math expression

31
推荐指数
2
解决办法
2万
查看次数

XPath 1.0查找元素的值是否在值列表中

有没有办法构造一个XPath来评估元素的值是否在预定义的值列表中?类似于此的东西:

/Location/Addr[State='TX or AL or MA']
Run Code Online (Sandbox Code Playgroud)

哪个匹配德克萨斯州,阿拉巴马州或马萨诸塞州的州元素?我知道我可以解压缩表达式:

/Location/Addr[State='TX] or  /Location/Addr[State='AL'], etc...
Run Code Online (Sandbox Code Playgroud)

但这有点麻烦,因为xpath很长,值列表也是如此.我的google-fu在这个问题上没有太多关注......

xpath expression list

30
推荐指数
2
解决办法
3万
查看次数