Add default hostfile parameter plus --default-hostfile command line option.
Fix error message when job setup failed This commit was SVN r17724.
Этот коммит содержится в:
родитель
022fc1f382
Коммит
edb8e32a7a
@ -398,7 +398,7 @@ cleanup:
|
||||
|
||||
/* check for failed launch - if so, force terminate */
|
||||
if (failed_launch) {
|
||||
orte_plm_base_launch_failed(active_job, false, -1, 0, ORTE_JOB_STATE_FAILED_TO_START);
|
||||
orte_plm_base_launch_failed(jdata->jobid, false, -1, 0, ORTE_JOB_STATE_FAILED_TO_START);
|
||||
}
|
||||
|
||||
return rc;
|
||||
|
@ -566,7 +566,7 @@ cleanup:
|
||||
|
||||
/* check for failed launch - if so, force terminate */
|
||||
if (failed_launch) {
|
||||
orte_plm_base_launch_failed(active_job, false, -1, 0, ORTE_JOB_STATE_FAILED_TO_START);
|
||||
orte_plm_base_launch_failed(jdata->jobid, false, -1, 0, ORTE_JOB_STATE_FAILED_TO_START);
|
||||
}
|
||||
|
||||
return rc;
|
||||
|
@ -167,7 +167,7 @@ static int plm_lsf_launch_job(orte_job_t *jdata)
|
||||
}
|
||||
|
||||
/* save the active jobid */
|
||||
active_job = jobid;
|
||||
active_job = jdata->jobid;
|
||||
|
||||
/* Get the map for this job */
|
||||
if (NULL == (map = orte_rmaps.get_job_map(active_job))) {
|
||||
@ -347,7 +347,7 @@ cleanup:
|
||||
/* check for failed launch - if so, force terminate */
|
||||
if (failed_launch) {
|
||||
if (ORTE_SUCCESS !=
|
||||
orte_plm_base_launch_failed(jobid, false, -1, 0, ORTE_JOB_STATE_FAILED_TO_START);
|
||||
orte_plm_base_launch_failed(jdata->jobid, false, -1, 0, ORTE_JOB_STATE_FAILED_TO_START);
|
||||
}
|
||||
|
||||
return rc;
|
||||
|
@ -861,7 +861,7 @@ launch_apps:
|
||||
|
||||
/* check for failed launch - if so, force terminate */
|
||||
if( failed_launch ) {
|
||||
orte_plm_base_launch_failed(active_job, false, -1, 0, ORTE_JOB_STATE_FAILED_TO_START);
|
||||
orte_plm_base_launch_failed(jdata->jobid, false, -1, 0, ORTE_JOB_STATE_FAILED_TO_START);
|
||||
}
|
||||
|
||||
return rc;
|
||||
|
@ -806,7 +806,7 @@ launch_apps:
|
||||
|
||||
/* check for failed launch - if so, force terminate */
|
||||
if (failed_launch) {
|
||||
orte_plm_base_launch_failed(active_job, false, -1, 0, ORTE_JOB_STATE_FAILED_TO_START);
|
||||
orte_plm_base_launch_failed(jdata->jobid, false, -1, 0, ORTE_JOB_STATE_FAILED_TO_START);
|
||||
}
|
||||
|
||||
return rc;
|
||||
|
@ -400,7 +400,7 @@ cleanup:
|
||||
|
||||
/* check for failed launch - if so, force terminate */
|
||||
if (failed_launch) {
|
||||
orte_plm_base_launch_failed(active_job, false, -1, 0, ORTE_JOB_STATE_FAILED_TO_START);
|
||||
orte_plm_base_launch_failed(jdata->jobid, false, -1, 0, ORTE_JOB_STATE_FAILED_TO_START);
|
||||
}
|
||||
|
||||
return rc;
|
||||
|
@ -942,7 +942,7 @@ launch_apps:
|
||||
|
||||
/* check for failed launch - if so, force terminate */
|
||||
if (failed_launch) {
|
||||
orte_plm_base_launch_failed(active_job, false, -1, 0, ORTE_JOB_STATE_FAILED_TO_START);
|
||||
orte_plm_base_launch_failed(jdata->jobid, false, -1, 0, ORTE_JOB_STATE_FAILED_TO_START);
|
||||
}
|
||||
|
||||
return rc;
|
||||
|
@ -115,7 +115,42 @@ int orte_ras_base_allocate(orte_job_t *jdata)
|
||||
|
||||
/* nothing was found, or no active module was alive. Our next
|
||||
* option is to look for a hostfile and assign our global
|
||||
* pool from there. Hostfile names, if given, are included
|
||||
* pool from there. First, we check for a default hostfile
|
||||
* as set by an mca param
|
||||
*/
|
||||
if (NULL != orte_default_hostfile) {
|
||||
OPAL_OUTPUT_VERBOSE((5, orte_ras_base.ras_output,
|
||||
"%s ras:base:allocate parsing default hostfile %s",
|
||||
ORTE_NAME_PRINT(ORTE_PROC_MY_NAME),
|
||||
orte_default_hostfile));
|
||||
|
||||
/* a default hostfile was provided - parse it */
|
||||
if (ORTE_SUCCESS != (rc = orte_util_add_hostfile_nodes(&nodes,
|
||||
&override_oversubscribed,
|
||||
orte_default_hostfile))) {
|
||||
ORTE_ERROR_LOG(rc);
|
||||
OBJ_DESTRUCT(&nodes);
|
||||
return rc;
|
||||
}
|
||||
}
|
||||
/* if something was found in the default hostfile, we use that as our global
|
||||
* pool - set it and we are done
|
||||
*/
|
||||
if (!opal_list_is_empty(&nodes)) {
|
||||
/* store the results in the global resource pool - this removes the
|
||||
* list items
|
||||
*/
|
||||
if (ORTE_SUCCESS != (rc = orte_ras_base_node_insert(&nodes, jdata))) {
|
||||
ORTE_ERROR_LOG(rc);
|
||||
}
|
||||
/* update the jdata object with override_oversubscribed flag */
|
||||
jdata->oversubscribe_override = override_oversubscribed;
|
||||
/* cleanup */
|
||||
OBJ_DESTRUCT(&nodes);
|
||||
return rc;
|
||||
}
|
||||
|
||||
/* Individual hostfile names, if given, are included
|
||||
* in the app_contexts for this job. We therefore need to
|
||||
* retrieve the app_contexts for the job, and then cycle
|
||||
* through them to see if anything is there. The parser will
|
||||
|
@ -75,6 +75,26 @@ int orte_rmaps_base_get_target_nodes(opal_list_t *allocated_nodes, orte_std_cntr
|
||||
return ORTE_ERR_SILENT;
|
||||
}
|
||||
|
||||
/* is there a default hostfile? */
|
||||
if (NULL != orte_default_hostfile) {
|
||||
/* yes - filter the node list through the file, removing
|
||||
* any nodes not in the file -or- excluded via ^
|
||||
*/
|
||||
if (ORTE_SUCCESS != (rc = orte_util_filter_hostfile_nodes(allocated_nodes,
|
||||
orte_default_hostfile))) {
|
||||
ORTE_ERROR_LOG(rc);
|
||||
return rc;
|
||||
}
|
||||
}
|
||||
|
||||
/** check that anything is here */
|
||||
if (0 == opal_list_get_size(allocated_nodes)) {
|
||||
opal_show_help("help-orte-rmaps-base.txt",
|
||||
"orte-rmaps-base:no-available-resources",
|
||||
true);
|
||||
return ORTE_ERR_SILENT;
|
||||
}
|
||||
|
||||
/* did the app_context contain a hostfile? */
|
||||
if (NULL != app->hostfile) {
|
||||
/* yes - filter the node list through the file, removing
|
||||
|
@ -57,6 +57,7 @@ bool orte_wakeup_ordered = false;
|
||||
bool orte_abort_in_progress = false;
|
||||
int orte_timeout_usec_per_proc;
|
||||
float orte_max_timeout;
|
||||
char *orte_default_hostfile;
|
||||
|
||||
orte_process_name_t orte_globals_name_wildcard = {ORTE_JOBID_WILDCARD, ORTE_VPID_WILDCARD};
|
||||
orte_process_name_t orte_globals_name_invalid = {ORTE_JOBID_INVALID, ORTE_VPID_INVALID};
|
||||
@ -149,6 +150,11 @@ int orte_register_params(void)
|
||||
"Time to wait [in usecs/proc] before aborting an ORTE operation (default: 10 usec/proc)",
|
||||
false, false, 10, &orte_timeout_usec_per_proc);
|
||||
|
||||
/* default hostfile */
|
||||
mca_base_param_reg_string_name("default", "hostfile",
|
||||
"Name of the default hostfile (relative or absolute path)",
|
||||
false, false, NULL, &orte_default_hostfile);
|
||||
|
||||
|
||||
/* All done */
|
||||
params_set = true;
|
||||
|
@ -329,6 +329,8 @@ ORTE_DECLSPEC extern bool orte_wakeup_ordered;
|
||||
ORTE_DECLSPEC extern int orte_timeout_usec_per_proc;
|
||||
ORTE_DECLSPEC extern float orte_max_timeout;
|
||||
|
||||
ORTE_DECLSPEC extern char *orte_default_hostfile;
|
||||
|
||||
/* global arrays for data storage */
|
||||
ORTE_DECLSPEC extern opal_pointer_array_t *orte_job_data;
|
||||
ORTE_DECLSPEC extern opal_pointer_array_t *orte_node_pool;
|
||||
|
@ -170,6 +170,9 @@ opal_cmd_line_init_t cmd_line_init[] = {
|
||||
{ NULL, NULL, NULL, '\0', "machinefile", "machinefile", 1,
|
||||
NULL, OPAL_CMD_LINE_TYPE_STRING,
|
||||
"Provide a hostfile" },
|
||||
{ "default", "hostfile", NULL, '\0', "default-hostfile", "default-hostfile", 1,
|
||||
NULL, OPAL_CMD_LINE_TYPE_STRING,
|
||||
"Provide a default hostfile" },
|
||||
|
||||
/* uri of Open MPI server, or at least where to get it */
|
||||
{ NULL, NULL, NULL, '\0', "ompi-server", "ompi-server", 1,
|
||||
|
@ -40,6 +40,7 @@
|
||||
#include "opal/mca/installdirs/installdirs.h"
|
||||
|
||||
#include "orte/util/sys_info.h"
|
||||
#include "orte/util/name_fns.h"
|
||||
#include "orte/mca/errmgr/errmgr.h"
|
||||
#include "orte/mca/ras/ras_types.h"
|
||||
#include "orte/runtime/orte_globals.h"
|
||||
@ -110,27 +111,6 @@ static char *hostfile_parse_string(void)
|
||||
return strdup(orte_util_hostfile_value.sval);
|
||||
}
|
||||
|
||||
static char *hostfile_parse_string_or_int(void)
|
||||
{
|
||||
int rc;
|
||||
char tmp_str[64];
|
||||
|
||||
if (ORTE_HOSTFILE_EQUAL != orte_util_hostfile_lex()){
|
||||
return NULL;
|
||||
}
|
||||
rc = orte_util_hostfile_lex();
|
||||
switch (rc) {
|
||||
case ORTE_HOSTFILE_STRING:
|
||||
return strdup(orte_util_hostfile_value.sval);
|
||||
case ORTE_HOSTFILE_INT:
|
||||
sprintf(tmp_str,"%d",orte_util_hostfile_value.ival);
|
||||
return strdup(tmp_str);
|
||||
default:
|
||||
return NULL;
|
||||
}
|
||||
|
||||
}
|
||||
|
||||
static orte_node_t* hostfile_lookup(opal_list_t* nodes, const char* name)
|
||||
{
|
||||
opal_list_item_t* item;
|
||||
@ -146,38 +126,11 @@ static orte_node_t* hostfile_lookup(opal_list_t* nodes, const char* name)
|
||||
return NULL;
|
||||
}
|
||||
|
||||
static int validate_slot_list (char *cpu_list)
|
||||
{
|
||||
int i,list_len = strlen(cpu_list);
|
||||
|
||||
for(i=0; i < list_len; i++){
|
||||
if ('0' <= cpu_list[i] && '9' >= cpu_list[i]) {
|
||||
continue;
|
||||
}
|
||||
else if (':' == cpu_list[i]) {
|
||||
continue;
|
||||
}
|
||||
else if (',' == cpu_list[i]) {
|
||||
continue;
|
||||
}
|
||||
else if ('*' == cpu_list[i]) {
|
||||
continue;
|
||||
}
|
||||
else if ('-' == cpu_list[i]) {
|
||||
continue;
|
||||
}
|
||||
return ORTE_ERROR;
|
||||
}
|
||||
return ORTE_SUCCESS;
|
||||
}
|
||||
|
||||
static int hostfile_parse_line(int token, opal_list_t* updates, opal_list_t* procs)
|
||||
static int hostfile_parse_line(int token, opal_list_t* updates, opal_list_t* exclude)
|
||||
{
|
||||
char buff[64];
|
||||
char *tmp;
|
||||
int rc;
|
||||
orte_node_t* node;
|
||||
orte_ras_proc_t* proc;
|
||||
bool update = false;
|
||||
bool got_count = false;
|
||||
bool got_max = false;
|
||||
@ -213,6 +166,38 @@ static int hostfile_parse_line(int token, opal_list_t* updates, opal_list_t* pro
|
||||
}
|
||||
opal_argv_free (argv);
|
||||
|
||||
/* if the first letter of the name is '^', then this is a node
|
||||
* to be excluded. Remove the ^ character so the nodename is
|
||||
* usable, and put it on the exclude list
|
||||
*/
|
||||
if ('^' == node_name[0]) {
|
||||
int i, len;
|
||||
len = strlen(node_name);
|
||||
for (i=1; i < len; i++) {
|
||||
node_name[i-1] = node_name[i];
|
||||
}
|
||||
node_name[len-1] = '\0'; /* truncate */
|
||||
/* convert this into something globally unique */
|
||||
if (strcmp(node_name, "localhost") == 0 || opal_ifislocal(node_name)) {
|
||||
/* Nodename has been allocated, that is for sure */
|
||||
free (node_name);
|
||||
node_name = strdup(orte_system_info.nodename);
|
||||
}
|
||||
|
||||
/* Do we need to make a new node object? First check to see
|
||||
if it's already in the exclude list */
|
||||
if (NULL == (node = hostfile_lookup(exclude, node_name))) {
|
||||
node = OBJ_NEW(orte_node_t);
|
||||
node->name = node_name;
|
||||
}
|
||||
/* Note that we need to add this back to the exclude list.
|
||||
If it was found, we just removed it (in hostfile_lookup()),
|
||||
so this puts it back. If it was not found, then we have to
|
||||
add it to the exclude list anyway. */
|
||||
opal_list_append(exclude, &node->super);
|
||||
return ORTE_SUCCESS;
|
||||
}
|
||||
|
||||
/* convert this into something globally unique */
|
||||
if (strcmp(node_name, "localhost") == 0 || opal_ifislocal(node_name)) {
|
||||
/* Nodename has been allocated, that is for sure */
|
||||
@ -225,9 +210,6 @@ static int hostfile_parse_line(int token, opal_list_t* updates, opal_list_t* pro
|
||||
if (NULL == (node = hostfile_lookup(updates, node_name))) {
|
||||
node = OBJ_NEW(orte_node_t);
|
||||
node->name = node_name;
|
||||
node->username = username;
|
||||
node->slots = 0;
|
||||
|
||||
/* Note that we need to set update to true regardless of
|
||||
whether the node was found on the updates list or not.
|
||||
If it was found, we just removed it (in hostfile_lookup()),
|
||||
@ -278,48 +260,6 @@ static int hostfile_parse_line(int token, opal_list_t* updates, opal_list_t* pro
|
||||
}
|
||||
break;
|
||||
|
||||
case ORTE_HOSTFILE_SLOT:
|
||||
tmp = hostfile_parse_string_or_int();
|
||||
proc = OBJ_NEW(orte_ras_proc_t);
|
||||
proc->node_name = strdup(node_name);
|
||||
argv = opal_argv_split (tmp, '@');
|
||||
cnt = opal_argv_count (argv);
|
||||
switch (cnt) {
|
||||
case 1:
|
||||
proc->cpu_list = strdup(argv[0]);
|
||||
if (ORTE_SUCCESS != (rc = validate_slot_list(proc->cpu_list))) {
|
||||
OBJ_RELEASE(proc);
|
||||
OBJ_RELEASE(node);
|
||||
opal_argv_free (argv);
|
||||
ORTE_ERROR_LOG(ORTE_ERR_BAD_PARAM);
|
||||
hostfile_parse_error(token);
|
||||
return ORTE_ERROR;
|
||||
}
|
||||
break;
|
||||
case 2:
|
||||
proc->rank = strtol(argv[0],(char **)NULL,0);
|
||||
proc->cpu_list = strdup(argv[1]);
|
||||
if (ORTE_SUCCESS != (rc = validate_slot_list(proc->cpu_list))) {
|
||||
OBJ_RELEASE(proc);
|
||||
OBJ_RELEASE(node);
|
||||
opal_argv_free (argv);
|
||||
ORTE_ERROR_LOG(ORTE_ERR_BAD_PARAM);
|
||||
hostfile_parse_error(token);
|
||||
return ORTE_ERROR;
|
||||
}
|
||||
break;
|
||||
default:
|
||||
OBJ_RELEASE(proc);
|
||||
OBJ_RELEASE(node);
|
||||
opal_argv_free (argv);
|
||||
ORTE_ERROR_LOG(ORTE_ERR_BAD_PARAM);
|
||||
hostfile_parse_error(token);
|
||||
return ORTE_ERROR;
|
||||
}
|
||||
opal_argv_free (argv);
|
||||
opal_list_append(procs, &proc->super);
|
||||
number_of_slots++;
|
||||
break;
|
||||
case ORTE_HOSTFILE_SLOTS_MAX:
|
||||
rc = hostfile_parse_int();
|
||||
if (rc < 0) {
|
||||
@ -379,7 +319,7 @@ done:
|
||||
* Parse the specified file into a node list.
|
||||
*/
|
||||
|
||||
static int hostfile_parse(const char *hostfile, opal_list_t* updates, opal_list_t* procs)
|
||||
static int hostfile_parse(const char *hostfile, opal_list_t* updates, opal_list_t* exclude)
|
||||
{
|
||||
int token;
|
||||
int rc = ORTE_SUCCESS;
|
||||
@ -418,7 +358,7 @@ static int hostfile_parse(const char *hostfile, opal_list_t* updates, opal_list_
|
||||
case ORTE_HOSTFILE_HOSTNAME:
|
||||
case ORTE_HOSTFILE_IPV4:
|
||||
case ORTE_HOSTFILE_IPV6:
|
||||
rc = hostfile_parse_line(token, updates, procs);
|
||||
rc = hostfile_parse_line(token, updates, exclude);
|
||||
if (ORTE_SUCCESS != rc) {
|
||||
goto unlock;
|
||||
}
|
||||
@ -448,17 +388,40 @@ int orte_util_add_hostfile_nodes(opal_list_t *nodes,
|
||||
bool *override_oversubscribed,
|
||||
char *hostfile)
|
||||
{
|
||||
opal_list_t procs;
|
||||
opal_list_item_t *item;
|
||||
opal_list_t exclude;
|
||||
opal_list_item_t *item, *itm;
|
||||
int rc;
|
||||
|
||||
OBJ_CONSTRUCT(&procs, opal_list_t);
|
||||
|
||||
OPAL_OUTPUT_VERBOSE((1, orte_debug_output,
|
||||
"%s hostfile: checking hostfile %s for nodes",
|
||||
ORTE_NAME_PRINT(ORTE_PROC_MY_NAME), hostfile));
|
||||
|
||||
OBJ_CONSTRUCT(&exclude, opal_list_t);
|
||||
|
||||
/* parse the hostfile and add the contents to the list */
|
||||
if (ORTE_SUCCESS != (rc = hostfile_parse(hostfile, nodes, &procs))) {
|
||||
if (ORTE_SUCCESS != (rc = hostfile_parse(hostfile, nodes, &exclude))) {
|
||||
goto cleanup;
|
||||
}
|
||||
|
||||
/* remove from the list of nodes those that are in the exclude list */
|
||||
while(NULL != (item = opal_list_remove_first(&exclude))) {
|
||||
orte_node_t *exnode = (orte_node_t*)item;
|
||||
/* check for matches on nodes */
|
||||
for (itm = opal_list_get_first(nodes);
|
||||
itm != opal_list_get_end(nodes);
|
||||
itm = opal_list_get_next(itm)) {
|
||||
orte_node_t *node=(orte_node_t*)itm;
|
||||
if (0 == strcmp(exnode->name, node->name)) {
|
||||
/* match - remove it */
|
||||
opal_list_remove_item(nodes, itm);
|
||||
OBJ_RELEASE(itm);
|
||||
break;
|
||||
}
|
||||
}
|
||||
OBJ_RELEASE(item);
|
||||
}
|
||||
|
||||
/* indicate that ORTE should override any oversubscribed conditions
|
||||
* based on local hardware limits since the user (a) might not have
|
||||
* provided us any info on the #slots for a node, and (b) the user
|
||||
@ -469,11 +432,7 @@ int orte_util_add_hostfile_nodes(opal_list_t *nodes,
|
||||
*override_oversubscribed = true;
|
||||
|
||||
cleanup:
|
||||
while(NULL != (item = opal_list_remove_first(&procs))) {
|
||||
OBJ_RELEASE(item);
|
||||
}
|
||||
|
||||
OBJ_DESTRUCT(&procs);
|
||||
OBJ_DESTRUCT(&exclude);
|
||||
|
||||
return rc;
|
||||
}
|
||||
@ -485,19 +444,42 @@ cleanup:
|
||||
int orte_util_filter_hostfile_nodes(opal_list_t *nodes,
|
||||
char *hostfile)
|
||||
{
|
||||
opal_list_t newnodes;
|
||||
opal_list_t newnodes, exclude;
|
||||
opal_list_item_t *item1, *item2;
|
||||
orte_node_t *node_from_list, *node_from_file;
|
||||
bool node_found;
|
||||
int rc;
|
||||
|
||||
OPAL_OUTPUT_VERBOSE((1, orte_debug_output,
|
||||
"%s hostfile: filtering nodes through hostfile %s",
|
||||
ORTE_NAME_PRINT(ORTE_PROC_MY_NAME), hostfile));
|
||||
|
||||
/* parse the hostfile and create local list of findings */
|
||||
OBJ_CONSTRUCT(&newnodes, opal_list_t);
|
||||
if (ORTE_SUCCESS != (rc = hostfile_parse(hostfile, &newnodes, NULL))) {
|
||||
OBJ_CONSTRUCT(&exclude, opal_list_t);
|
||||
if (ORTE_SUCCESS != (rc = hostfile_parse(hostfile, &newnodes, &exclude))) {
|
||||
OBJ_DESTRUCT(&newnodes);
|
||||
return rc;
|
||||
}
|
||||
|
||||
/* remove from the list of newnodes those that are in the exclude list */
|
||||
while(NULL != (item1 = opal_list_remove_first(&exclude))) {
|
||||
node_from_file = (orte_node_t*)item1;
|
||||
/* check for matches on nodes */
|
||||
for (item2 = opal_list_get_first(&newnodes);
|
||||
item2 != opal_list_get_end(&newnodes);
|
||||
item2 = opal_list_get_next(item2)) {
|
||||
orte_node_t *node=(orte_node_t*)item2;
|
||||
if (0 == strcmp(node_from_file->name, node->name)) {
|
||||
/* match - remove it */
|
||||
opal_list_remove_item(&newnodes, item2);
|
||||
OBJ_RELEASE(item2);
|
||||
break;
|
||||
}
|
||||
}
|
||||
OBJ_RELEASE(item1);
|
||||
}
|
||||
|
||||
/* now check our nodes and remove any that don't match. We can
|
||||
* destruct our hostfile list as we go since this won't be needed
|
||||
*/
|
||||
|
@ -363,8 +363,8 @@ static void yy_fatal_error (yyconst char msg[] );
|
||||
*yy_cp = '\0'; \
|
||||
(yy_c_buf_p) = yy_cp;
|
||||
|
||||
#define YY_NUM_RULES 37
|
||||
#define YY_END_OF_BUFFER 38
|
||||
#define YY_NUM_RULES 36
|
||||
#define YY_END_OF_BUFFER 37
|
||||
/* This struct is not used in this scanner,
|
||||
but its presence is necessary. */
|
||||
struct yy_trans_info
|
||||
@ -372,27 +372,28 @@ struct yy_trans_info
|
||||
flex_int32_t yy_verify;
|
||||
flex_int32_t yy_nxt;
|
||||
};
|
||||
static yyconst flex_int16_t yy_accept[180] =
|
||||
static yyconst flex_int16_t yy_accept[184] =
|
||||
{ 0,
|
||||
32, 32, 5, 5, 38, 36, 10, 1, 36, 36,
|
||||
32, 36, 31, 32, 11, 32, 32, 32, 32, 32,
|
||||
32, 5, 7, 6, 10, 1, 0, 9, 0, 2,
|
||||
32, 4, 0, 32, 0, 31, 32, 32, 32, 0,
|
||||
32, 32, 32, 35, 32, 32, 32, 32, 32, 32,
|
||||
5, 6, 6, 8, 0, 3, 0, 31, 32, 32,
|
||||
32, 32, 0, 0, 32, 32, 32, 32, 32, 12,
|
||||
32, 32, 32, 0, 0, 31, 32, 32, 32, 32,
|
||||
32, 0, 0, 34, 32, 32, 32, 32, 32, 32,
|
||||
32, 32, 15, 32, 0, 0, 31, 32, 32, 32,
|
||||
31, 31, 5, 5, 37, 35, 10, 1, 35, 35,
|
||||
31, 35, 30, 31, 11, 31, 31, 31, 31, 31,
|
||||
31, 31, 5, 7, 6, 10, 1, 0, 9, 0,
|
||||
2, 31, 4, 0, 31, 0, 30, 31, 31, 31,
|
||||
0, 31, 31, 31, 34, 31, 31, 31, 31, 31,
|
||||
31, 31, 5, 6, 6, 8, 0, 3, 0, 30,
|
||||
31, 31, 31, 31, 0, 0, 31, 31, 31, 31,
|
||||
31, 31, 31, 12, 31, 31, 31, 0, 0, 30,
|
||||
31, 31, 31, 31, 31, 0, 0, 33, 31, 31,
|
||||
31, 31, 31, 31, 31, 31, 31, 31, 0, 0,
|
||||
|
||||
0, 34, 32, 32, 13, 32, 32, 32, 32, 32,
|
||||
32, 14, 32, 32, 32, 0, 0, 32, 32, 0,
|
||||
34, 32, 32, 32, 32, 32, 32, 32, 32, 32,
|
||||
32, 32, 32, 32, 32, 32, 32, 33, 0, 34,
|
||||
32, 32, 20, 21, 32, 22, 32, 32, 23, 32,
|
||||
32, 32, 32, 32, 32, 33, 32, 32, 32, 32,
|
||||
32, 32, 32, 32, 32, 32, 28, 33, 24, 25,
|
||||
26, 18, 27, 19, 16, 17, 29, 30, 0
|
||||
30, 31, 31, 31, 0, 33, 31, 31, 13, 31,
|
||||
31, 31, 31, 31, 31, 14, 31, 31, 31, 0,
|
||||
0, 31, 31, 0, 33, 31, 31, 31, 31, 31,
|
||||
31, 31, 31, 31, 31, 31, 31, 31, 31, 31,
|
||||
31, 32, 0, 33, 31, 31, 19, 20, 31, 21,
|
||||
31, 31, 22, 31, 31, 31, 31, 31, 31, 32,
|
||||
31, 31, 31, 31, 31, 31, 31, 31, 31, 31,
|
||||
27, 32, 23, 24, 25, 17, 26, 18, 15, 16,
|
||||
28, 29, 0
|
||||
} ;
|
||||
|
||||
static yyconst flex_int32_t yy_ec[256] =
|
||||
@ -406,10 +407,10 @@ static yyconst flex_int32_t yy_ec[256] =
|
||||
13, 1, 1, 14, 15, 15, 15, 15, 15, 15,
|
||||
16, 16, 16, 16, 16, 16, 16, 16, 16, 16,
|
||||
16, 16, 16, 16, 16, 16, 16, 16, 16, 16,
|
||||
7, 7, 7, 7, 17, 7, 18, 15, 19, 15,
|
||||
7, 7, 7, 17, 18, 7, 19, 15, 20, 15,
|
||||
|
||||
20, 15, 16, 16, 16, 16, 16, 21, 22, 23,
|
||||
24, 25, 16, 26, 27, 28, 29, 16, 16, 30,
|
||||
21, 15, 16, 16, 16, 16, 16, 22, 23, 24,
|
||||
25, 26, 16, 27, 28, 29, 30, 16, 16, 31,
|
||||
16, 16, 1, 1, 1, 1, 1, 1, 1, 1,
|
||||
1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
|
||||
1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
|
||||
@ -427,177 +428,196 @@ static yyconst flex_int32_t yy_ec[256] =
|
||||
1, 1, 1, 1, 1
|
||||
} ;
|
||||
|
||||
static yyconst flex_int32_t yy_meta[31] =
|
||||
static yyconst flex_int32_t yy_meta[32] =
|
||||
{ 0,
|
||||
1, 1, 2, 3, 1, 4, 5, 6, 7, 1,
|
||||
8, 9, 1, 5, 8, 6, 6, 8, 8, 8,
|
||||
6, 6, 6, 6, 6, 6, 6, 6, 6, 6
|
||||
8, 9, 1, 5, 8, 6, 5, 6, 8, 8,
|
||||
8, 6, 6, 6, 6, 6, 6, 6, 6, 6,
|
||||
6
|
||||
} ;
|
||||
|
||||
static yyconst flex_int16_t yy_base[196] =
|
||||
static yyconst flex_int16_t yy_base[202] =
|
||||
{ 0,
|
||||
0, 0, 28, 29, 454, 455, 34, 455, 449, 449,
|
||||
0, 32, 37, 64, 455, 79, 99, 15, 433, 429,
|
||||
422, 0, 455, 63, 68, 455, 444, 455, 444, 455,
|
||||
0, 455, 443, 111, 434, 121, 0, 136, 63, 29,
|
||||
156, 166, 0, 0, 176, 415, 414, 400, 405, 408,
|
||||
0, 71, 106, 455, 424, 455, 69, 186, 104, 198,
|
||||
213, 233, 406, 121, 243, 0, 253, 263, 394, 120,
|
||||
161, 388, 389, 386, 161, 123, 378, 273, 171, 0,
|
||||
283, 376, 134, 372, 293, 303, 338, 321, 325, 324,
|
||||
171, 173, 318, 185, 203, 331, 328, 313, 328, 323,
|
||||
0, 0, 29, 30, 386, 528, 35, 528, 381, 381,
|
||||
0, 33, 38, 66, 528, 82, 103, 119, 15, 360,
|
||||
356, 349, 0, 528, 65, 70, 528, 371, 528, 371,
|
||||
528, 0, 528, 370, 129, 357, 140, 0, 156, 65,
|
||||
30, 177, 188, 0, 0, 199, 215, 337, 336, 333,
|
||||
338, 341, 0, 73, 74, 528, 354, 528, 108, 222,
|
||||
119, 235, 251, 272, 344, 117, 283, 0, 294, 305,
|
||||
321, 328, 331, 74, 124, 324, 325, 340, 134, 123,
|
||||
334, 339, 143, 0, 350, 333, 135, 332, 361, 372,
|
||||
330, 312, 314, 313, 137, 138, 306, 182, 182, 323,
|
||||
|
||||
324, 323, 318, 333, 171, 311, 309, 222, 305, 225,
|
||||
304, 248, 297, 296, 299, 305, 246, 303, 298, 297,
|
||||
295, 294, 283, 278, 269, 267, 267, 266, 266, 260,
|
||||
258, 262, 263, 258, 261, 259, 254, 264, 261, 257,
|
||||
249, 248, 0, 0, 237, 0, 231, 203, 0, 195,
|
||||
197, 193, 181, 177, 169, 172, 143, 119, 117, 100,
|
||||
96, 94, 62, 59, 30, 27, 0, 455, 0, 0,
|
||||
0, 0, 0, 0, 0, 0, 0, 0, 455, 353,
|
||||
362, 371, 377, 386, 395, 404, 411, 415, 416, 423,
|
||||
425, 427, 429, 431, 433
|
||||
320, 383, 321, 394, 317, 311, 310, 405, 138, 302,
|
||||
300, 169, 296, 176, 295, 197, 288, 287, 291, 297,
|
||||
202, 295, 294, 289, 288, 287, 274, 273, 264, 259,
|
||||
259, 258, 261, 255, 234, 236, 230, 229, 232, 230,
|
||||
225, 234, 231, 227, 219, 217, 0, 0, 211, 0,
|
||||
205, 207, 0, 201, 209, 207, 202, 201, 202, 206,
|
||||
185, 181, 175, 141, 124, 92, 85, 64, 30, 27,
|
||||
0, 528, 0, 0, 0, 0, 0, 0, 0, 0,
|
||||
0, 0, 528, 426, 435, 444, 450, 456, 465, 474,
|
||||
483, 490, 494, 499, 501, 508, 510, 512, 514, 516,
|
||||
|
||||
518
|
||||
} ;
|
||||
|
||||
static yyconst flex_int16_t yy_def[196] =
|
||||
static yyconst flex_int16_t yy_def[202] =
|
||||
{ 0,
|
||||
179, 1, 180, 180, 179, 179, 179, 179, 181, 182,
|
||||
183, 179, 179, 183, 179, 179, 16, 16, 17, 17,
|
||||
17, 184, 179, 185, 179, 179, 181, 179, 182, 179,
|
||||
183, 179, 186, 13, 179, 13, 14, 179, 36, 187,
|
||||
183, 14, 17, 188, 16, 17, 17, 17, 17, 17,
|
||||
184, 185, 185, 179, 186, 179, 179, 36, 58, 183,
|
||||
179, 61, 189, 190, 41, 42, 41, 16, 17, 17,
|
||||
17, 17, 17, 179, 179, 34, 34, 60, 78, 62,
|
||||
61, 191, 190, 192, 41, 41, 17, 17, 17, 17,
|
||||
17, 17, 17, 17, 179, 179, 34, 78, 98, 61,
|
||||
183, 1, 184, 184, 183, 183, 183, 183, 185, 186,
|
||||
187, 183, 183, 187, 183, 183, 16, 188, 16, 17,
|
||||
17, 17, 189, 183, 190, 183, 183, 185, 183, 186,
|
||||
183, 187, 183, 191, 13, 183, 13, 14, 183, 37,
|
||||
192, 187, 14, 17, 193, 16, 194, 17, 17, 17,
|
||||
17, 17, 189, 190, 190, 183, 191, 183, 183, 37,
|
||||
60, 187, 183, 63, 195, 196, 42, 43, 42, 16,
|
||||
194, 39, 17, 17, 17, 17, 17, 183, 183, 35,
|
||||
35, 62, 82, 64, 63, 197, 196, 198, 42, 42,
|
||||
17, 17, 17, 17, 17, 17, 17, 17, 183, 183,
|
||||
|
||||
193, 194, 183, 41, 17, 17, 17, 17, 17, 17,
|
||||
17, 17, 17, 17, 17, 179, 179, 183, 62, 179,
|
||||
195, 183, 17, 17, 17, 17, 17, 17, 17, 17,
|
||||
17, 17, 17, 17, 17, 17, 17, 179, 179, 179,
|
||||
35, 82, 102, 63, 199, 200, 187, 42, 17, 17,
|
||||
17, 17, 17, 17, 17, 17, 17, 17, 17, 183,
|
||||
183, 187, 64, 183, 201, 187, 17, 17, 17, 17,
|
||||
17, 17, 17, 17, 17, 17, 17, 17, 17, 17,
|
||||
17, 17, 17, 17, 17, 179, 17, 17, 17, 17,
|
||||
17, 17, 17, 17, 17, 17, 17, 179, 17, 17,
|
||||
17, 17, 17, 17, 17, 17, 17, 17, 0, 179,
|
||||
179, 179, 179, 179, 179, 179, 179, 179, 179, 179,
|
||||
179, 179, 179, 179, 179
|
||||
17, 183, 183, 183, 17, 17, 17, 17, 17, 17,
|
||||
17, 17, 17, 17, 17, 17, 17, 17, 17, 183,
|
||||
17, 17, 17, 17, 17, 17, 17, 17, 17, 17,
|
||||
17, 183, 17, 17, 17, 17, 17, 17, 17, 17,
|
||||
17, 17, 0, 183, 183, 183, 183, 183, 183, 183,
|
||||
183, 183, 183, 183, 183, 183, 183, 183, 183, 183,
|
||||
|
||||
183
|
||||
} ;
|
||||
|
||||
static yyconst flex_int16_t yy_nxt[486] =
|
||||
static yyconst flex_int16_t yy_nxt[560] =
|
||||
{ 0,
|
||||
6, 7, 8, 9, 10, 11, 11, 11, 6, 12,
|
||||
13, 14, 15, 11, 16, 17, 11, 16, 18, 16,
|
||||
17, 19, 17, 17, 17, 17, 20, 17, 21, 17,
|
||||
23, 23, 40, 24, 24, 25, 26, 32, 46, 47,
|
||||
64, 33, 31, 31, 34, 35, 178, 36, 37, 177,
|
||||
38, 39, 34, 34, 39, 39, 39, 34, 34, 34,
|
||||
34, 34, 34, 34, 34, 34, 34, 40, 53, 25,
|
||||
26, 179, 54, 59, 41, 42, 179, 74, 41, 75,
|
||||
179, 41, 41, 41, 31, 31, 43, 44, 176, 45,
|
||||
37, 175, 38, 45, 43, 43, 45, 45, 45, 43,
|
||||
13, 14, 15, 11, 16, 17, 18, 11, 16, 19,
|
||||
16, 17, 20, 17, 17, 17, 17, 21, 17, 22,
|
||||
17, 24, 24, 41, 25, 25, 26, 27, 33, 48,
|
||||
49, 66, 34, 32, 32, 35, 36, 182, 37, 38,
|
||||
181, 39, 40, 35, 32, 35, 40, 40, 40, 35,
|
||||
35, 35, 35, 35, 35, 35, 35, 35, 35, 41,
|
||||
55, 26, 27, 183, 56, 61, 42, 43, 183, 55,
|
||||
42, 93, 183, 56, 42, 42, 42, 32, 32, 44,
|
||||
45, 94, 46, 38, 180, 39, 46, 44, 32, 44,
|
||||
|
||||
43, 43, 43, 43, 43, 43, 43, 43, 43, 43,
|
||||
31, 53, 179, 43, 77, 54, 43, 43, 43, 179,
|
||||
174, 34, 31, 173, 40, 34, 172, 89, 34, 34,
|
||||
34, 58, 64, 97, 37, 59, 90, 179, 59, 59,
|
||||
59, 31, 31, 31, 171, 83, 60, 37, 170, 31,
|
||||
61, 62, 31, 61, 61, 61, 62, 62, 62, 62,
|
||||
62, 62, 62, 62, 62, 62, 65, 66, 91, 74,
|
||||
65, 96, 169, 65, 65, 65, 67, 92, 123, 179,
|
||||
67, 99, 168, 67, 67, 67, 68, 124, 167, 108,
|
||||
68, 110, 113, 68, 68, 68, 76, 109, 166, 111,
|
||||
46, 46, 46, 44, 44, 44, 44, 44, 44, 44,
|
||||
44, 44, 44, 44, 32, 179, 78, 44, 79, 178,
|
||||
41, 44, 44, 44, 32, 32, 32, 183, 66, 81,
|
||||
32, 95, 32, 101, 38, 32, 32, 183, 183, 35,
|
||||
32, 96, 78, 35, 100, 127, 87, 35, 35, 35,
|
||||
60, 183, 177, 103, 61, 128, 112, 114, 61, 61,
|
||||
61, 32, 32, 32, 113, 115, 62, 38, 176, 32,
|
||||
63, 64, 32, 32, 63, 63, 63, 64, 64, 64,
|
||||
64, 64, 64, 64, 64, 64, 64, 67, 68, 117,
|
||||
120, 67, 121, 131, 132, 67, 67, 67, 69, 118,
|
||||
|
||||
77, 114, 165, 77, 77, 77, 35, 115, 78, 37,
|
||||
164, 116, 79, 117, 163, 79, 79, 79, 31, 31,
|
||||
80, 44, 162, 81, 37, 161, 31, 81, 80, 80,
|
||||
81, 81, 81, 80, 80, 80, 80, 80, 80, 80,
|
||||
80, 80, 80, 80, 31, 127, 128, 80, 130, 131,
|
||||
80, 80, 80, 85, 116, 133, 139, 85, 160, 159,
|
||||
85, 85, 85, 86, 134, 158, 157, 86, 83, 116,
|
||||
86, 86, 86, 87, 156, 155, 154, 87, 153, 152,
|
||||
87, 87, 87, 98, 151, 150, 149, 99, 148, 147,
|
||||
99, 99, 99, 100, 146, 145, 144, 100, 143, 142,
|
||||
134, 135, 69, 175, 137, 119, 69, 69, 69, 70,
|
||||
120, 174, 143, 70, 138, 173, 172, 70, 70, 70,
|
||||
32, 32, 171, 170, 169, 168, 32, 167, 72, 166,
|
||||
165, 32, 80, 164, 163, 162, 81, 161, 87, 120,
|
||||
81, 81, 81, 36, 160, 82, 38, 159, 158, 83,
|
||||
157, 156, 155, 83, 83, 83, 32, 32, 84, 45,
|
||||
154, 85, 38, 153, 32, 85, 84, 32, 84, 85,
|
||||
85, 85, 84, 84, 84, 84, 84, 84, 84, 84,
|
||||
84, 84, 84, 32, 152, 151, 84, 150, 149, 148,
|
||||
84, 84, 84, 89, 147, 146, 145, 89, 68, 87,
|
||||
|
||||
100, 100, 100, 103, 141, 66, 83, 103, 83, 37,
|
||||
103, 103, 103, 104, 37, 138, 137, 104, 136, 135,
|
||||
104, 104, 104, 118, 132, 129, 126, 118, 125, 66,
|
||||
118, 118, 118, 119, 83, 83, 179, 119, 97, 74,
|
||||
119, 119, 119, 122, 112, 107, 106, 122, 105, 37,
|
||||
122, 122, 122, 22, 22, 22, 22, 22, 22, 22,
|
||||
22, 22, 27, 27, 27, 27, 27, 27, 27, 27,
|
||||
27, 29, 29, 29, 29, 29, 29, 29, 29, 29,
|
||||
31, 31, 31, 83, 31, 31, 51, 83, 51, 37,
|
||||
51, 51, 51, 51, 51, 52, 95, 52, 52, 52,
|
||||
87, 89, 89, 89, 90, 38, 38, 142, 90, 141,
|
||||
140, 139, 90, 90, 90, 91, 136, 133, 130, 91,
|
||||
129, 68, 87, 91, 91, 91, 32, 32, 87, 183,
|
||||
101, 78, 32, 116, 72, 111, 110, 32, 32, 32,
|
||||
109, 38, 64, 87, 87, 38, 64, 64, 64, 102,
|
||||
99, 98, 97, 103, 92, 87, 58, 103, 103, 103,
|
||||
104, 77, 76, 75, 104, 74, 73, 59, 104, 104,
|
||||
104, 107, 58, 31, 29, 107, 52, 51, 50, 107,
|
||||
107, 107, 108, 31, 29, 183, 108, 183, 183, 183,
|
||||
108, 108, 108, 122, 183, 183, 183, 122, 183, 183,
|
||||
|
||||
52, 52, 52, 52, 55, 55, 55, 55, 55, 55,
|
||||
55, 55, 55, 63, 94, 93, 88, 83, 63, 63,
|
||||
44, 44, 44, 82, 82, 84, 56, 73, 72, 71,
|
||||
84, 84, 101, 101, 102, 102, 120, 120, 121, 121,
|
||||
140, 140, 70, 69, 57, 56, 30, 28, 50, 49,
|
||||
48, 30, 28, 179, 5, 179, 179, 179, 179, 179,
|
||||
179, 179, 179, 179, 179, 179, 179, 179, 179, 179,
|
||||
179, 179, 179, 179, 179, 179, 179, 179, 179, 179,
|
||||
179, 179, 179, 179, 179
|
||||
183, 122, 122, 122, 123, 183, 183, 183, 123, 183,
|
||||
183, 183, 123, 123, 123, 126, 183, 183, 183, 126,
|
||||
183, 183, 183, 126, 126, 126, 23, 23, 23, 23,
|
||||
23, 23, 23, 23, 23, 28, 28, 28, 28, 28,
|
||||
28, 28, 28, 28, 30, 30, 30, 30, 30, 30,
|
||||
30, 30, 30, 32, 32, 32, 183, 32, 32, 47,
|
||||
47, 47, 183, 47, 47, 53, 183, 53, 183, 53,
|
||||
53, 53, 53, 53, 54, 183, 54, 54, 54, 54,
|
||||
54, 54, 54, 57, 57, 57, 57, 57, 57, 57,
|
||||
57, 57, 65, 183, 183, 183, 183, 65, 65, 45,
|
||||
|
||||
45, 45, 71, 71, 71, 183, 71, 71, 86, 86,
|
||||
88, 183, 183, 183, 183, 88, 88, 105, 105, 106,
|
||||
106, 124, 124, 125, 125, 144, 144, 5, 183, 183,
|
||||
183, 183, 183, 183, 183, 183, 183, 183, 183, 183,
|
||||
183, 183, 183, 183, 183, 183, 183, 183, 183, 183,
|
||||
183, 183, 183, 183, 183, 183, 183, 183, 183
|
||||
} ;
|
||||
|
||||
static yyconst flex_int16_t yy_chk[486] =
|
||||
static yyconst flex_int16_t yy_chk[560] =
|
||||
{ 0,
|
||||
1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
|
||||
1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
|
||||
1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
|
||||
3, 4, 40, 3, 4, 7, 7, 12, 18, 18,
|
||||
40, 12, 13, 13, 13, 13, 166, 13, 13, 165,
|
||||
13, 13, 13, 13, 13, 13, 13, 13, 13, 13,
|
||||
13, 13, 13, 13, 13, 13, 13, 14, 24, 25,
|
||||
25, 39, 24, 39, 14, 14, 52, 57, 14, 57,
|
||||
52, 14, 14, 14, 16, 16, 16, 16, 164, 16,
|
||||
16, 163, 16, 16, 16, 16, 16, 16, 16, 16,
|
||||
1, 3, 4, 41, 3, 4, 7, 7, 12, 19,
|
||||
19, 41, 12, 13, 13, 13, 13, 170, 13, 13,
|
||||
169, 13, 13, 13, 13, 13, 13, 13, 13, 13,
|
||||
13, 13, 13, 13, 13, 13, 13, 13, 13, 14,
|
||||
25, 26, 26, 40, 25, 40, 14, 14, 54, 55,
|
||||
14, 74, 54, 55, 14, 14, 14, 16, 16, 16,
|
||||
16, 74, 16, 16, 168, 16, 16, 16, 16, 16,
|
||||
|
||||
16, 16, 16, 16, 16, 16, 16, 16, 16, 17,
|
||||
17, 53, 59, 17, 59, 53, 17, 17, 17, 34,
|
||||
162, 34, 34, 161, 64, 34, 160, 70, 34, 34,
|
||||
34, 36, 64, 76, 76, 36, 70, 83, 36, 36,
|
||||
36, 38, 38, 38, 159, 83, 38, 38, 158, 38,
|
||||
38, 38, 38, 38, 38, 38, 38, 38, 38, 38,
|
||||
38, 38, 38, 38, 38, 38, 41, 41, 71, 75,
|
||||
41, 75, 157, 41, 41, 41, 42, 71, 105, 79,
|
||||
42, 79, 156, 42, 42, 42, 45, 105, 155, 91,
|
||||
45, 92, 94, 45, 45, 45, 58, 91, 154, 92,
|
||||
16, 16, 16, 16, 16, 16, 16, 16, 16, 16,
|
||||
16, 16, 16, 17, 17, 167, 59, 17, 59, 166,
|
||||
66, 17, 17, 17, 18, 18, 18, 61, 66, 61,
|
||||
18, 75, 18, 80, 80, 18, 18, 35, 87, 35,
|
||||
35, 75, 79, 35, 79, 109, 87, 35, 35, 35,
|
||||
37, 83, 165, 83, 37, 109, 95, 96, 37, 37,
|
||||
37, 39, 39, 39, 95, 96, 39, 39, 164, 39,
|
||||
39, 39, 39, 39, 39, 39, 39, 39, 39, 39,
|
||||
39, 39, 39, 39, 39, 39, 39, 42, 42, 98,
|
||||
99, 42, 99, 112, 112, 42, 42, 42, 43, 98,
|
||||
|
||||
58, 94, 153, 58, 58, 58, 60, 94, 60, 60,
|
||||
152, 95, 60, 95, 151, 60, 60, 60, 61, 61,
|
||||
61, 61, 150, 61, 61, 148, 61, 61, 61, 61,
|
||||
61, 61, 61, 61, 61, 61, 61, 61, 61, 61,
|
||||
61, 61, 61, 62, 62, 108, 108, 62, 110, 110,
|
||||
62, 62, 62, 65, 117, 112, 117, 65, 147, 145,
|
||||
65, 65, 65, 67, 112, 142, 141, 67, 140, 139,
|
||||
67, 67, 67, 68, 138, 137, 136, 68, 135, 134,
|
||||
68, 68, 68, 78, 133, 132, 131, 78, 130, 129,
|
||||
78, 78, 78, 81, 128, 127, 126, 81, 125, 124,
|
||||
114, 114, 43, 163, 116, 98, 43, 43, 43, 46,
|
||||
121, 162, 121, 46, 116, 161, 160, 46, 46, 46,
|
||||
47, 47, 159, 158, 157, 156, 47, 155, 47, 154,
|
||||
152, 47, 60, 151, 149, 146, 60, 145, 144, 143,
|
||||
60, 60, 60, 62, 142, 62, 62, 141, 140, 62,
|
||||
139, 138, 137, 62, 62, 62, 63, 63, 63, 63,
|
||||
136, 63, 63, 135, 63, 63, 63, 63, 63, 63,
|
||||
63, 63, 63, 63, 63, 63, 63, 63, 63, 63,
|
||||
63, 63, 64, 64, 134, 133, 64, 132, 131, 130,
|
||||
64, 64, 64, 67, 129, 128, 127, 67, 126, 125,
|
||||
|
||||
81, 81, 81, 85, 123, 122, 121, 85, 120, 119,
|
||||
85, 85, 85, 86, 118, 116, 115, 86, 114, 113,
|
||||
86, 86, 86, 98, 111, 109, 107, 98, 106, 103,
|
||||
98, 98, 98, 100, 102, 101, 99, 100, 97, 96,
|
||||
100, 100, 100, 104, 93, 90, 89, 104, 88, 87,
|
||||
104, 104, 104, 180, 180, 180, 180, 180, 180, 180,
|
||||
180, 180, 181, 181, 181, 181, 181, 181, 181, 181,
|
||||
181, 182, 182, 182, 182, 182, 182, 182, 182, 182,
|
||||
183, 183, 183, 84, 183, 183, 184, 82, 184, 77,
|
||||
184, 184, 184, 184, 184, 185, 74, 185, 185, 185,
|
||||
124, 67, 67, 67, 69, 123, 122, 120, 69, 119,
|
||||
118, 117, 69, 69, 69, 70, 115, 113, 111, 70,
|
||||
110, 107, 106, 70, 70, 70, 71, 71, 105, 103,
|
||||
101, 100, 71, 97, 71, 94, 93, 71, 72, 72,
|
||||
92, 91, 72, 88, 86, 81, 72, 72, 72, 82,
|
||||
78, 77, 76, 82, 73, 65, 57, 82, 82, 82,
|
||||
85, 52, 51, 50, 85, 49, 48, 36, 85, 85,
|
||||
85, 89, 34, 30, 28, 89, 22, 21, 20, 89,
|
||||
89, 89, 90, 10, 9, 5, 90, 0, 0, 0,
|
||||
90, 90, 90, 102, 0, 0, 0, 102, 0, 0,
|
||||
|
||||
0, 102, 102, 102, 104, 0, 0, 0, 104, 0,
|
||||
0, 0, 104, 104, 104, 108, 0, 0, 0, 108,
|
||||
0, 0, 0, 108, 108, 108, 184, 184, 184, 184,
|
||||
184, 184, 184, 184, 184, 185, 185, 185, 185, 185,
|
||||
185, 185, 185, 185, 186, 186, 186, 186, 186, 186,
|
||||
186, 186, 186, 187, 73, 72, 69, 63, 187, 187,
|
||||
188, 188, 188, 189, 189, 190, 55, 50, 49, 48,
|
||||
190, 190, 191, 191, 192, 192, 193, 193, 194, 194,
|
||||
195, 195, 47, 46, 35, 33, 29, 27, 21, 20,
|
||||
19, 10, 9, 5, 179, 179, 179, 179, 179, 179,
|
||||
179, 179, 179, 179, 179, 179, 179, 179, 179, 179,
|
||||
179, 179, 179, 179, 179, 179, 179, 179, 179, 179,
|
||||
179, 179, 179, 179, 179
|
||||
186, 186, 186, 187, 187, 187, 0, 187, 187, 188,
|
||||
188, 188, 0, 188, 188, 189, 0, 189, 0, 189,
|
||||
189, 189, 189, 189, 190, 0, 190, 190, 190, 190,
|
||||
190, 190, 190, 191, 191, 191, 191, 191, 191, 191,
|
||||
191, 191, 192, 0, 0, 0, 0, 192, 192, 193,
|
||||
|
||||
193, 193, 194, 194, 194, 0, 194, 194, 195, 195,
|
||||
196, 0, 0, 0, 0, 196, 196, 197, 197, 198,
|
||||
198, 199, 199, 200, 200, 201, 201, 183, 183, 183,
|
||||
183, 183, 183, 183, 183, 183, 183, 183, 183, 183,
|
||||
183, 183, 183, 183, 183, 183, 183, 183, 183, 183,
|
||||
183, 183, 183, 183, 183, 183, 183, 183, 183
|
||||
} ;
|
||||
|
||||
static yy_state_type yy_last_accepting_state;
|
||||
@ -669,7 +689,7 @@ orte_hostfile_value_t orte_util_hostfile_value;
|
||||
bool orte_util_hostfile_done = false;
|
||||
|
||||
|
||||
#line 673 "util/hostfile/hostfile_lex.c"
|
||||
#line 693 "util/hostfile/hostfile_lex.c"
|
||||
|
||||
#define INITIAL 0
|
||||
#define comment 1
|
||||
@ -826,7 +846,7 @@ YY_DECL
|
||||
#line 60 "hostfile_lex.l"
|
||||
|
||||
|
||||
#line 830 "util/hostfile/hostfile_lex.c"
|
||||
#line 850 "util/hostfile/hostfile_lex.c"
|
||||
|
||||
if ( !(yy_init) )
|
||||
{
|
||||
@ -879,13 +899,13 @@ yy_match:
|
||||
while ( yy_chk[yy_base[yy_current_state] + yy_c] != yy_current_state )
|
||||
{
|
||||
yy_current_state = (int) yy_def[yy_current_state];
|
||||
if ( yy_current_state >= 180 )
|
||||
if ( yy_current_state >= 184 )
|
||||
yy_c = yy_meta[(unsigned int) yy_c];
|
||||
}
|
||||
yy_current_state = yy_nxt[yy_base[yy_current_state] + (unsigned int) yy_c];
|
||||
++yy_cp;
|
||||
}
|
||||
while ( yy_base[yy_current_state] != 455 );
|
||||
while ( yy_base[yy_current_state] != 528 );
|
||||
|
||||
yy_find_action:
|
||||
yy_act = yy_accept[yy_current_state];
|
||||
@ -998,7 +1018,7 @@ case 15:
|
||||
YY_RULE_SETUP
|
||||
#line 91 "hostfile_lex.l"
|
||||
{ orte_util_hostfile_value.sval = orte_util_hostfile_text;
|
||||
return ORTE_HOSTFILE_SLOT; }
|
||||
return ORTE_HOSTFILE_SLOTS_MAX; }
|
||||
YY_BREAK
|
||||
case 16:
|
||||
YY_RULE_SETUP
|
||||
@ -1068,9 +1088,9 @@ YY_RULE_SETUP
|
||||
YY_BREAK
|
||||
case 27:
|
||||
YY_RULE_SETUP
|
||||
#line 115 "hostfile_lex.l"
|
||||
#line 116 "hostfile_lex.l"
|
||||
{ orte_util_hostfile_value.sval = orte_util_hostfile_text;
|
||||
return ORTE_HOSTFILE_SLOTS_MAX; }
|
||||
return ORTE_HOSTFILE_USERNAME; }
|
||||
YY_BREAK
|
||||
case 28:
|
||||
YY_RULE_SETUP
|
||||
@ -1086,13 +1106,7 @@ YY_RULE_SETUP
|
||||
YY_BREAK
|
||||
case 30:
|
||||
YY_RULE_SETUP
|
||||
#line 122 "hostfile_lex.l"
|
||||
{ orte_util_hostfile_value.sval = orte_util_hostfile_text;
|
||||
return ORTE_HOSTFILE_USERNAME; }
|
||||
YY_BREAK
|
||||
case 31:
|
||||
YY_RULE_SETUP
|
||||
#line 125 "hostfile_lex.l"
|
||||
#line 123 "hostfile_lex.l"
|
||||
{ orte_util_hostfile_value.ival = atol(orte_util_hostfile_text);
|
||||
return ORTE_HOSTFILE_INT; }
|
||||
YY_BREAK
|
||||
@ -1101,45 +1115,45 @@ YY_RULE_SETUP
|
||||
* followed by username@hostname or hostname
|
||||
*/
|
||||
|
||||
case 32:
|
||||
case 31:
|
||||
YY_RULE_SETUP
|
||||
#line 133 "hostfile_lex.l"
|
||||
#line 131 "hostfile_lex.l"
|
||||
{ orte_util_hostfile_value.sval = orte_util_hostfile_text;
|
||||
return ORTE_HOSTFILE_STRING; }
|
||||
YY_BREAK
|
||||
case 33:
|
||||
case 32:
|
||||
YY_RULE_SETUP
|
||||
#line 136 "hostfile_lex.l"
|
||||
#line 134 "hostfile_lex.l"
|
||||
{
|
||||
orte_util_hostfile_value.sval = orte_util_hostfile_text;
|
||||
return ORTE_HOSTFILE_IPV4; }
|
||||
YY_BREAK
|
||||
case 34:
|
||||
case 33:
|
||||
YY_RULE_SETUP
|
||||
#line 140 "hostfile_lex.l"
|
||||
#line 138 "hostfile_lex.l"
|
||||
{
|
||||
orte_util_hostfile_value.sval = orte_util_hostfile_text;
|
||||
return ORTE_HOSTFILE_IPV6; }
|
||||
YY_BREAK
|
||||
case 35:
|
||||
case 34:
|
||||
YY_RULE_SETUP
|
||||
#line 144 "hostfile_lex.l"
|
||||
#line 142 "hostfile_lex.l"
|
||||
{
|
||||
orte_util_hostfile_value.sval = orte_util_hostfile_text;
|
||||
return ORTE_HOSTFILE_HOSTNAME; }
|
||||
YY_BREAK
|
||||
case 36:
|
||||
case 35:
|
||||
YY_RULE_SETUP
|
||||
#line 148 "hostfile_lex.l"
|
||||
#line 146 "hostfile_lex.l"
|
||||
{ orte_util_hostfile_value.sval = orte_util_hostfile_text;
|
||||
return ORTE_HOSTFILE_ERROR; }
|
||||
YY_BREAK
|
||||
case 37:
|
||||
case 36:
|
||||
YY_RULE_SETUP
|
||||
#line 151 "hostfile_lex.l"
|
||||
#line 149 "hostfile_lex.l"
|
||||
ECHO;
|
||||
YY_BREAK
|
||||
#line 1143 "util/hostfile/hostfile_lex.c"
|
||||
#line 1157 "util/hostfile/hostfile_lex.c"
|
||||
case YY_STATE_EOF(INITIAL):
|
||||
case YY_STATE_EOF(comment):
|
||||
yyterminate();
|
||||
@ -1424,7 +1438,7 @@ static int yy_get_next_buffer (void)
|
||||
while ( yy_chk[yy_base[yy_current_state] + yy_c] != yy_current_state )
|
||||
{
|
||||
yy_current_state = (int) yy_def[yy_current_state];
|
||||
if ( yy_current_state >= 180 )
|
||||
if ( yy_current_state >= 184 )
|
||||
yy_c = yy_meta[(unsigned int) yy_c];
|
||||
}
|
||||
yy_current_state = yy_nxt[yy_base[yy_current_state] + (unsigned int) yy_c];
|
||||
@ -1452,11 +1466,11 @@ static int yy_get_next_buffer (void)
|
||||
while ( yy_chk[yy_base[yy_current_state] + yy_c] != yy_current_state )
|
||||
{
|
||||
yy_current_state = (int) yy_def[yy_current_state];
|
||||
if ( yy_current_state >= 180 )
|
||||
if ( yy_current_state >= 184 )
|
||||
yy_c = yy_meta[(unsigned int) yy_c];
|
||||
}
|
||||
yy_current_state = yy_nxt[yy_base[yy_current_state] + (unsigned int) yy_c];
|
||||
yy_is_jam = (yy_current_state == 179);
|
||||
yy_is_jam = (yy_current_state == 183);
|
||||
|
||||
return yy_is_jam ? 0 : yy_current_state;
|
||||
}
|
||||
@ -2126,7 +2140,7 @@ void orte_util_hostfile_free (void * ptr )
|
||||
|
||||
#define YYTABLES_NAME "yytables"
|
||||
|
||||
#line 151 "hostfile_lex.l"
|
||||
#line 149 "hostfile_lex.l"
|
||||
|
||||
|
||||
|
||||
|
@ -88,8 +88,6 @@ count { orte_util_hostfile_value.sval = yytext;
|
||||
return ORTE_HOSTFILE_COUNT; }
|
||||
slots { orte_util_hostfile_value.sval = yytext;
|
||||
return ORTE_HOSTFILE_SLOTS; }
|
||||
slot { orte_util_hostfile_value.sval = yytext;
|
||||
return ORTE_HOSTFILE_SLOT; }
|
||||
"slots-max" { orte_util_hostfile_value.sval = yytext;
|
||||
return ORTE_HOSTFILE_SLOTS_MAX; }
|
||||
slots_max { orte_util_hostfile_value.sval = yytext;
|
||||
@ -141,7 +139,7 @@ username { orte_util_hostfile_value.sval = yytext;
|
||||
orte_util_hostfile_value.sval = yytext;
|
||||
return ORTE_HOSTFILE_IPV6; }
|
||||
|
||||
([A-Za-z0-9][A-Za-z0-9_\-]*"@")?[A-Za-z][A-Za-z0-9_\-\.]* {
|
||||
(\^?[A-Za-z0-9][A-Za-z0-9_\-]*"@")?[A-Za-z][A-Za-z0-9_\-\.]* {
|
||||
orte_util_hostfile_value.sval = yytext;
|
||||
return ORTE_HOSTFILE_HOSTNAME; }
|
||||
|
||||
|
Загрузка…
x
Ссылка в новой задаче
Block a user