Loading ...
Sorry, an error occurred while loading the content.

Re: Syntax: separating operators from number signs

Expand Messages
  • Mikolaj Machowski
    ... s matches any white-space character including tabs, so [ s t] can be replaced by just s. m.
    Message 1 of 9 , Apr 2, 2005
    • 0 Attachment
      Dnia sobota, 2 kwietnia 2005 18:46, Alejandro Pulver napisał:
      > I ended up with the following to match numbers (is it fine? can it be
      > optimized?):
      >
      > /[ \t#$@*<>{},]\@<=[-+]\?\d\+\|\d\+/
      >
      > And this to match the - and + operators (can it be optimized?):
      >
      > /[ \t\s#$@*<>{},]\@<![+-]\|[ \s\t][+-][ \s\t]/

      \s matches any white-space character including tabs, so [ \s\t] can be
      replaced by just \s.

      m.
    • Alejandro Pulver
      On Sat, 2 Apr 2005 20:23:46 +0200 ... Hello, Thank you for your reply. I tried /[#$@* {}, s] @
      Message 2 of 9 , Apr 2, 2005
      • 0 Attachment
        On Sat, 2 Apr 2005 20:23:46 +0200
        Mikolaj Machowski <mikmach@...> wrote:

        > Dnia sobota, 2 kwietnia 2005 18:46, Alejandro Pulver napisał:
        > > I ended up with the following to match numbers (is it fine? can it
        > > be optimized?):
        > >
        > > /[ \t#$@*<>{},]\@<=[-+]\?\d\+\|\d\+/
        > >
        > > And this to match the - and + operators (can it be optimized?):
        > >
        > > /[ \t\s#$@*<>{},]\@<![+-]\|[ \s\t][+-][ \s\t]/
        >
        > \s matches any white-space character including tabs, so [ \s\t] can be
        > replaced by just \s.
        >
        > m.
        >

        Hello,

        Thank you for your reply.

        I tried /[#$@*<>{},\s]\@<=[-+]\?\d\+\|\d\+/ (\s instead of [ \t\s]) but
        if I have:

        dst: dat #0, # -3

        The '-' is not marked as a number. But if I have:

        dst: dat #0, #-3

        It is marked as a number.

        What is happening?

        Thanks and Best Regards,
        Ale

        P.S.: is there a way to define a group of atoms for using in a regular
        expression? Like grouping all the modifiers in one "variable" or "group"
        and put the group name in the regular expressions.
      • Mikolaj Machowski
        ... You cannot use s (or any other class) inside of [] ... Here catches operator rule. [] is always one char. Try / ([#$@* {},] s* ) @
        Message 3 of 9 , Apr 2, 2005
        • 0 Attachment
          Dnia sobota, 2 kwietnia 2005 20:48, Alejandro Pulver napisał:
          > Hello,
          >
          > Thank you for your reply.
          >
          > I tried /[#$@*<>{},\s]\@<=[-+]\?\d\+\|\d\+/ (\s instead of [ \t\s]) but

          You cannot use \s (or any other class) inside of []
          > if I have:
          >
          > dst: dat #0, # -3

          Here catches operator rule. [] is always one char. Try
          /\([#$@*<>{},]\s*\)\@<=[-+]\?\d\+\|\d\+/

          > P.S.: is there a way to define a group of atoms for using in a regular
          > expression? Like grouping all the modifiers in one "variable" or "group"
          > and put the group name in the regular expressions.

          You could try to put it into variable and resolve them in syntax file
          with exe (:h :exe) but this is tricky and can significantly slow down
          Vim.

          m.


          --
          [`] 2005-04-02 21:37
        • Alejandro Pulver
          ... Hello, Thank you. Best Regards, Ale
          Message 4 of 9 , Apr 3, 2005
          • 0 Attachment
            > Dnia sobota, 2 kwietnia 2005 20:48, Alejandro Pulver napisaÅ?:
            >> Hello,
            >>
            >> Thank you for your reply.
            >>
            >> I tried /[#$@*<>{},\s]\@<=[-+]\?\d\+\|\d\+/ (\s instead of [ \t\s]) but
            >
            > You cannot use \s (or any other class) inside of []
            >> if I have:
            >>
            >> dst: dat #0, # -3
            >
            > Here catches operator rule. [] is always one char. Try
            > /\([#$@*<>{},]\s*\)\@<=[-+]\?\d\+\|\d\+/
            >
            >> P.S.: is there a way to define a group of atoms for using in a regular
            >> expression? Like grouping all the modifiers in one "variable" or "group"
            >> and put the group name in the regular expressions.
            >
            > You could try to put it into variable and resolve them in syntax file
            > with exe (:h :exe) but this is tricky and can significantly slow down
            > Vim.
            >
            > m.
            >
            >
            > --
            > [`] 2005-04-02 21:37
            >
            >

            Hello,

            Thank you.

            Best Regards,
            Ale
          • drchip@campbellfamily.biz
            ... * priority control: order (latest == highest), keywords have top priority, and nextgroup. So, with that in mind, please check out the following; I m sure
            Message 5 of 9 , Apr 4, 2005
            • 0 Attachment
              Quoting Alejandro Pulver <alejandro@...>:

              >...
              > I have a problem to separate operators (+, -) from the sign of a number
              > (positive or negative). In this example both are marked in Vim as
              > operators, but one is an operator and the other a sign:
              >
              > mov 0, dst+1 -- an addition operator
              > mov 0, -1 -- a negative sign
              >...

              * priority control: order (latest == highest), keywords have
              top priority, and nextgroup.

              So, with that in mind, please check out the following; I'm sure
              that its notion of variables will need to be improved, but
              at least its a start:

              syn keyword redcodeKey mov
              syn match redcodeVar "\h\w*" skipwhite nextgroup=redcodeOp
              syn match redcodeNmbr "\d\+"
              syn match redcodeOp "[-+]" contained
              syn match redcodeSign "[-+]\ze\d\+"

              hi link redcodeKey Statement
              hi link redcodeVar Identifier
              hi link redcodeOp Operator
              hi link redcodeSign redcodeNmbr
              hi link redcodeNmbr Number

              Regards,
              Chip Campbell
            • Alejandro Pulver
              On Mon, 4 Apr 2005 06:23:25 -0700 ... Hello, Thank you for your reply. I noticed that syntax keyword does not support nextgroup . The Redcode language has
              Message 6 of 9 , Apr 4, 2005
              • 0 Attachment
                On Mon, 4 Apr 2005 06:23:25 -0700
                drchip@... wrote:

                > Quoting Alejandro Pulver <alejandro@...>:
                >
                > >...
                > > I have a problem to separate operators (+, -) from the sign of a
                > > number(positive or negative). In this example both are marked in Vim
                > > as operators, but one is an operator and the other a sign:
                > >
                > > mov 0, dst+1 -- an addition operator
                > > mov 0, -1 -- a negative sign
                > >...
                >
                > * priority control: order (latest == highest), keywords have
                > top priority, and nextgroup.
                >
                > So, with that in mind, please check out the following; I'm sure
                > that its notion of variables will need to be improved, but
                > at least its a start:
                >
                > syn keyword redcodeKey mov
                > syn match redcodeVar "\h\w*" skipwhite nextgroup=redcodeOp
                > syn match redcodeNmbr "\d\+"
                > syn match redcodeOp "[-+]" contained
                > syn match redcodeSign "[-+]\ze\d\+"
                >
                > hi link redcodeKey Statement
                > hi link redcodeVar Identifier
                > hi link redcodeOp Operator
                > hi link redcodeSign redcodeNmbr
                > hi link redcodeNmbr Number
                >
                > Regards,
                > Chip Campbell
                >

                Hello,

                Thank you for your reply.

                I noticed that "syntax keyword" does not support "nextgroup". The
                Redcode language has instruction modifiers (they are the same for
                all instructions): ".a", ".b", ".i", ".f", ".ab", ".ba". Like the
                following:

                step1: mov.i -1, 3
                mov.f @3, 63
                jmp -2

                How can I implement them?

                How can I be sure that there is one instruction with the two fields
                (e.g. no more than two fields, no nonexistant instructions, possibly
                labels in front)?

                If I specify every valid combination with their respective highlighting,
                can I make everything else be an error (in the Error group) or I have to
                do individual groups (e.g. valid numbers and invalid numbers, valid
                modifiers and invalid modifiers)?

                Is it possible to use two different groups in a single pattern (without
                having to write it twice)?

                What syntax layout (groups, etc.) is more appropiate for this case?

                [<label>][:] <instruction[.<modifier>]> <[<modifier>]field-a> [,
                <[<modifier>]field-b>] [; <comment>]

                [] -> optional

                Thanks and Best Regards,
                Ale
              Your message has been successfully submitted and would be delivered to recipients shortly.