用C语言将字符串转换为XML格式

mmvthczy  于 2022-12-03  发布在  其他
关注(0)|答案(1)|浏览(186)

我有一个问题,有没有一个算法可以把对应的逻辑表达式作为字符串转换成xml格式?
例如:
我从输入文件中将逻辑表达式作为字符串加载:
(X&Y)|Z
现在把它转换成xml格式,在一个新的文件中得到这样的东西:

<expression>
     <or>
        <operand>Z</operand>
             <and>
                 <operand>X</operand>
                 <operand>Y</operand>
             </and>
     </or>
</expression>

提前感谢!

j2cgzkjk

j2cgzkjk1#

(响应xml标记。)
也许您可以使用invisible-xml(ixml),SO Info选项卡列出了几个资源。
使用语法如

ixml version "1.0".

expression: expr.
-expr: operand; and; or; not.
and: expr, -"&", expr.
or: expr, -"|", expr.
not: -"!", operand.
-operand: id; -"(", expr, -")".
id: letter.
-letter: ["A"-"Z"].

ixml处理器coffeepot

java -jar '/usr/local/share/java/coffeepot-1.99.11.jar' \
  --grammar:expr-bool.ixml --pretty-print '(X&Y)|Z'

会产生下列输出:

<expression>
   <or>
      <and>
         <id>X</id>
         <id>Y</id>
      </and>
      <id>Z</id>
   </or>
</expression>

对于输入(X&Y)|Z&!(A|B)coffeepot(默认情况下),输出第一个(在本例中为2个)可能的解析,并发出根元素<expression xmlns:ixml="http://invisiblexml.org/NS" ixml:state="ambiguous">以指出歧义。
如果解析失败,输出可能如下所示:

<fail xmlns:ixml="http://invisiblexml.org/NS" ixml:state="failed">
   <line>1</line>
   <column>14</column>
   <pos>14</pos>
   <end-of-input>true</end-of-input>
   <permitted>['A'-'Z']</permitted>
</fail>

相关问题