... et je frappe le mur, je ne comprends pas pourquoi cela ne fonctionne pas (je dois être en mesure d'analyser soit la version single tag (terminé avec />) ou les 2 versions d'étiquette (se terminant par)):Je pensais que cette analyse serait simple
Rebol[]
content: {<pre:myTag attr1="helloworld" attr2="hello"/>
<pre:myTag attr1="helloworld" attr2="hello">
</pre:myTag>
<pre:myTag attr3="helloworld" attr4="hello"/>
}
spacer: charset reduce [#" " newline]
letter: charset reduce ["ABCDEFGHIJKLMNOPQRSTUabcdefghijklmnopqrstuvwxyz1234567890="]
rule: [
any [
{<pre:myTag}
any [any letter {"} any letter {"}] mark:
(print {clipboard... after any letter {"} any letter {"}} write clipboard:// mark input)
any spacer mark: (print "clipboard..." write clipboard:// mark input) ["/>" | ">"
any spacer </pre:myTag>
]
any spacer
(insert mark { Visible="false"})
]
to end
]
parse content rule
write clipboard:// content
print "The end"
input
Merci beaucoup Chris pour ces réponses détaillées Je suis en train de progresser vraiment sur l'analyse :) –
Mais évidemment, ne pas coder les longueurs de corde comme ça! Puisque le comportement par défaut d'un mot est de l'évaluer, vous pouvez faire * replacement: {Visible = "false"} * et ensuite * replacement-length: length? remplacement*. Utilisez le remplacement et la longueur de remplacement dans votre règle. Bien sûr, tout est basé sur l'hypothèse que l'utilisation d'un analyseur orienté non-DOM pour XML/HTML est une bonne idée, que je réitère, ce n'est pas ... :) – HostileFork
+ 1 pour l'idée même de personnes faisant Rebol Q & A en dehors de AltME et R3 chat. Si d'autres personnes dans la communauté peuvent être invitées à se joindre au reste de la civilisation, cela ne ressemblera peut-être pas à une telle langue morte ... apportons-en d'autres sur SO. – HostileFork