[NAME]
ALL.dao.type.string

[TITLE]
字符串类型

[DESCRIPTION]

字符串string类型是一个表示一组字节的基本类型。 道字符串并不以空字符作为结尾标志,因此道字符
串类型可用字节的形式储存任意数据。 不过当字符串用作文本处理时,它一般被假定为使用UTF-8编码。


 0.1  基本定义 

字符串可已被表示为一双单引号或双引号引用的一串字符。 
     
   1  SingleQuoteString ::= ' ' ' ValidCharSequence ' ' '
   2  DoubleQuoteString ::= ' " ' ValidCharSequence ' " '
     
这里ValidCharSequence可以是除了不带转义反斜杠的引号之外的任意字符。 字符串常量里任意字符前
都可带转义反斜杠,不过通常只有特殊字符需要这样作。 如制表符可用\t表示,换行符可用\n和回车键 
用\r。没有特殊含义的转义表示反斜杠后面的字符本身。 如果想以ASCII码或UFF-8编码的形式直接表示
某个字符, 可以将那些码以转义的形式嵌入字符串常量: 
  *  单个十进制数字: \d;
  *  最多三个八进制数字: \ooo;
  *  反斜杠后加x可带多达两个十六进制的数字:  \xhh;
  *  反斜杠后加u可带多达四个十六进制的数字:  \uhhhh;
  *  反斜杠后加U可带多达八个十六进制的数字:  \Uhhhhhhhh; 


 0.2  Verbatim字符串 

Verbatim字符串常量是一种不需要使用转义字符而表示所有字符的字符串常量形式。 这种字符串常量有
一对'@['[Delimiter]']'引用: 
     
   1  VerbatimString ::= '@[' [Delimiter] ']' Characters '@[' [Delimiter] ']'
     
这里Delimiter可包含字母,数字,下划线, 空格符,点,冒号,减号和等号等符号。 它必须保证'@['[
Delimiter]']'不在它所引用的 字符串里出现。

 0.3  例子 

     
   1  var mbs = 'hello'
   2  var wcs = "道语言"
   3  var mbs2 = 'It\'s green'
   4  var wcs2 = "\u9053\u8bed\u8a00" # the same as wcs;
   5  
   6  # verbatim strings:
   7  var mbs = @[] some text @[]
   8  
   9  # C++ codes in verbatim string:
  10  var cpp =
  11  @[cpp x]
  12  class AA
  13  {
  14  	int index;
  15  };
  16  struct BB{};
  17  @[cpp x]
  18  
  19  
  20  # Lua codes in verbatim string:
  21  var lua =
  22  @[lua]
  23  local a = 1;
  24  function Test()
  25  	io.write( 'Hello' )
  26  end
  27  @[lua]
  28  
  29  # HTML codes in verbatim string:
  30  var html =
  31  @[html:123456]
  32  <body>
  33  <span name="test"></span>
  34  </body>
  35  @[html:123456]
     



[STRUCTURE]

dao.type.string--| dao.type.string: 字符串类型 (24.7 KB)
                 |--pattern--| dao.type.string.pattern: 字符串模式匹配 (11.4 KB)
                 |--method---| dao.type.string.method: 字符串方法 (10.7 KB)