From 46439007cf417cbd9ac8049bb4122c890097a0fa Mon Sep 17 00:00:00 2001 From: "Charles.Forsyth" Date: Fri, 22 Dec 2006 20:52:35 +0000 Subject: 20060303-partial --- module/xml.m | 78 ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ 1 file changed, 78 insertions(+) create mode 100644 module/xml.m (limited to 'module/xml.m') diff --git a/module/xml.m b/module/xml.m new file mode 100644 index 00000000..ee83a0c1 --- /dev/null +++ b/module/xml.m @@ -0,0 +1,78 @@ +Xml: module { + PATH: con "/dis/lib/xml.dis"; + Item: adt { + fileoffset: int; + pick { + Tag => + name: string; + attrs: Attributes; + Text => + ch: string; + ws1, ws2: int; + Process => + target: string; + data: string; + Doctype => + name: string; + public: int; + params: list of string; + Stylesheet => + attrs: Attributes; + Error => + loc: Locator; + msg: string; + } + }; + + Locator: adt { + line: int; + systemid: string; + publicid: string; + }; + + Attribute: adt { + name: string; + value: string; + }; + + Attributes: adt { + attrs: list of Attribute; + + all: fn(a: self Attributes): list of Attribute; + get: fn(a: self Attributes, name: string): string; + }; + + Mark: adt { + estack: list of string; + line: int; + offset: int; + readdepth: int; + + str: fn(m: self ref Mark): string; + }; + + Parser: adt { + in: ref Bufio->Iobuf; + eof: int; + lastnl: int; + estack: list of string; + loc: Locator; + warning: chan of (Locator, string); + errormsg: string; + actdepth: int; + readdepth: int; + fileoffset: int; + preelem: string; + ispre: int; + + next: fn(p: self ref Parser): ref Item; + up: fn(p: self ref Parser); + down: fn(p: self ref Parser); + mark: fn(p: self ref Parser): ref Mark; + atmark: fn(p: self ref Parser, m: ref Mark): int; + goto: fn(p: self ref Parser, m: ref Mark); + str2mark: fn(p: self ref Parser, s: string): ref Mark; + }; + init: fn(): string; + open: fn(f: string, warning: chan of (Locator, string), preelem: string): (ref Parser, string); +}; -- cgit v1.2.3