os-cmpi-xen

annotate src/Xen_SettingDataLexer.l @ 121:4868ace2726b

Add initial consistence checks in test suite for Xen_MemoryPool, Xen_ProcessorPool and Xen_VirtualSystemManagementService.

Signed-off-by: Luke Szymanski <Lukasz.Szymanski@Unisys.com>
author Jim Fehlig <jfehlig@novell.com>
date Fri Jun 08 10:22:05 2007 -0600 (2007-06-08)
parents 1faa76de765e
children
rev   line source
jfehlig@9 1 /*** WARNING - COMMENTS IN LEX MUST BE TAB INDENTED ***/
jfehlig@9 2
jfehlig@9 3 /* DEFINITIONS SECTION */
jfehlig@9 4 /* Everything between %{ ... %} is copied verbatim to the start of the lex generated C code. */
jfehlig@9 5
jfehlig@9 6 %{
jfehlig@9 7 #include "cmpidt.h"
jfehlig@9 8 #include <string.h>
jfehlig@9 9 #include "Xen_SettingDataParser.h"
jfehlig@9 10 #ifndef YY_FLEX_LEX_COMPAT
jfehlig@9 11 int yylineno = 1;
jfehlig@9 12 #endif
jfehlig@9 13 %}
jfehlig@9 14
jfehlig@9 15 /* Some useful regular expressions to use in the RULES section */
jfehlig@9 16 DIGIT ([0-9])
jfehlig@9 17 ALPHA ([A-Za-z])
jfehlig@9 18 ALPHANUMERIC ([A-Za-z0-9])
jfehlig@9 19 PUNCTUATION ([\,\.\:\(\)\-\!\"\'\`\^])
jfehlig@9 20 ARITHMETIC ([\+\-\*\/\<\>\=])
jfehlig@9 21 WHITESPACE ([\t ]+)
jfehlig@9 22 EOLN (\n)
jfehlig@9 23 NUMBER ([0-9]+)
jfehlig@9 24 INTEGER (-?[0-9]+)
jfehlig@9 25 REAL (-?[0-9]+\.[0-9]+)
jfehlig@9 26 WORD ([A-Za-z]+)
jfehlig@9 27 QUOTEDTEXT (\"[^"\n]*["\n])
jfehlig@9 28 SINGLEQUOTEDTEXT (\'[^'\n]*['\n])
jfehlig@9 29 FILENAME ([A-Za-z0-9\.][A-Za-z0-9\.\-\+\_]*)
jfehlig@9 30 PATHNAME (\/?[A-Za-z0-9\.][A-Za-z0-9\.\-\+\_]*(\/[A-Za-z0-9\.][A-Za-z0-9\.\-\+\_]*)*\/?)
jfehlig@9 31 HOSTNAME ([A-Za-z][A-Za-z0-9\-\_]*(\.[A-Za-z][A-Za-z0-9\-\_]*)*)
jfehlig@9 32 IPADDR ([0-9]+\.[0-9]+\.[0-9]+\.[0-9]+)
jfehlig@9 33
jfehlig@9 34 /* Special mode to read CLASSNAME after reading INSTANCE OF, otherwise cannot distinguish this token from a PROPERTYNAME */
jfehlig@9 35 %x READCLASSNAME
jfehlig@9 36
jfehlig@9 37 /* Use the default yywrap() behavior */
jfehlig@9 38 %option noyywrap
jfehlig@9 39
jfehlig@9 40 /* END OF DEFINITIONS SECTION */
jfehlig@9 41 %%
jfehlig@9 42 /* RULES SECTION */
jfehlig@9 43 /* DESCRIBE EVERY LEXICAL TOKEN/PATTERN FOLLOWED BY THE APPROPRIATE ACTION.
jfehlig@9 44 TYPICALLY THE ACTION RETURNS THE TOKEN IDENTIFIER AND ITS VALUE (IN YYLVAL) */
jfehlig@9 45
jfehlig@9 46 /* The following simple lexical tokens only return the token identifier */
jfehlig@9 47
jfehlig@9 48 instance |
jfehlig@9 49 Instance |
jfehlig@9 50 INSTANCE {
jfehlig@9 51 return(INSTANCE);
jfehlig@9 52 }
jfehlig@9 53
jfehlig@9 54 of |
jfehlig@9 55 Of |
jfehlig@9 56 OF {
jfehlig@9 57 BEGIN READCLASSNAME; /* Read in classname as next token */
jfehlig@9 58 return(OF);
jfehlig@9 59 }
jfehlig@9 60
jfehlig@9 61 /* The following lexical tokens return the token identifier and the value of the token (in yylval) */
jfehlig@9 62
jfehlig@9 63 true |
jfehlig@9 64 True |
jfehlig@9 65 TRUE {
jfehlig@9 66 yylval.boolean = 1;
jfehlig@9 67 return(BOOLEAN);
jfehlig@9 68 }
jfehlig@9 69
jfehlig@9 70 false |
jfehlig@9 71 False |
jfehlig@9 72 FALSE {
jfehlig@9 73 yylval.boolean = 0;
jfehlig@9 74 return(BOOLEAN);
jfehlig@9 75 }
jfehlig@9 76
jfehlig@9 77 {INTEGER} {
jfehlig@9 78 yylval.sint64 = atoi(yytext);
jfehlig@9 79 return(INTEGER);
jfehlig@9 80 }
jfehlig@9 81
jfehlig@9 82 {QUOTEDTEXT} |
jfehlig@9 83 {SINGLEQUOTEDTEXT} {
jfehlig@9 84 yylval.string = (char *)strdup(yytext+1);
jfehlig@9 85 yylval.string[strlen(yylval.string)-1] = '\0';
jfehlig@9 86 return(STRING);
jfehlig@9 87 }
jfehlig@9 88
jfehlig@9 89 /* Classname */
jfehlig@9 90 /* NOTE - this rule only applies after a 'INSTANCE OF' has been read in */
jfehlig@9 91 <READCLASSNAME>[A-Za-z][A-Za-z0-9_]* {
jfehlig@9 92 BEGIN INITIAL; /* Go back to normal parsing rules now */
jfehlig@9 93 yylval.string = (char *)strdup(yytext);
jfehlig@9 94 return(CLASSNAME);
jfehlig@9 95 }
jfehlig@9 96
jfehlig@9 97 /* Propertyname */
jfehlig@9 98 [A-Za-z][A-Za-z0-9_]* {
jfehlig@9 99 yylval.string = (char *)strdup(yytext);
jfehlig@9 100 return(PROPERTYNAME);
jfehlig@9 101 }
jfehlig@9 102
jfehlig@9 103 /* Ignore end-of-line */
jfehlig@9 104 {EOLN} {
jfehlig@9 105 yylineno++;
jfehlig@9 106 }
jfehlig@9 107
jfehlig@9 108 <<EOF>> {
jfehlig@9 109 return(ENDOFFILE);
jfehlig@9 110 }
jfehlig@9 111
jfehlig@9 112 /* Ignore whitespace */
jfehlig@9 113 {WHITESPACE} ;
jfehlig@9 114
jfehlig@9 115 /* Return single character punctuation characters as-is */
jfehlig@9 116 . {
jfehlig@9 117 return(yytext[0]);
jfehlig@9 118 }
jfehlig@9 119
jfehlig@9 120 /* END OF RULES SECTION */
jfehlig@9 121 %%
jfehlig@9 122 /* USER SUBROUTINE SECTION */
jfehlig@9 123 /* Everything below is copied verbatim to the end of the lex generated C code. */
jfehlig@9 124
jfehlig@17 125 void yyerror(char *errmsg)
jfehlig@9 126 {
jfehlig@9 127 fprintf(stderr, "error line %d: %s in '%s'\n", yylineno, errmsg, yytext);
jfehlig@9 128 }
jfehlig@9 129