标签: operator-keyword

ANTLR:区分一元和二元运算符的问题(例如减号)

我正在使用ANTLR(3.2)来解析一些相当简单的语法.不幸的是,我遇到了一个小问题.采取以下规则:

exp
 : NUM
 | '(' expression OPERATOR expression ')' -> expression+
 | '(' (MINUS | '!') expression ')' -> expression
 ;
Run Code Online (Sandbox Code Playgroud)

OPERATOR包含与MINUS定义的相同减号(' - ').现在ANTLR似乎无法处理这两条规则.如果我删除任何一个,一切正常.

任何想法?

binary antlr operator-keyword

8
推荐指数
1
解决办法
3510
查看次数

在OS X上,简单的C++程序给出了不正确的结果(这是命令行选项'c ++ 03'vs'c ++ 11'的结果)

这个简单的程序(在Linux上编译时)将根据是否编译而正确地给出两个不同的答案-std=c++0x.

问题:我无法在OS X(Mountain Lion,10.8 SDK)上重现同样的事情.我错过了什么?

#include <iostream>
#include <sstream>

class Thing : public std::ostringstream
{
public:
    Thing() : std::ostringstream() {}
    virtual ~Thing() { std::cerr << str(); }
};

int main(int argc, const char * argv[]) {
    Thing() << "Hello" << std::endl;
    return 0;
}
Run Code Online (Sandbox Code Playgroud)

要了解我的意思,请执行以下操作(首先在Linux上,看看它应该如何工作):

> g++ main.cpp
> ./a.out
0x401471
Run Code Online (Sandbox Code Playgroud)
> g++ -std=c++0x main.cpp
> ./a.out
Hello
Run Code Online (Sandbox Code Playgroud)

第一个将打印十六进制地址,第二个将打印"Hello".这是正确的行为,因为操作符<<解析为两个不同的东西(C++ 03中没有右值引用,所以你去了).

现在,在OS X上尝试相同的事情:


> xcrun c++ main.cpp
> ./a.out
0x10840dd88
Run Code Online (Sandbox Code Playgroud)

(这正确地产生十六进制输出.)


> xcrun c++ -std=c++0x main.cpp
> …
Run Code Online (Sandbox Code Playgroud)

c++ linux macos rvalue operator-keyword

8
推荐指数
2
解决办法
2716
查看次数

'+ ='和'= +'之间的区别?

所以我有一段简单的代码打印出整数1-10:

i = 0
while i < 10:
        i += 1
        print(i)
Run Code Online (Sandbox Code Playgroud)

然后,如果您只是在第3行更改一个运算符,它会打印出无限量的1个整数(我明白为什么会这样做).为什么运行第二个程序时不会出现语法错误?如果赋值运算符后跟一个加法运算符,它会不会调用语法错误?

i = 0
while i < 10:
        i =+ 1
        print(i)
Run Code Online (Sandbox Code Playgroud)

python operator-keyword

8
推荐指数
4
解决办法
3万
查看次数

在C++中显式调用原始运算符函数

int a, b, c; 

//do stuff. For e.g., cin >> b >> c; 

c = a + b;          //works 
c = operator+(a,b); //fails to compile, 'operator+' not defined. 
Run Code Online (Sandbox Code Playgroud)

这另一方面起作用 -

class Foo
{
 int x; 
public:
 Foo(int x):x(x) {} 

 Foo friend operator+(const Foo& f, const Foo& g)
 {
  return Foo(f.x + g.x); 
 }

};    

Foo l(5), m(10); 

Foo n = operator+(l,m); //compiles ok! 
Run Code Online (Sandbox Code Playgroud)
  • 甚至可以直接调用基本类型的运算符+(和其他运算符)(如int)吗?
  • 如果有,怎么样?
  • 如果没有,是否有一个C++参考措辞,明确表明这是不可行的?

c++ function operator-keyword

7
推荐指数
1
解决办法
3413
查看次数

范围解析运算符::与成员访问运算符.在C#中

在C#中,A::B和之间的区别是A.B什么?我注意到的唯一区别是只能::使用global,但除此之外,有什么区别?为什么它们都存在?

c# scope-resolution operator-keyword

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

VB.Net Power运算符(^)从C#重载

我正在编写一个暴露给VB.Net的C#类.我想重载vb.net ^运算符,以便我可以写:

Dim c as MyClass
Set c = New ...
Dim d as MyClass
Set d = c^2
Run Code Online (Sandbox Code Playgroud)

在C#中,^运营商是xor运营商,电力运营商不存在.有没有办法可以做到这一点?

c# vb.net operator-overloading operator-keyword

7
推荐指数
1
解决办法
1415
查看次数

Java相当于C++拷贝赋值运算符

我试图理解用C++编写的这个操作符函数并将其转换为Java.

Class& Class::operator=(const Class& In) {

   properties = In.properties;

   return *this;

}
Run Code Online (Sandbox Code Playgroud)

这只是复制类对象的实例和属性吗?我已经写了一些东西:

public static Class copy(Class obj) {
    //returns new instance of Class individual
    Class copy =  new Class(obj.row_num, obj.col_num, obj.input_length, obj.output_length, obj.max_arity, obj.function_length, obj.levels_back);
    copy.genes = obj.genes.clone();
    return copy;
}
Run Code Online (Sandbox Code Playgroud)

我在正确的轨道上吗?非常感谢您的帮助.

c++ java operator-keyword

7
推荐指数
1
解决办法
4613
查看次数

如何在 dag 中获取 execution_date ?运营商的外部?

如何execution_date在 dag 之外获取参数?

execution_min = "{{execution_date.strftime('%M') }}"

if execution_min == '00':
    logging.info('**** ' + "YES, It's 00")
    final_task = DummyOperator(
        task_id='task_y00',
        ...
        dag=dag
    )
else:
    logging.info('**** ' + "NOPE!!!")
    final_task = DummyOperator(
        task_id='task_n00',
        ...
        dag=dag
    )
Run Code Online (Sandbox Code Playgroud)

我想用execution_date(特别是分钟)动态设置任务流

但是 Jinja 模板不能使用 template_fields = ['execution_date']

是否有任何解决方案可以从运算符外部(= DAG 本身)获取执行参数????

parameters templates jinja2 operator-keyword airflow

7
推荐指数
1
解决办法
9197
查看次数

Rust中struct结构文字中的".."语法是什么?

来自std::default::Default文档:

#[derive(Default)]
struct SomeOptions {
    foo: i32,
    bar: f32,
}

fn main() {
    let options = SomeOptions { foo: 42, ..Default::default() };
}
Run Code Online (Sandbox Code Playgroud)

..返回值的前缀Default::default()是什么?为什么这里需要它?它几乎看起来像是一个传播运营商,但我不确定.我理解..Default::default()正在做什么 - 用默认值填充剩余的struct参数SomeOptions,但不是如何..工作.这个运营商的名字是什么?

default operator-keyword rust

7
推荐指数
1
解决办法
2129
查看次数

C# - “is”运算符后面的大括号的含义

我在一些 C# 源代码中发现了以下行:

if(!(context.Compilation.GetTypeByMetadataName("Xunit.FactAttribute") is { } factAttribute))

这是另一个:

if(!(diagnostic.Location.SourceTree is { } tree))

运算符{ }后面的花括号 ( )是什么意思is

c# curly-braces operator-keyword

7
推荐指数
1
解决办法
434
查看次数