#!/usr/bin/perl
use strict;
use warnings;
module whatever
//endmodule
// endmodule
// asadsadadsa endmodule
// enasaa endmodule asas
/* endmodule */
/* blabl
endmodule // whatever
blabla */
// endmodule // whatever
endmodule // whatever
module nonsense
//
// bla bla
//
endmodule // nonsense
};
module\
s+whatever
# marks the start of the module (?: # each instance of this alternation matches one kind of
# module "token"
//.*+ # match a single-line comment
| # or
/[*] # open a block comment
(?:(?![*]/)[\
s\S])*+ # match anything as long as it doesn't close the comment [*]/ # close the block comment
| # or
(?!endmodule
)[\
s\S] # match anything as long as it doesn't close the module )*+ # repeat
endmodule
~x) {
}
else
{
print "NOOOOOOOOOOOOOOOOOOOOOOOOOOOOO!!!!!!!!!!\n"; }
IyEvdXNyL2Jpbi9wZXJsCgp1c2Ugc3RyaWN0Owp1c2Ugd2FybmluZ3M7CgpteSAkY29udGVudCA9IHFxewptb2R1bGUgd2hhdGV2ZXIKLy9lbmRtb2R1bGUKLy8gZW5kbW9kdWxlCi8vIGFzYWRzYWRhZHNhIGVuZG1vZHVsZQovLyBlbmFzYWEgZW5kbW9kdWxlIGFzYXMKLyogZW5kbW9kdWxlICovCi8qIGJsYWJsCmVuZG1vZHVsZSAvLyB3aGF0ZXZlcgpibGFibGEgKi8KLy8gZW5kbW9kdWxlIC8vIHdoYXRldmVyCmVuZG1vZHVsZSAvLyB3aGF0ZXZlcgptb2R1bGUgbm9uc2Vuc2UKLy8KLy8gYmxhIGJsYQovLwplbmRtb2R1bGUgLy8gbm9uc2Vuc2UKfTsKCmlmICgkY29udGVudCA9fiBtfgogIG1vZHVsZVxzK3doYXRldmVyICAgICAgIyBtYXJrcyB0aGUgc3RhcnQgb2YgdGhlIG1vZHVsZQogICg/OiAgICAgICAgICAgICAgICAgICAgIyBlYWNoIGluc3RhbmNlIG9mIHRoaXMgYWx0ZXJuYXRpb24gbWF0Y2hlcyBvbmUga2luZCBvZgogICAgICAgICAgICAgICAgICAgICAgICAgIyBtb2R1bGUgInRva2VuIgogICAgLy8uKisgICAgICAgICAgICAgICAgIyBtYXRjaCBhIHNpbmdsZS1saW5lIGNvbW1lbnQKICB8ICAgICAgICAgICAgICAgICAgICAgICMgb3IKICAgIC9bKl0gICAgICAgICAgICAgICAgICMgb3BlbiBhIGJsb2NrIGNvbW1lbnQKICAgICg/Oig/IVsqXS8pW1xzXFNdKSorICMgbWF0Y2ggYW55dGhpbmcgYXMgbG9uZyBhcyBpdCBkb2Vzbid0IGNsb3NlIHRoZSBjb21tZW50CiAgICBbKl0vICAgICAgICAgICAgICAgICAjIGNsb3NlIHRoZSBibG9jayBjb21tZW50CiAgfCAgICAgICAgICAgICAgICAgICAgICAjIG9yCiAgICAoPyFlbmRtb2R1bGUpW1xzXFNdICAjIG1hdGNoIGFueXRoaW5nIGFzIGxvbmcgYXMgaXQgZG9lc24ndCBjbG9zZSB0aGUgbW9kdWxlCiAgKSorICAgICAgICAgICAgICAgICAgICAjIHJlcGVhdAogIGVuZG1vZHVsZQogIH54KSB7CiAgICBwcmludCAkJjsKfQplbHNlCnsKICAgIHByaW50ICJOT09PT09PT09PT09PT09PT09PT09PT09PT09PT08hISEhISEhISEhXG4iOwp9