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

📄 keyval_lex.l

📁 MPI stands for the Message Passing Interface. Written by the MPI Forum (a large committee comprising
💻 L
字号:
%{ /* -*- C -*- *//* * Copyright (c) 2004-2005 The Trustees of Indiana University and Indiana *                         University Research and Technology *                         Corporation.  All rights reserved. * Copyright (c) 2004-2006 The University of Tennessee and The University *                         of Tennessee Research Foundation.  All rights *                         reserved. * Copyright (c) 2004-2005 High Performance Computing Center Stuttgart,  *                         University of Stuttgart.  All rights reserved. * Copyright (c) 2004-2005 The Regents of the University of California. *                         All rights reserved. * $COPYRIGHT$ *  * Additional copyrights may follow *  * $HEADER$ */#include "opal_config.h"#include <stdio.h>#if HAVE_UNISTD_H#include <unistd.h>#endif#include "opal/util/keyval/keyval_lex.h"/* * local functions */static int finish_parsing(void);#if defined(c_plusplus) || defined(__cplusplus)extern "C" {#endifint opal_util_keyval_yywrap(void);#if defined(c_plusplus) || defined(__cplusplus)}#endif/* * global variables */int opal_util_keyval_yynewlines = 1;bool opal_util_keyval_parse_done = false;char *opal_util_keyval_string = NULL;#define yyterminate() \  return finish_parsing()%}WHITE       [\f\t\v ]CHAR        [A-Za-z0-9_\-\.]%x VALUE%x comment%%{WHITE}*\n          { opal_util_keyval_yynewlines++; return OPAL_UTIL_KEYVAL_PARSE_NEWLINE; }#.*\n               { opal_util_keyval_yynewlines++; return OPAL_UTIL_KEYVAL_PARSE_NEWLINE; }"//".*\n            { opal_util_keyval_yynewlines++; return OPAL_UTIL_KEYVAL_PARSE_NEWLINE; }"/*"                { BEGIN(comment);                      return OPAL_UTIL_KEYVAL_PARSE_NEWLINE; }<comment>[^*\n]*       ; /* Eat up non '*'s */<comment>"*"+[^*/\n]*  ; /* Eat '*'s not followed by a '/' */<comment>\n         { opal_util_keyval_yynewlines++;                      return OPAL_UTIL_KEYVAL_PARSE_NEWLINE; } <comment>"*"+"/"    { BEGIN(INITIAL); /* Done with Block Comment */                      return OPAL_UTIL_KEYVAL_PARSE_NEWLINE; }{WHITE}*"="{WHITE}* { BEGIN(VALUE); return OPAL_UTIL_KEYVAL_PARSE_EQUAL; }{WHITE}+            ; /* whitespace */{CHAR}+             { return OPAL_UTIL_KEYVAL_PARSE_SINGLE_WORD; }<VALUE>{WHITE}*\n   { BEGIN(INITIAL); return OPAL_UTIL_KEYVAL_PARSE_NEWLINE; }<VALUE>[^\n]*[^\t \n]/[\t ]*      { return OPAL_UTIL_KEYVAL_PARSE_VALUE; }.	            { return OPAL_UTIL_KEYVAL_PARSE_ERROR; }%%/* * This cleans up at the end of the parse (since, in this case, we * always parse the entire file) and prevents a memory leak. */static int finish_parsing(void) {    if (NULL != YY_CURRENT_BUFFER) {        yy_delete_buffer(YY_CURRENT_BUFFER); #if defined(YY_CURRENT_BUFFER_LVALUE)        YY_CURRENT_BUFFER_LVALUE = NULL;#else        YY_CURRENT_BUFFER = NULL;#endif  /* YY_CURRENT_BUFFER_LVALUE */    }    return YY_NULL;}int opal_util_keyval_yywrap(void){    opal_util_keyval_parse_done = true;    return 1;}/* * Ensure that we have a valid yybuffer to use.  Specifically, if this * scanner is invoked a second time, finish_parsing() (above) will * have been executed, and the current buffer will have been freed. * Flex doesn't recognize this fact because as far as it's concerned, * its internal state was already initialized, so it thinks it should * have a valid buffer.  Hence, here we ensure to give it a valid * buffer. */int opal_util_keyval_init_buffer(FILE *file){    YY_BUFFER_STATE buf = yy_create_buffer(file, YY_BUF_SIZE);    yy_switch_to_buffer(buf);    return 0;}

⌨️ 快捷键说明

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