private void onInInterfaceBody(char c)
 {
     if (c == '/')
     {
         Data.Back(1);
         var comment = commentParser.Parse();
         result.AddComment(comment);
     }
     else if (c == 'f' || c == 'b' || c == 'r')
     {
         Data.Back(1);
         var attr = attributeParser.Parse();
         result.AddAttribute(attr);
     }
     else if (c == '}')
     {
         state = FINAL;
     }
     else if (ParserUtil.IsNewLineOrWhitespace(c) && ParserUtil.NextNonWhitespaceIs(Data, '/'))
     {
         var comment = commentParser.Parse("" + c);
         result.AddComment(comment);
     }
     else if (ParserUtil.IsNewLineOrWhitespace(c) && ParserUtil.NextNonWhitespaceIs(Data, '}'))
     {
         state = BEFORE_FINAL;
     }
     else if (ParserUtil.IsNewLineOrWhitespace(c))
     {
         var attr = attributeParser.Parse("" + c);
         result.AddAttribute(attr);
     }
 }
Example #2
0
 private void onInToken(char c)
 {
     if (c == '/' || c == '*' || ParserUtil.IsValidNameChar(c))
     {
         buf += c;
     }
     else if (ParserUtil.IsNewLineOrWhitespace(c) && buf.Length > 0)
     {
         Data.Back(buf.Length + 1);
         if (buf.Equals("interface"))
         {
             var ifa = interfaceParser.Parse(whitespaceBuf);
             result.AddInterface(ifa);
             whitespaceBuf = "";
         }
         else if (buf.Equals("config"))
         {
             if (result.Config != null)
             {
                 throw new InvalidTokenException("Es wurde eine zweite config-Section in einer CEUSDL-Datei gefunden", Data);
             }
             result.Config = configParser.Parse(whitespaceBuf);
             result.Objects.Add(new TmpMainLevelObject(result.Config));
             whitespaceBuf = "";
         }
         else if (buf.Equals("import"))
         {
             var import = importParser.Parse(whitespaceBuf);
             result.Objects.Add(new TmpMainLevelObject(import));
             whitespaceBuf = "";
         }
         else if (buf.StartsWith("//") || buf.StartsWith("/*"))
         {
             var comment = commentParser.Parse(whitespaceBuf);
             result.AddComment(comment);
             whitespaceBuf = "";
         }
         else
         {
             throw new InvalidTokenException($"Ungültiges Schlüsselwort {buf} gefunden", Data);
         }
         state = INITIAL;
         buf   = "";
     }
 }
        private void onInParamList(char c)
        {
            while (c == '/' || ParserUtil.NextNonWhitespaceIs(Data, '/'))
            {
                if (c == '/')
                {
                    Data.Back(1);
                }
                commentParser.Parse();
                c = ' ';
            }

            var p = this.namedParameterParser.Parse();

            if (p != null)
            {
                this.result.Parameters.Add(p);
            }
            Data.Back(1);
            state = BEHIND_PARAM;
        }