⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 cimmof.l

📁 Pegasus is an open-source implementationof the DMTF CIM and WBEM standards. It is designed to be por
💻 L
字号:
/*//%2006//////////////////////////////////////////////////////////////////////////// Copyright (c) 2000, 2001, 2002 BMC Software; Hewlett-Packard Development// Company, L.P.; IBM Corp.; The Open Group; Tivoli Systems.// Copyright (c) 2003 BMC Software; Hewlett-Packard Development Company, L.P.;// IBM Corp.; EMC Corporation, The Open Group.// Copyright (c) 2004 BMC Software; Hewlett-Packard Development Company, L.P.;// IBM Corp.; EMC Corporation; VERITAS Software Corporation; The Open Group.// Copyright (c) 2005 Hewlett-Packard Development Company, L.P.; IBM Corp.;// EMC Corporation; VERITAS Software Corporation; The Open Group.// Copyright (c) 2006 Hewlett-Packard Development Company, L.P.; IBM Corp.;// EMC Corporation; Symantec Corporation; The Open Group.//// Permission is hereby granted, free of charge, to any person obtaining a copy// of this software and associated documentation files (the "Software"), to// deal in the Software without restriction, including without limitation the// rights to use, copy, modify, merge, publish, distribute, sublicense, and/or// sell copies of the Software, and to permit persons to whom the Software is// furnished to do so, subject to the following conditions:// // THE ABOVE COPYRIGHT NOTICE AND THIS PERMISSION NOTICE SHALL BE INCLUDED IN// ALL COPIES OR SUBSTANTIAL PORTIONS OF THE SOFTWARE. THE SOFTWARE IS PROVIDED// "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR IMPLIED, INCLUDING BUT NOT// LIMITED TO THE WARRANTIES OF MERCHANTABILITY, FITNESS FOR A PARTICULAR// PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT// HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN// ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION// WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.////============================================================================*/%option never-interactive%option stack%option yylineno%{ #include "cimmofParser.h"#include "memobjs.h"#include "cimmof_tab.h"/*                                                                       *//*  7/27/2004: bug 1330, support for slash* comments, E Boden, IBM       *//*  8/14/2004: bug 544,  support for string escape characters, E Boden   *//*                                                                       *//*                                                                       *//*                                                                       *//*---------------------------------------------------------------*//* These routines wrap certain flex functions, keeping down the  *//* number of external dependencies                               *//*---------------------------------------------------------------*/int get_yy_buf_size_wrapper() { return YY_BUF_SIZE; }void * get_cimmof__current_buffer_wrapper() {   return (void *)YY_CURRENT_BUFFER; }void * create_cimmof_buffer_wrapper(const FILE *f, int size) {  return (void *)yy_create_buffer((FILE *)f, size);}int switch_to_buffer_wrapper(void *buffstate, Boolean closeCurrent) {  if (closeCurrent)  {     if (yyin != NULL)     {        fflush(yyin);        fclose(yyin);        yyin = NULL;     }     yy_delete_buffer(YY_CURRENT_BUFFER);  }  yy_switch_to_buffer((YY_BUFFER_STATE)buffstate);  return 0;}char  strbuf[1024], *strbuf_p, slashx[2];%}%x myStr myHex%%\n                                  {                                       cimmofParser::Instance()->increment_lineno(); }\/\/.*[\r\n]?                       {                                      cimmofParser::Instance()->increment_lineno(); }[ \t\r]                             { /* skip white space */ }class                                 { return(TOK_CLASS); }\{                                  { return(TOK_LEFTCURLYBRACE); }\}                                  { return(TOK_RIGHTCURLYBRACE); }\[                                  { return(TOK_LEFTSQUAREBRACKET); }\]                                  { return(TOK_RIGHTSQUAREBRACKET); }\(                                  { return(TOK_LEFTPAREN); }\)                                  { return(TOK_RIGHTPAREN); }\:                                  { return(TOK_COLON); };                                   { return(TOK_SEMICOLON); }[+-]?[0-9]*\.[0-9]+([eE][+-]?[0-9]*)? {                                       cimmof_lval.strval = new String(yytext);                                      return(TOK_REAL_VALUE); }[+-]0[0-7]+                         { cimmof_lval.strval = new String(yytext);                                     return(TOK_OCTAL_VALUE); }0x[0-9A-Fa-f]+                      { cimmof_lval.strval = new String(yytext);                                     return(TOK_HEX_VALUE); }[+-][01]+[Bb]                       { cimmof_lval.strval = new String(yytext);                                     return(TOK_BINARY_VALUE); }[0-9]+                              { cimmof_lval.strval = new String(yytext);                                     return(TOK_POSITIVE_DECIMAL_VALUE); }[+-][0-9]+                          { cimmof_lval.strval = new String(yytext);                                     return(TOK_SIGNED_DECIMAL_VALUE); }\=                                  { return(TOK_EQUAL); },                                   { return(TOK_COMMA); }\'.+\'                              { cimmof_lval.strval = new String(yytext);                                      return(TOK_CHAR_VALUE); }                                    /*--- bugzilla 544 fix; handle string escapes ---                                                                            an impl. decision: invalid escape sequences                                        are simply ignored, and left in the string.                                       an impl. decision: yyleng is set to the len                                       of resulting string, not the len of the matched                                       token(s), since they are different, with escapes.                                       (but note; cimmof.y does not use yyleng!)                                       an impl. req't: strings are returned to parser                                       with [no kidding!] enclosing "s.                                      */                                               \"                                  { BEGIN(myStr); strbuf_p = strbuf;                                       /**strbuf_p++ = '"';*/ }<myStr>\"                             { BEGIN(INITIAL);                                        /**strbuf_p++ = '"';*/  *strbuf_p = '\0';                                      cimmof_leng = strbuf_p - strbuf;                                      cimmof_lval.strval = new String(strbuf);                                      return TOK_STRING_VALUE; }<myStr><<EOF>>                        |<myStr>\n                             { BEGIN(INITIAL);                                       /**strbuf_p++ = '"';*/  *strbuf_p = '\0';                                      cimmof_leng = strbuf_p - strbuf;                                      cimmof_lval.strval = new String(strbuf);                                      return TOK_UNEXPECTED_CHAR; }<myStr>\\b                            { /* backspace */        *strbuf_p++ = '\b'; }<myStr>\\f                            { /* form feed */        *strbuf_p++ = '\f'; }<myStr>\\n                            { /* line feed */        *strbuf_p++ = '\n'; }<myStr>\\r                            { /* carriage return */  *strbuf_p++ = '\r'; }<myStr>\\t                            { /* horizontal tab */   *strbuf_p++ = '\t'; }<myStr>\\'                            { /* single quote */     *strbuf_p++ = '\''; }<myStr>\\\"                           { /* double quote */     *strbuf_p++ = '"';  }<myStr>\\\\                           { /* backslash */        *strbuf_p++ = '\\'; }<myStr>\\[xX]                         { yy_push_state(myHex);                                      memcpy(slashx,yytext,2);                                      }<myStr>\\(.|\n)                       { *strbuf_p++ = '\\';                                      *strbuf_p++ = yytext[1]; }<myStr>[^\\\n\"]+                     { char *t = yytext;                                      while( *t ) *strbuf_p++ = *t++;                                      *strbuf_p = '\0'; }<myHex>[0-9A-Fa-f]{1,4}               { /* get escaped hex digits */                                      char  hexfmt[4];   unsigned int n;                                      sprintf( hexfmt, "%%%dx", yyleng );                                      sscanf(yytext, hexfmt, &n);                                      if (n>255) {                                          memcpy(strbuf_p,slashx,2);                                          strbuf_p += 2;                                          char *t = yytext;                                          while( *t ) *strbuf_p++ = *t++;                                          }                                      else *strbuf_p++ = (char)n;                                      yy_pop_state();                                           }<myHex>.                              { memcpy(strbuf_p,slashx,2);                                      strbuf_p += 2;                                      *strbuf_p++ = *yytext;                                      yy_pop_state();                                      }                                    /* --- end of bugzilla 544 fix --- */\/\*                                {   int c1=0, c2=yyinput();                                        for(;;) {                                            if (c2==EOF) break;                                            if (c1=='*' && c2=='/') break;                                            c1=c2;                                            c2=yyinput();                                            }                                        }<<EOF>>                             { yyterminate(); }[Nn][Uu][Ll][Ll]                    { return(TOK_NULL_VALUE); }[Tt][Rr][Uu][Ee]                    { return(TOK_TRUE); }[Ff][Aa][Ll][Ss][Ee]                { return(TOK_FALSE); }\.                                  { return(TOK_PERIOD); }\#[Pp][Rr][Aa][Gg][Mm][Aa]          { return(TOK_PRAGMA); }[Ii][Nn][Ss][Tt][Aa][Nn][Cc][Ee]    {                                      return(TOK_INSTANCE); }[Oo][Ff]                            {                                      return(TOK_OF); }[Qq][Uu][Aa][Ll][Ii][Ff][Ii][Ee][Rr] {return(TOK_QUALIFIER); }[Ss][Cc][Oo][Pp][Ee]                { return(TOK_SCOPE); }[Ss][Cc][Hh][Ee][Mm][Aa]            { return(TOK_SCHEMA); }[Aa][Ss][Ss][Oo][Cc][Ii][Aa][Tt][Ii][Oo][Nn] {                                      return(TOK_ASSOCIATION); }[Ii][Nn][Dd][Ii][Cc][Aa][Tt][Ii][Oo][Nn] {                                      return(TOK_INDICATION); }[Pp][Rr][Oo][Pp][Ee][Rr][Tt][Yy]    { return(TOK_PROPERTY); }[Rr][Ee][Ff][Ee][Rr][Ee][Nn][Cc][Ee] { return(TOK_REFERENCE); }[Mm][Ee][Tt][Hh][Oo][Dd]            { return(TOK_METHOD); }[Pp][Aa][Rr][Aa][Mm][Ee][Tt][Ee][Rr] {return(TOK_PARAMETER); }[Aa][Nn][Yy]                        { return(TOK_ANY); }[Rr][Ee][Ff]                        { return(TOK_REF); }[Ff][Ll][Aa][Vv][Oo][Rr]            { return(TOK_FLAVOR); }[Ee][Nn][Aa][Bb][Ll][Ee][Oo][Vv][Ee][Rr][Rr][Ii][Dd][Ee] {                                      return(TOK_ENABLEOVERRIDE); }[Dd][Ii][Ss][Aa][Bb][Ll][Ee][Oo][Vv][Ee][Rr][Rr][Ii][Dd][Ee] {                                      return(TOK_DISABLEOVERRIDE); }[Rr][Ee][Ss][Tt][Rr][Ii][Cc][Tt][Ee][Dd] {                                      return(TOK_RESTRICTED); }[Tt][Oo][Ss][Uu][Bb][Cc][Ll][Aa][Ss][Ss] {return(TOK_TOSUBCLASS); }[Tt][Rr][Aa][Nn][Ss][Ll][Aa][Tt][Aa][Bb][Ll][Ee] {                                      return(TOK_TRANSLATABLE); }[Ii][Nn][Cc][Ll][Uu][Dd][Ee]        { return(TOK_INCLUDE); }$[_$0-9a-zA-Z]+                     { cimmof_lval.strval = new String(yytext);                                      return TOK_ALIAS_IDENTIFIER; }[Aa][Ss]                            { return TOK_AS; }              [Ss][Tt][Rr][Ii][Nn][Gg]            { return(TOK_DT_STR); }[Bb][Oo][Oo][Ll][Ee][Aa][Nn]        { return(TOK_DT_BOOL); }[Dd][Aa][Tt][Ee][Tt][Ii][Mm][Ee]    { return(TOK_DT_DATETIME); }[Uu][Ii][Nn][Tt]8                   { return(TOK_DT_UINT8); }[Uu][Ii][Nn][Tt]16                  { return(TOK_DT_UINT16); }[Uu][Ii][Nn][Tt]32                  { return(TOK_DT_UINT32); }[Uu][Ii][Nn][Tt]64                  { return(TOK_DT_UINT64); }[Ss][Ii][Nn][Tt]8                   { return(TOK_DT_SINT8); }[Ss][Ii][Nn][Tt]16                  { return(TOK_DT_SINT16); }[Ss][Ii][Nn][Tt]32                  { return(TOK_DT_SINT32); }[Ss][Ii][Nn][Tt]64                  { return(TOK_DT_SINT64); }[Rr][Ee][Aa][Ll]32                  { return(TOK_DT_REAL32); }[Rr][Ee][Aa][Ll]64                  { return(TOK_DT_REAL64); }[Cc][Hh][Aa][Rr]8                   { return(TOK_DT_CHAR8); }[Cc][Hh][Aa][Rr]16                  { return(TOK_DT_CHAR16); }[_a-zA-Z][_$0-9a-zA-Z]*             { cimmof_lval.strval = new String(yytext);                                      return(TOK_SIMPLE_IDENTIFIER); }.                                   { cimmof_lval.strval = new String(yytext);                                      return(TOK_UNEXPECTED_CHAR); }%%void cimmof_yy_less(int n) { yyless(n); }

⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -