X-Git-Url: http://git.roojs.org/?a=blobdiff_plain;f=JSDOC%2FTokenReader.vala;h=9f2c12d344168a3992691963dca6ecb8ddde7eb3;hb=35ddfbdfc0fb33aab65d6722db3948ca210ede7f;hp=e6e9a9d4bb4b6d2132aa1acb50be10ce478868a5;hpb=b0d77521a609ae787b1928d345f9a59628c62cae;p=gnome.introspection-doc-generator diff --git a/JSDOC/TokenReader.vala b/JSDOC/TokenReader.vala index e6e9a9d..9f2c12d 100644 --- a/JSDOC/TokenReader.vala +++ b/JSDOC/TokenReader.vala @@ -2,34 +2,14 @@ // test code - -void main() { - var tr = new JSDOC.TokenReader(); - tr.keepDocs =true; - tr.keepWhite = true; - tr.keepComments = true; - tr.sepIdents = true; - tr.collapseWhite = false; - tr.filename = "test"; - }); - this.timerPrint("START" + fn); - - // we can load translation map here... - - var toks = tr.tokenize(new TextStream(str)); // dont merge xxx + . + yyyy etc. - -} - + //const Token = imports.Token.Token; //const Lang = imports.Lang.Lang; /** @class Search a {@link JSDOC.TextStream} for language tokens. */ - - - - + namespace JSDOC { public class TokenArray: Object { @@ -72,6 +52,13 @@ namespace JSDOC { public new Token get(int i) { return this.tokens.get(i); } + public void dump() + { + foreach(var token in this.tokens) { + print(token.asString() +"\n"); + } + } + } public errordomain TokenReader_Error { @@ -208,7 +195,7 @@ namespace JSDOC { public bool read_word (TextStream stream, TokenArray tokens) { string found = ""; - while (!stream.lookEOF() && Lang.isWordChar((string)stream.look())) { + while (!stream.lookEOF() && Lang.isWordChar(stream.look().to_string())) { found += stream.next(); } @@ -272,7 +259,12 @@ namespace JSDOC { { string found = ""; - while (!stream.lookEOF() && Lang.punc(found + (string)stream.look()).length > 0) { + while (!stream.lookEOF()) { + var ns = stream.look().to_string(); + + if (null == Lang.punc(found + ns )) { + break; + } found += stream.next(); } @@ -410,12 +402,16 @@ namespace JSDOC { (stream.look() == '<' && stream.look(1) == '!' && stream.look(2) == '-' && stream.look(3) == '-' && (""!=(found=stream.next(4)))) ) { var line = this.line; - while (!stream.lookEOF() && !Lang.isNewline((string)stream.look())) { + while (!stream.lookEOF()) { + //print(stream.look().to_string()); + if ( Lang.isNewline(stream.look().to_string())) { + break; + } found += stream.next(); } - //if (!stream.lookEOF()) { // what? << eat the EOL? + if (!stream.lookEOF()) { // lookinng for end of line... if we got it, then do not eat the character.. found += stream.next(); - //} + } if (this.keepComments) { tokens.push(new Token(found, "COMM", "SINGLE_LINE_COMM", line)); } @@ -438,10 +434,10 @@ namespace JSDOC { while (!stream.lookEOF()) { if (stream.look() == '\\') { - if (Lang.isNewline((string)stream.look(1))) { + if (Lang.isNewline(stream.look(1).to_string())) { do { stream.next(); - } while (!stream.lookEOF() && Lang.isNewline((string)stream.look())); + } while (!stream.lookEOF() && Lang.isNewline(stream.look().to_string())); str += "\\\n"; } else { @@ -500,7 +496,7 @@ namespace JSDOC { var found = ""; - while (!stream.lookEOF() && Lang.isNumber(found+(string)stream.look())){ + while (!stream.lookEOF() && Lang.isNumber(found+stream.look().to_string())){ found += stream.next(); } @@ -524,7 +520,7 @@ namespace JSDOC { var found = stream.next(2); while (!stream.lookEOF()) { - if (Lang.isHexDec(found) && !Lang.isHexDec(found+(string)stream.look())) { // done + if (Lang.isHexDec(found) && !Lang.isHexDec(found+stream.look().to_string())) { // done tokens.push(new Token(found, "NUMB", "HEX_DEC", this.line)); return true; } @@ -565,7 +561,7 @@ namespace JSDOC { if (stream.look() == '/') { regex += stream.next(); - while (GLib.Regex.match_simple("[gmi]", (string)stream.look())) { + while (GLib.Regex.match_simple("[gmi]", stream.look().to_string())) { regex += stream.next(); }