
{
{ CLP$SCAN_NON_SPACE_LEXICAL_UNIT updates its PARSE parameter to designate the
{ next lexical unit that is not normally considerred to be a space (i.e. not a
{ space or comment).
{ This procedure requires that the UNITS_ARRAY field of the PARSE parameter be
{ non-NIL.
{

  PROCEDURE [INLINE] clp$scan_non_space_lexical_unit
    (VAR parse {input, output} : clt$parse_state);

?? PUSH (LISTEXT := ON) ??

    IF parse.unit_index < parse.index_limit THEN
      IF NOT parse.unit_is_space THEN
        parse.previous_non_space_unit := parse.unit;
        parse.previous_non_space_unit_index := parse.unit_index;
      IFEND;

      REPEAT
        parse.previous_unit_is_space := parse.unit_is_space;
        parse.unit_index := parse.index;
        parse.units_array_index := parse.units_array_index + 1;
        parse.unit := parse.units_array^ [parse.units_array_index];
        parse.index := parse.index + parse.unit.size;

        parse.unit_is_space := parse.unit.kind IN
              $clt$lexical_unit_kinds [clc$lex_space, clc$lex_comment,
              clc$lex_unterminated_comment];

      UNTIL (NOT parse.unit_is_space) OR
            (parse.unit_index >= parse.index_limit);

    ELSEIF parse.unit.kind = clc$lex_beginning_of_line THEN
      parse.units_array_index := 2;
      parse.unit.kind := clc$lex_end_of_line;
    IFEND;

  PROCEND clp$scan_non_space_lexical_unit;

*copyc clt$lexical_unit_kinds
*copyc clt$parse_state
?? POP ??
