http://www.perlmonks.org?node_id=791682


in reply to Re^6: Unparseability is A Good Thing
in thread Unparseability is A Good Thing

"The meaning of token" is ambiguous. Do you intend to say the outcome of the token or what the machine is supposed to do with the token?

If you intend to say the "outcome", then yes we do disagree on the meaning of parsability. The meaning of the token isn't to play fortune teller; if you give a machine tape input, the machine doesn't pretend to somehow create a pipeline of the future, knowing the state of machine at time t+1. It only knows the state at execution t, where the reader is.

This isn't a perl problem. I know you know this. So what is this requirement on the parser that you are saying is a perl problem?

Replies are listed 'Best First'.
Re^8: Unparseability is A Good Thing
by ikegami (Patriarch) on Aug 27, 2009 at 16:30 UTC

    (That should be "To determine the meaning of a token", fixed.)

    Do you intend to say the outcome of the token or what the machine is supposed to do with the token?

    Tokens don't have outcomes. They're data.

    To answer your question, neither. I meant "For the tokeniser to determine which token to create for a given sequence of input bytes". (Or at a higher level, "For the parser to determine which opcode to create or error to throw for a given sequence of input bytes".)

    For example, to determine whether "/" starts a pattern or if it's a division operator.

    This isn't a perl problem. I know you know this. So what is this requirement on the parser that you are saying is a perl problem?

    It hinders the ability to do useful things with Perl code by greatly extending the cost of doing so.

      Right. What to do with the token is determined at the read head. I still do not see how this is a perl specific problem, as the "/" operator has to be read and computed, what happens with it 5 minutes from now is fortune telling. Not a perl specific problem.

        Does that mean you think the tokeniser produces a <"/" operator> token? It doesn't. There's no such thing. The tokeniser produces either a regexp pattern token (which is a term) or a division operator token when faced with "/" in the input stream.