标签: semantics

Algol 和 C 在铸造中的语义差异

假设我们在 Algol 68 和 C 中分别有以下指令: ref int x := 5;(int*) x = 5;。它们的语义差异是什么?是相同的吗?因为我认为第二个说“x将指向一个常量”(它无法编译),第一个说“x将指向一个内存”指向另一个包含常量 5" 的存储单元的单元。这是正确的吗?如果不正确,你能解释一下并举一些例子来理解这一点吗?

c algol68 semantics

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

抛出异常是由抽象机评估的吗?

根据intro.abstract#1

...需要一致的实现来模拟(仅)抽象机的可观察行为,如下所述。

这个解释就是as-if 规则,其中包含以下示例:

...如果实际实现可以推断出其值未被使用并且不会产生影响程序可观察行为的副作用,则实际实现不需要评估表达式的一部分。

副作用的定义在intro.execution#7中:

读取由易失性泛左值 ([basic.lval]) 指定的对象、修改对象、调用库 I/O 函数或调用执行任何这些操作的函数都是副作用,即状态的更改执行环境。...

在我看来,在以下程序中:

int main() 
{
  throw 42;
}
Run Code Online (Sandbox Code Playgroud)

表达式的值throw 42;未被使用,并且它不满足任何副作用的标准。

这是否意味着允许实现不评估该表达式?上述程序是否等价于:

int main() {}
Run Code Online (Sandbox Code Playgroud)

就抽象机而言?我找不到任何说明抽象机器知道或关心异常的文本。

c++ exception throw language-lawyer semantics

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

用于优雅css降级的HTML/CSS设计规划

在我个人网站的首页,我列出了所有文章及其发布日期.这些数据非常适合HTML表格标签.该表仅用于显示表格数据.

我再次使用它,并且能够使用无序列表和一点点css实现相同的布局.

所以现在我有两个版本,两个看起来都一样(即和ff).我希望页面尽可能优雅地降级.

我查看没有样式表的表格页面,一切都很好地降级.当我降低无表格页面时,它看起来没问题.

但很明显,表格页面降级得更好.

另外,在lynx中,tabled版本看起来比无表格版本要好得多.

在这种情况下,表格是否合理?

我现在应该使用无表格布局吗?或表更好地用于降解目的?

html css semantics

0
推荐指数
1
解决办法
1207
查看次数

C/C++ - 评估函数调用中的参数

可能重复:
功能参数的评估顺序

在C/C++中使用以下结构是否安全?

f(g(), h());
Run Code Online (Sandbox Code Playgroud)

其中g()预期要被评估第一,然后h().

所有编译器都在所有体系结构上显示相同的行为吗?

c c++ multiplatform semantics

0
推荐指数
1
解决办法
288
查看次数

如何在OWL字面值中放置整数"范围"?

假设我在db中有金属材料,其性能屈服强度可以从300到500 MPa.我怎样才能将其作为字面值输入.

我应该把2个属性像YieldStrengthMinYieldStrengthMax,或者它可以在单个条目中完成并格式化为300 - 500.我知道我可以把它作为字符串类型,但我需要的是当我SPARQL我的数据库时,我应该进行查询,找到所有可以说的材料YieldStrength > 350.如果它在该间隔中甚至是部分它应该是有效的结果.

好的,另一个澄清的例子

我将拥有db材料,每种材料都有许多属性.让我们说吧prop:hasMeltingTemperature.

material:ZA-12 prop:hasMeltingTemperature    "380 - 430".

material:Zn    prop:hasMeltingTemperature    "420".
Run Code Online (Sandbox Code Playgroud)

其中一些(清洁材料)将具有一个熔化温度,合金的温度将根据一些组分的百分比而变化.

我的应用程序将不得不从db获取所有材料,让我们说熔化温度> 400.所以在这种情况下它应该得到它们两个.

如果我查询我需要所有熔化温度<425的材料,它也应该同时使用它们.如果查询<400,则只有第一个材料.

无论如何,我的问题是:

我应该制作这样的房产:

material:ZA-12 prop:hasMeltingTemperature_MIN "380".

material:ZA-12 prop:hasMeltingTemperature_MAX "430".

material:Zn    prop:hasMeltingTemperature     "420".
Run Code Online (Sandbox Code Playgroud)

然后当我查询时我必须检测">"然后将它与"MIN"temp和"solo"temp进行比较,如果是"<"则将其与"MAX"temp和"solo"temp进行比较.

在这种情况下,我必须首先检测材料是否只有"one"或"min-max"temp或"none"temp属性.

要么

我可以像第一个例子中那样做,只有一个属性,如:

material:ZA-12 prop:hasMeltingTemperature "380 - 430".

material:Zn    prop:hasMeltingTemperature "420" .
Run Code Online (Sandbox Code Playgroud)

并制作某种可以理解"间隔"并进行比较的sparql查询?

这就是我想知道的原因,因为材料有许多属性,而且有许多材料,其中一些具有"最大值"值,一些"独奏"值,有些根本没有该属性,但有另一个属性一样的问题...

