X-Git-Url: http://info.iut-bm.univ-fcomte.fr/pub/gitweb/simgrid.git/blobdiff_plain/2472771bffee0a2c29b69a2e2b6206f0bb819af1..2d16ebcee6bde01575b4cd88a853e1ac1c2532bf:/src/gras/DataDesc/ddt_parse.yy.l diff --git a/src/gras/DataDesc/ddt_parse.yy.l b/src/gras/DataDesc/ddt_parse.yy.l deleted file mode 100644 index 29d029d59a..0000000000 --- a/src/gras/DataDesc/ddt_parse.yy.l +++ /dev/null @@ -1,238 +0,0 @@ -/* DataDesc/ddt_parse -- automatic parsing of data structures */ - -/* Copyright (c) 2004 Arnaud Legrand, Martin Quinson. All rights reserved. */ - -/* This program is free software; you can redistribute it and/or modify it - * under the terms of the license (GNU LGPL) which comes with this package. */ - -%option noyywrap -%{ -#include "gras/DataDesc/datadesc_private.h" -#include "gras/DataDesc/ddt_parse.yy.h" -#include - YY_BUFFER_STATE gras_ddt_input_buffer; - FILE *gras_ddt_file_to_parse; - - int gras_ddt_parse_line_pos = 1; - int gras_ddt_parse_col_pos = 0; - int gras_ddt_parse_char_pos = 0; - int gras_ddt_parse_tok_num = 0; - const char *definition; - XBT_LOG_NEW_DEFAULT_SUBCATEGORY(gras_ddt_lexer,gras_ddt_parse,"The crude internals of the lexer used for type parsing"); -#define SHOW_WHERE XBT_DEBUG("%d:%d (char #%d): seen '%s'", gras_ddt_parse_line_pos,gras_ddt_parse_col_pos,gras_ddt_parse_char_pos,yytext) -%} - -%x annotate comment foo -space [ \t] -letter [A-Za-z._-] -digit [0-9] - -%% - int comment_caller=0; - int annotate_caller=0; - -"//"[^\n]* - -"/*g"{space}* { /****************** ANNOTATION ************************/ - XBT_DEBUG("Begin annotation"); - annotate_caller = INITIAL; - gras_ddt_parse_char_pos+= strlen(yytext); - gras_ddt_parse_col_pos+= strlen(yytext); - BEGIN(annotate); -} -"/*g"{space}* { /* trim annotation */ - XBT_DEBUG("Begin annotation"); - annotate_caller = foo; - gras_ddt_parse_char_pos+= strlen(yytext); - gras_ddt_parse_col_pos+= strlen(yytext); - BEGIN(annotate); -} - -{space}*"g*/" { - XBT_DEBUG("End annotation"); - gras_ddt_parse_char_pos+= strlen(yytext); - gras_ddt_parse_col_pos+= strlen(yytext); - BEGIN(annotate_caller); -} - -"*/" { - PARSE_ERROR("``/*g'' construct closed by a regular ``*/''"); -} -\n { - PARSE_ERROR("Type annotation cannot spread over several lines"); -} - -.* { /* eat the rest */ - gras_ddt_parse_char_pos+= strlen(yytext); - gras_ddt_parse_col_pos+= strlen(yytext); - return GRAS_DDT_PARSE_TOKEN_ANNOTATE; -} - -"/*[^g]" { /****************** COMMENTS ************************/ - /* constructs like : */ - /*g [string] g*/ - /* are not comments but size annotations */ - comment_caller = INITIAL; - BEGIN(comment); -} - -"/*[^g]" { - comment_caller = foo; - BEGIN(comment); -} - -[^*\n]* { /* eat anything that's not a '*' */ -} -"*"+[^*/\n]* { /* eat up '*'s not followed by '/'s */ -} -\n { - ++gras_ddt_parse_line_pos; - gras_ddt_parse_col_pos=0; - gras_ddt_parse_char_pos++; -} -"*"+"/" { - gras_ddt_parse_char_pos+= strlen(yytext); - gras_ddt_parse_col_pos+= strlen(yytext); - BEGIN(comment_caller); -} - -({letter}|{digit})* { /****************** STATEMENTS ************************/ - gras_ddt_parse_char_pos += strlen(yytext); - gras_ddt_parse_col_pos += strlen(yytext); - SHOW_WHERE; - return(GRAS_DDT_PARSE_TOKEN_WORD); -} -"{" { - gras_ddt_parse_char_pos++; - gras_ddt_parse_col_pos++; - SHOW_WHERE; - return(GRAS_DDT_PARSE_TOKEN_LA); -} -"}" { - gras_ddt_parse_char_pos++; - gras_ddt_parse_col_pos++; - SHOW_WHERE; - return(GRAS_DDT_PARSE_TOKEN_RA); -} -"[" { - gras_ddt_parse_char_pos++; - gras_ddt_parse_col_pos++; - SHOW_WHERE; - return(GRAS_DDT_PARSE_TOKEN_LB); -} -"]" { - gras_ddt_parse_char_pos++; - gras_ddt_parse_col_pos++; - SHOW_WHERE; - return(GRAS_DDT_PARSE_TOKEN_RB); -} -"(" { - gras_ddt_parse_char_pos++; - gras_ddt_parse_col_pos++; - SHOW_WHERE; - return(GRAS_DDT_PARSE_TOKEN_LP); -} -")" { - gras_ddt_parse_char_pos++; - gras_ddt_parse_col_pos++; - SHOW_WHERE; - return(GRAS_DDT_PARSE_TOKEN_RP); -} -"*" { - gras_ddt_parse_char_pos++; - gras_ddt_parse_col_pos++; - SHOW_WHERE; - return(GRAS_DDT_PARSE_TOKEN_STAR); -} -";" { - gras_ddt_parse_char_pos++; - gras_ddt_parse_col_pos++; - SHOW_WHERE; - return(GRAS_DDT_PARSE_TOKEN_SEMI_COLON); -} -"," { - gras_ddt_parse_char_pos++; - gras_ddt_parse_col_pos++; - SHOW_WHERE; - return(GRAS_DDT_PARSE_TOKEN_COLON); -} -"\n" { - gras_ddt_parse_line_pos++; - gras_ddt_parse_char_pos++; - gras_ddt_parse_col_pos=0; - SHOW_WHERE; -} -. { - gras_ddt_parse_char_pos++; - gras_ddt_parse_col_pos++; - SHOW_WHERE; -} -%% -/* {space}+ { return(TOKEN_SPACE);} */ - -void gras_ddt_parse_dump(void) { - switch(gras_ddt_parse_tok_num) { - case GRAS_DDT_PARSE_TOKEN_LA : {printf("TOKEN_LA ");break;} - case GRAS_DDT_PARSE_TOKEN_RA : {printf("TOKEN_RA ");break;} - case GRAS_DDT_PARSE_TOKEN_WORD : {printf("TOKEN_WORD ");break;} - /* case GRAS_DDT_PARSE_TOKEN_SPACE : {printf("TOKEN_SPACE ");break;}*/ - /* case GRAS_DDT_PARSE_TOKEN_COMMENT : {printf("TOKEN_COMMENT ");break;}*/ - case GRAS_DDT_PARSE_TOKEN_NEWLINE : {printf("TOKEN_NEWLINE\n");return;} - case GRAS_DDT_PARSE_TOKEN_EMPTY : {printf("TOKEN_EMPTY\n");return;} - default : {printf("Unknown token %d\n", gras_ddt_parse_tok_num);return;} - } - printf("-->%s<-- [line %d, pos %d]\n",yytext,gras_ddt_parse_line_pos,gras_ddt_parse_char_pos); - return; -} - -int gras_ddt_parse_lex_n_dump(void) { - gras_ddt_parse_tok_num = gras_ddt_parse_lex(); - /* gras_ddt_parse_char_pos += strlen(yytext);*/ - return(gras_ddt_parse_tok_num); -} - -void gras_ddt_parse_pointer_init(const char *file) { - gras_ddt_file_to_parse = fopen(file,"r"); - gras_ddt_input_buffer = yy_create_buffer( gras_ddt_file_to_parse, 10 ); - yy_switch_to_buffer(gras_ddt_input_buffer); - - gras_ddt_parse_line_pos = 1; - gras_ddt_parse_char_pos = 0; - gras_ddt_parse_col_pos = 0; - gras_ddt_parse_tok_num = 0; -} - -void gras_ddt_parse_pointer_close(void) { - yy_delete_buffer(gras_ddt_input_buffer); - fclose(gras_ddt_file_to_parse); - - gras_ddt_parse_line_pos = 1; - gras_ddt_parse_char_pos = 0; - gras_ddt_parse_tok_num = 0; -} - - -void gras_ddt_parse_pointer_string_init(const char *string_to_parse) { - gras_ddt_input_buffer = yy_scan_string (string_to_parse); - definition = string_to_parse; - yy_switch_to_buffer(gras_ddt_input_buffer); - - gras_ddt_parse_line_pos = 1; - gras_ddt_parse_char_pos = 0; - gras_ddt_parse_tok_num = 0; -} - -void gras_ddt_parse_pointer_string_close(void) { - yy_delete_buffer(gras_ddt_input_buffer); - - gras_ddt_parse_line_pos = 1; - gras_ddt_parse_char_pos = 0; - gras_ddt_parse_tok_num = 0; - - if (0) - yyunput('\0',NULL); /* fake a use of this function to calm gcc down */ -} - -/* Local variables:*/ -/* mode: c */ -/* End: */