Re: Parsing di chiavi sintattiche

#45370
Up
0
Down
::

Sto elaborando una sintassi particolare (sempre per la classe che sto sviluppando e temo finirò tra molto tempo mancando ancora circa 300 linee di codice).
Si tratta di instanziare in memoria un nuovo “oggetto”. Se l’utente fornisce un nome, quello sarà l’identificativo per l’oggetto e se fornisce anche l’indicazione con “extends” allora produrrà un oggetto che “eredita” da quello indicato.

Scrivere `name=myobject, extends=baseobject`è meno elegante ed espressivo che scrivere `myobject extends baseobject` anche se appunto immediato da implementare.

Per quanto riguarda gli spazi finali, poiché la classe carica il pacchetto etextools potrei impiegare il comando \deblank. Farò qualche esperimento.

Grazie ed a presto.

Siccome hai una chiave, il trucco è di delimitare con la chiave stessa.
`\documentclass{minimal}
\usepackage{etextools}
\makeatletter
\def\parsename#1{\pn@i#1 extends \@nil}
\def\pn@i#1 extends #2\@nil{%
\def\temp{#2}%
\edef\nome{\deblank{#1}}%
nome=\nome.
\ifx\temp\empty % non c'è “extends”
\else
\expandafter\pn@ii\temp
\fi}
\def\pn@ii#1 extends {%
\edef\padre{\deblank{#1}}%
padre=\padre}
\makeatother

\begin{document}

`\parsename{pippo}'

`\parsename{pippo extends sempronio}'

`\parsename{pippo extends sss }'

`\parsename{ pippo extends sss }'
\end{document}`
Naturalmente le parole chiave devono essere senza traccia di caratteri attivi, quindi solo ASCII a 7 bit.

Ciao
Enrico

Go to top