1:- module(tidylog_comment_ml, [ml_comment//1]).    2
    3:- use_module(library(tidylog/common),[ codes//1
    4                                      , prefer_one//1
    5                                      , rest_of_line//1
    6                                      , when_generating//1
    7                                      , when_parsing//1
    8                                      ]).    9:- use_module(library(tidylog/char),[ invisible//0
   10                                    , nl//0
   11                                    ]).   12
   13% Define multiline comment
   14ml_comment('tidylog %multi'(Lines)) -->
   15    when_generating(lines_codes(Lines,Codes)),
   16
   17    "/*",
   18    prefer_one(invisible),
   19    codes(Codes),
   20    prefer_one(invisible),
   21    "*/",
   22
   23    when_parsing(lines_codes(Lines,Codes)).
   24
   25
   26lines_codes(Lines,Codes) :-
   27    nonvar(Lines),
   28    !,
   29    maplist(string_codes,Lines,LinesOfCodes),
   30    once(phrase(lines(LinesOfCodes),Codes)).
   31lines_codes(Lines,Codes) :-
   32    nonvar(Codes),
   33    once(phrase(lines(LinesOfCodes),Codes)),
   34    maplist(string_codes,Lines,LinesOfCodes).
   35
   36
   37lines([]) -->
   38    [].
   39lines([Line]) -->
   40    rest_of_line(Line).
   41lines([Line|Lines]) -->
   42    rest_of_line(Line),
   43    nl,
   44    lines(Lines)