我的应用程序将在PHP中,所以我将不得不在PHP中生成sparql查询,这就是为什么我正在寻找一些"通用"类型的查询(只检查一个属性)..

所以我的问题是如何有效地sparql查询它,更好的选择2用于存储数据,以及如何查询它'

rdf owl sparql literals semantics

0
推荐指数
1
解决办法
3282
查看次数

是否有意在输入[type ="reset"]中包含tabindex属性?

是否存在可访问性或语义目的,以在输入[type ="reset"]中包含tabindex属性?或者是否应该避免这种形式不是偶然的并经常重置?

html forms accessibility semantics

0
推荐指数
1
解决办法
154
查看次数

我可以在同一页面中使用多个"主"html标签吗?

例如,如果我想将h1放在左列中,将内容放在右列中:

<div class="left-column">
 <main>
  <h1>Document Title</h1>
 </main>
</div>
<div class="right-column">
 <main>
  <p>Text content<p>
 </main>
</div>
Run Code Online (Sandbox Code Playgroud)

这是对的吗?谢谢!

html html5 semantics

0
推荐指数
1
解决办法
2033
查看次数

Scala:导致运行时错误的语法?

我正在学习Scala并尝试编写一些命令行可执行文件.

我有两个版本的HelloWorld,我认为它在语义上是相同的.HelloWorld.scala从命令行成功编译并运行.HelloWorld2.scala编译但产生运行时错误.

我的问题:我认为两者在语义上是相同的,那么为什么第二个会产生运行时错误?

这是工作示例:

// HelloWorld.scala

object HelloWorld {

  def main(args: Array[String]): Unit = {
    println("Hello, World!")
  }
}
Run Code Online (Sandbox Code Playgroud)

这是破碎的例子:

// HelloWorld2.scala

object HelloWorld2 {

  def main
    : Array[String] => Unit
    = args          => {
      println("Hello, World!")
    }
}
Run Code Online (Sandbox Code Playgroud)

这是控制台输出:

java.lang.NoSuchMethodException: HelloWorld2.main([Ljava.lang.String;)
    at java.lang.Class.getMethod(Class.java:1778)
    at scala.reflect.internal.util.ScalaClassLoader$class.run(ScalaClassLoader.scala:66)
    at scala.reflect.internal.util.ScalaClassLoader$URLClassLoader.run(ScalaClassLoader.scala:101)
    at scala.tools.nsc.CommonRunner$class.run(ObjectRunner.scala:22)
    at scala.tools.nsc.ObjectRunner$.run(ObjectRunner.scala:39)
    at scala.tools.nsc.CommonRunner$class.runAndCatch(ObjectRunner.scala:29)
    at scala.tools.nsc.ObjectRunner$.runAndCatch(ObjectRunner.scala:39)
    at scala.tools.nsc.MainGenericRunner.runTarget$1(MainGenericRunner.scala:65)
    at scala.tools.nsc.MainGenericRunner.run$1(MainGenericRunner.scala:87)
    at scala.tools.nsc.MainGenericRunner.process(MainGenericRunner.scala:98)
    at scala.tools.nsc.MainGenericRunner$.main(MainGenericRunner.scala:103)
    at scala.tools.nsc.MainGenericRunner.main(MainGenericRunner.scala)
Run Code Online (Sandbox Code Playgroud)

syntax scala semantics

0
推荐指数
1
解决办法
369
查看次数

如何禁止Ruby中的块(要求不给出块参数)

我定义了这个方法:

# @return [Array<String>] items
def produce_items
  ["foo", "bar", "baz"]
end
Run Code Online (Sandbox Code Playgroud)

显然,正确的用法是

produce_items.each do |i|
  puts i
end
Run Code Online (Sandbox Code Playgroud)

但我写了这个,默默无闻:

produce_items do |i|
  puts i
end
Run Code Online (Sandbox Code Playgroud)

有没有办法以produce_items这样的方式声明我的错误用法会产生错误/异常?如果MRI无法做到,那么可以选择其他口译员吗?可以像RuboCopruby-lint这样的静态分析工具吗?

我怀疑它可能很难,因为有一些常见的习惯用法,其中方法采用可选块:

def block_optional_implicitly
  if block_given?
    puts "Got a block"
    yield
  else
    puts "Did not get a block"
  end
end

def block_optional_explicitly(&block)
  unless block.nil?
    puts "Got a block"
    block.call
  else
    puts "Did not get a block"
  end
end
Run Code Online (Sandbox Code Playgroud)

(这与如何在Ruby中需要一个块的问题相反)

ruby syntax semantics

0
推荐指数
1
解决办法
83
查看次数

C++标准是否需要operator!=必须为给定的迭代器类型提供?

C++ 17标准27.2.1.8说:

迭代器j被称为可以从迭代器i到达,当且仅当存在表达式++ i的有限序列的应用程序时才使i == j.

也就是说,任何符合标准的迭代器类型都必须提供operator ==.

但是,我发现没有任何关于operator !=迭代器类型的要求.

是否operator !=必须为给定的迭代器类型提供C++标准要求?

c++ standards iterator type-traits semantics

0
推荐指数
1
解决办法
63
查看次数