Whatpm::WebIDL use Whatpm::WebIDL;
my $parser = Whatpm::WebIDL::Parser->new;
my $onerror = sub {
my %arg = @_;
warn join "\t",
$arg{line}, $arg{column}, $arg{level},
$arg{type}, $arg{text} // '', $arg{value} // '';
};
my $webidl_doc = $parser->parse_char_string ($webidl_string, $onerror);
$webidl_doc->check ($onerror);
The Whatpm::WebIDL module provides a WebIDL parser, as well as a conformance checker that can be invoked once an IDL fragment has been parsed.
This is an implementation of W3C Web IDL specification.
The Whatpm::WebIDL package itself provides no functionality. It contains various packages including Whatpm::WebIDL::Parser.
Whatpm::WebIDL::ParserThe Whatpm::WebIDL::Parser package, which is contained in the Whatpm::WebIDL module, defines a class method and an instance method:
$parser = Whatpm::WebIDL::Parser->new;This class method creates a new instance of the WebIDL parser.
$webidl_doc = $parser->parse_char_string ($webidl_fragment, [$onerror]);This instance method of the $parser method parses a WebIDL fragment and returns its in-memory representation.
The first argument, $webidl_fragment, is the IDL fragment to be parsed. It must be a string of characters (not bytes).
As the second argument, $onerror, a CODE reference may be specified. If specified, whenever a parse error is found, or a warning message is raised, the CODE is invoked with arguments describing the error. @@ TODO: ref to degtailed description
Note that the W3C WebIDL specification does not define how invalid WebIDL fragments are parsed. This parse implements a foward compatible parsing rule that is similar to the CSS parsing rule; once a parse error is found, everything until the next ; character (or the end-of-file, if there is no ; character) is ignored, taking pairs of { and } characters into account. If a fragment prematurely ends inside a block, then a }; sequence that closes the block is implied. Any error that does not violate the grammer, e.g. any reference to an undefined interface, does not stop the parser; to detect such errors, the checker has to be invoked later.
The returned object, $webidl_doc, is an in-memory representation of the prased IDL fragment. It is an instance of the Whatpm::WebIDL::Definitions class.
Whatpm::WebIDL::DefinitionsAn object of the Whatpm::WebIDL::Definitions class represents a WebIDL fragment (or Definitions production in the WebIDL specification).
$webidl_doc->check ($onerror, [$levels]);This method checks the conformance of the WebIDL objects, $webidl_docs.
@@ TODO: documentation for $onerror and $levels.
WebIDL Editor's Draft <http://dev.w3.org/cvsweb/~checkout~/2006/webapi/WebIDL/Overview.html?content-type=text/html;%20charset=utf-8>
WebHACC::Language::WebIDL module, as an example of the usage of this module <https://suika.suikawiki.org/gate/cvs/webroot/gate/2007/html/WebHACC/Language/WebIDL.pm>
Wakaba <wakaba@suikawiki.org>
Copyright 2008 Wakaba <wakaba@suikawiki.org>
This library is free software; you can redistribute it and/or modify it under the same terms as Perl itself.