Page MenuHomec4science

libmultiscale_doc_parser.py
No OneTemporary

File Metadata

Created
Sat, Sep 14, 02:32

libmultiscale_doc_parser.py

#!/usr/bin/env python3
import pyparsing as pp
class LibMultiScaleParser:
etag = pp.Literal("*/")
tag_desc = pp.Literal("/* LMDESC")
tag_keyword = pp.Literal("/* LMKEYWORD")
tag_heritance = pp.Literal("/* LMHERITANCE")
tag_example = pp.Literal("/* LMEXAMPLE")
def block(self, tag):
_header = pp.SkipTo(tag) + tag
_content = pp.SkipTo(self.etag)
_block = _header.suppress() - _content
_block -= self.etag.suppress()
return _block
def named_block(self, tag):
_header = pp.SkipTo(tag) + tag
_header += pp.ZeroOrMore(pp.White())
_block = _header.suppress() - pp.Word(pp.alphanums+"_")
_block -= pp.OneOrMore(pp.White() | pp.LineEnd()).suppress()
_block -= pp.SkipTo(self.etag)
_block -= self.etag.suppress()
res = _block
return res
def parse(self, filename, internal_key_list):
fin = open(filename, 'r')
inp = fin.read()
fin.close()
_content = self.named_block(
self.tag_desc).setResultsName("description")
example = self.block(self.tag_example)
_content += pp.Optional(example).setResultsName("example")
heritance = self.block(self.tag_heritance)
_content += pp.Optional(heritance).setResultsName("heritance")
keyword = self.named_block(self.tag_keyword)
_content += pp.Group(pp.ZeroOrMore(keyword)).setResultsName("keywords")
res = _content.parseString(inp)
return dict([(k, res.get(k)) for k in res.keys()])

Event Timeline