language-design

    0热度

    2回答

    我目前做一个基于JVM的编程语言。我没有使用运算符,而是选择将符号作为方法名称,并为原始数据类型创建编译器引用类。这些注释是以Bytecode指令作为参数的所谓的@Intrinsic注释。编译器使用这些来在每次调用时生成字节码,而不是INVOKE指令。 我现在想知道这个(公开)注释是否可以用来做任何事情在JVM上的恶意,如果它应该由编译器的限制,例如通过静态分析。 (语言本身也支持字节码表达式)

    0热度

    2回答

    我知道Python有一个强大的多任务功能,例如。我们可以做 a, b = 1, 2 a, (b, c) = 1, (2, 3) 甚至 for a, (b, c) in [(1, (2, 3)), ]: print a, b, c 但是这是怎么实现的?它是一个语法糖还是更复杂的东西?

    1热度

    1回答

    我刚刚得知,C++允许同样的法律代码: 12; //just an expression -- expression statement to be exact int i = 45; (i > 0) ? i-- : 1; Altghough它可能不是最好的pracitce,我可以看到一些有用的情况,其中使用表达式作为一个完整的语句可能帮助。所以,我只是想知道,为什么Java中没有类似的功

    0热度

    1回答

    我一直认为很好的ruby特性是nil默认用于索引/哈希查找,例如, [1, 2, 3][42] # => nil { foo: :bar }[:spam] # => nil 有,为什么在Ruby的设计或Ruby on Rails的核心扩展,这还没有扩展到嵌套查询工作(而不是抛出NoMethodError: undefined method '[]' for nil:NilClass)理由

    2热度

    3回答

    我目前正在开发支持运算符重载和自定义运算符的基于JVM的编程语言。我想坚持使用Java,并使用+运算符进行字符串连接,并且在我的语言中实现并完美工作。然而,运营商也可用于各种其他地方,例如将元素添加到集合: public interface Collection[E] { // ... public Collection[E] +(E element) // ...

    0热度

    1回答

    有一段时间以来,我一直对某种语言(如Java或C)中常量成员的作用感到困惑。我明白,在源代码级别,它们可以防止某些关键成员发生变化和变化,但是在编译或解释时,它们和变量成员之间是否存在任何区别,或者它们都只是指向内存地址的指针? 我想可能编译器/解释器必须实现一些特殊的东西来允许一个变量是可变的,当处理一个常量成员时它可能不需要这样做(可能使执行速度更快或使用更少的内存?) ,这是真的还是我完全错

    2热度

    2回答

    的std::string访问者(back,front,at,和operator[])具有const和非const过载,如下: char& x(); const char& x() const; 为什么第二版本返回const参考,而不是简单地返回char价值(作为副本)? 根据rules of thumb on how to pass objects around,当不需要修改原始值时,不应该

    1热度

    2回答

    for i in mylist: process(i) [process(j) for j in mylist] 在执行结束时,i和j保留在名称空间中,最后一个值为mylist。 除了创建一个专门的功能来隐藏i从泄漏;还有什么其他方法可以隐藏循环索引?

    11热度

    2回答

    这剪断将运行,没有任何抱怨两个和的NodeJS浏览器: this.return = function (x) { return x }; console.log (this.return(1)); 我期待它有一个语法错误要失败硬。 我的意思是,我可以理解为什么this['return']工程..但我总是虽然return是一个词法分析关键字? 是JavaScript的上下文敏感语

    2热度

    1回答

    多年来一直困扰着我的东西 - 为什么bash对文本和数字条件表达式使用不直观的运算符?这背后是否存在一些历史或技术原因,是否遵循了标准(例如POSIX),还是仅仅是语言作者的首选风格? 例如,在bash执行字符串比较时: [[ "X" == "X" ]] [[ "X" != "Y" ]] 我们使用显示为具有在逻辑或数学背景运算符。然而,比较数字的时候,我们使用的是不是数学或逻辑运算符: [[