我正在使用SWI-Prolog为整数/ 1构建一些测试用例。
ISO/IEC 13211-1给出了整数
的BNF定义,整数的替代方法之一是字符代码常量
。
我能够使用整数/1
创建和测试所有其他替代方案的示例,但对于字符代码常量
,我无法创建有效示例。(见下文)
如何创建一个整数作为字符代码常量
,它将使用整数/1返回true?
答
感谢@false。
integer(0'0).
true.
integer(0'9).
true.
integer(0'a).
true.
integer(0'\n).
true.
效用
X is 0'\n.
X = 10.
X is 0b010101.
X = 21.
X is 0xFFF1.
X = 65521.
X is 0o7423.
X = 3859.
感谢j4n bur53通过@false的链接
对于SWI-Prolog,除了2、8或16之外,还可以使用其他基数。
X is 5'1234012340.
X = 3032220.
X is 32'123456789ABCDEFGHIJKLMNOPQRSTU.
X = 47525417447024678661670292427038339608998846.
我尝试了什么
integer("0").
false.
integer('0').
false.
integer(`0`).
false.
integer("1").
false.
integer('1').
false.
integer(`1`).
false.
国际标准化组织
国际标准ISO/IEC 13211-1第一版1995-06-01信息技术-程序设计语言- Prolog第1部分:一般核心
国际标准ISO/IEC 13211-1:1995
技术勘误表1
2007年11月15日发布
国际标准ISO/IEC 13211-1:1995技术勘误表2,发布于2012年2月15日
< code >整数的BNF
integer token (* 6.4.4 *) =
integer constant (* 6.4.4 *)
| character code constant (* 6.4.4 *)
| binary constant (* 6.4.4 *)
| octal constant (* 6.4.4 *)
| hexadecimal constant (* 6.4.4 *) ;
字符代码常量
的BNF
character code constant (* 6.4.4 *) =
"0" , single quote char (* 6.5.5 *), single quoted character (* 6.4.2.1 *)
我怀疑国际标准化组织/国际电工委员会13211-1中的BNF是错误的,但是检查勘误表没有显示任何更正。
整数测试用例
% <integer constant> examples
number(1).
% true.
number(0).
% true.
number(01).
% true.
number(12345678901234567890123456789012345678901234567890).
% true.
% <character code constant> examples
% ???
% <binary constant> examples
number(0b0).
% true.
number(0b10101010101010101010101010101010101010101010101010).
% true.
integer(0b2).
% ERROR: Syntax error: Illegal number
% ERROR: integer
% ERROR: ** here **
% ERROR: (0b2) .
% <octal constant> examples
integer(0o7).
% true.
integer(0o1234567012345670123456701234567012345670123456701234567).
% true.
integer(0o8).
% ERROR: Syntax error: Illegal number
% ERROR: integer
% ERROR: ** here **
% ERROR: (0o8) .
% <hexadecimal constant>
integer(0x0).
% true.
integer(0xF).
% true.
integer(0xf).
% true.
integer(0x123456789ABCDEF012345670123456789ABCDEF012345670123456789ABCDEF).
% true.
integer(0xG).
% ERROR: Syntax error: Illegal number
% ERROR: integer
% ERROR: ** here **
% ERROR: (0xG) .
这在评论中被假回答。
在这里转发,以便其他人可以看到答案的存在。
integer(0'0).
true.
integer(0'9).
true.
integer(0'a).
true.
integer(0'\n).
true.
我目前正在python中使用Google Vision API检测图像中的汉字,但我发现Google将返回python源代码(如\XE7\X80\X86\XE7\XAB\X91),而不是一些人类可读字符串。 我如何将它转换成utf-8格式的人类可读文本? Requests.Exceptions.ConnectionError除外:打印(“Request Error”) 谢谢你
我试图从标准输入中读取一些非常大的数字,并将它们相加。 然而,要添加到BigInteger,我需要使用
问题内容: 这应该很简单: 这将导致错误: 0 strconv.ParseInt:解析“ 1250000.0000”:无效的语法 有什么线索吗? 问题答案: 仅适用于可解析为整数的字符串。 您需要的是parseFloat
问题内容: 我对Java和Android都缺乏经验。我正在尝试检索存储在android手机模拟器的联系人之一中的电话号码。当我成功获取它时,该数字已以字符串形式返回,格式为“(987)654-3210”。我想将其转换为整数或长整数。我怎样才能做到这一点?如果使用,它将返回一个。尝试使用时也失败。那我该怎么办?我想要没有任何大括号或连字符的“ 9876543210”。 问题答案: 使用储存号码会更好
问题内容: 例如输入:(类型:) 转换示例:(类型:的切片) 问题答案: 除了mhutter的答案外,还请注意您的输入看起来像一个JSON数组(也许是来自JSON文本?)。 如果您这样处理,则可以将其内容编组为一个切片。直接解析其中的数字并不会更快(因为该包使用了反射),但是它肯定更简单: 输出(在Go Playground上尝试):
我正在使用协议缓冲区和smack制作程序。 smack(xmpp)只能传输字符串类型的数据。并且协议缓冲器可以产生字节阵列数据。所以,我这样做 使用协议缓冲区制作byte[]数据。 使用base64将byte[]数据编码为字符串 使用smack传输 将接收到的字符串(使用base64编码)解码为字符串 将解码字符串更改为byte[] 使用协议缓冲区从byte[]解析数据。 那么没有< code>I