JSDOC/TokenReader.js
[gnome.introspection-doc-generator] / JSDOC / TokenReader.vala
index 176ba39..9f2c12d 100644 (file)
@@ -1,15 +1,15 @@
 //<script type="text/javascript">
 
  
-
-
+// test code
 //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 {
@@ -52,9 +52,16 @@ 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");
+               }
+        }
+        
     }
 
-    errordomain TokenReader_Error {
+    public errordomain TokenReader_Error {
             ArgumentError
     }
     
@@ -101,10 +108,10 @@ namespace JSDOC {
             this.line =1;
             var tokens = new TokenArray();
            
-            bool eof;
+         
             while (!stream.lookEOF()) {
                 
-                
+
                 if (this.read_mlcomment(stream, tokens)) continue;
                 if (this.read_slcomment(stream, tokens)) continue;
                 if (this.read_dbquote(stream, tokens))   continue;
@@ -188,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();
             }
             
@@ -208,7 +215,7 @@ namespace JSDOC {
                     n = this.findPuncToken(tokens, "(", n-1);
                     //Seed.print('(@' + n);
                     
-                    var lt = this.lastSym(tokens, n);
+                    //var lt = this.lastSym(tokens, n);
                     /*
                     //print(JSON.stringify(lt));
                     if (lt.type != "KEYW" || ["IF", 'WHILE'].indexOf(lt.name) < -1) {
@@ -248,11 +255,16 @@ namespace JSDOC {
         /**
             @returns {Boolean} Was the token found?
          */
-        public bool read_punc (TextStream stream, TokenArray tokens)
+        public bool read_punc (TextStream stream, TokenArray tokens) throws TokenReader_Error
         {
             string found = "";
-            var name ="";
-            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();
             }
             
@@ -390,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));
                 }
@@ -418,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 {
@@ -480,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();
             }
             
@@ -504,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;
                 }
@@ -542,10 +558,10 @@ namespace JSDOC {
                         regex += stream.next(2);
                         continue;
                     }
-                    if (stream.look() == "'/') {
+                    if (stream.look() == '/') {
                         regex += stream.next();
                         
-                        while (GLib.Regex.match_simple("[gmi]", stream.look())) {
+                        while (GLib.Regex.match_simple("[gmi]", stream.look().to_string())) {
                             regex += stream.next();
                         }