Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

support for aquiring a tokens matched string like $$.buf or yy.text #14

Open
mgood7123 opened this issue Oct 21, 2018 · 0 comments
Open

Comments

@mgood7123
Copy link

how can i obtain a tokens matched string as it is difficult to do so, for example

{
#include <stdio.h>

typedef struct My_Sym {
  int value;
} My_Sym;
#define D_UserSym My_Sym
typedef struct My_ParseNode {
  int value;
  struct D_Scope *scope;
} My_ParseNode;
#define D_ParseNode_User My_ParseNode
}

{
#include "libdparse.h"
#define f(x, y) if (y) x(y)
}

/* r: constant* [ puts("const"); ]; */

translation_unit: terminal* s;

terminal : identifier s ':' s rule* s ';' ;
rule : i* s rule* s ;

i : decimalint* s | hexint* s | octalint* s | character* s | float1* s | float2* s | string* s | identifier* s | integer* s | i* s;

s: [
	puts("speculative start");
	char * c = NULL;
	ps($n.start_loc.s);
	ps($n.end);
	ps($n.end_skip);
	for (c = $n.start_loc.s; c < $n.end_skip; c++) pc(*c);
	ps($n.start_loc.s)
	ps($n.end)
	puts("speculative end");
] 
{
	puts("final start");
	char * c = NULL;
	ps($n.start_loc.s);
	ps($n.end);
	ps($n.end_skip);
	for (c = $n.start_loc.s; c < $n.end_skip; c++) pc(*c);
	ps($n.start_loc.s)
	ps($n.end)
	puts("final end");
};


symbols : "[!~`@#$%^&*\-_+=|:;\\<,>.?/]";
character : "'([^'\\]|\\[^])*'";
float1 : "([0-9]+.[0-9]*|[0-9]*.[0-9]+)([eE][\-\+]?[0-9]+)?[fFlL]?" $term -4;
float2 : "[0-9]+[eE][\-\+]?[0-9]+[fFlL]?" $term -5;
string : "'([^'\\]|\\[^])*'";
regex : "\"([^\"\\]|\\[^])*\"";
unicode_char : "[uU]\+[0-9a-fA-F]+";
decimalint : "-?[1-9][0-9]*[uUlL]?";
hexint : "-?(0x|0X)[0-9a-fA-F]+[uUlL]?";
octalint : "-?0[0-7]*[uUlL]?";
 
statement 
  : expression ';'
  { printf("val %d\n", $0.value); }
  | '{' new_scope statement* '}'
  [ ${scope} = enter_D_Scope(${scope}, $n0.scope); ]
  ;

new_scope: [ ${scope} = new_D_Scope(${scope}); ];

expression 
  : identifier ':' expression 
  [ 
    D_Sym *s;
	ps($n.start_loc.s);
	ps($n.end);
    if (find_D_Sym_in_Scope(${scope}, ${scope}, $n0.start_loc.s, $n0.end))
      printf("duplicate identifier line %d\n", $n0.start_loc.line);
    s = NEW_D_SYM(${scope}, $n0.start_loc.s, $n0.end);
    s->user.value = $2.value;
    $$.value = s->user.value;
  ]
  | identifier '=' expression
  [ D_Sym *s = find_D_Sym(${scope}, $n0.start_loc.s, $n0.end);
    s = UPDATE_D_SYM(s, &${scope});
    s->user.value = $2.value;
    $$.value = s->user.value;
  ]
  | integer 
  [ $$.value = atoi($n0.start_loc.s); ]
  | identifier 
  [ D_Sym *s = find_D_Sym(${scope}, $n0.start_loc.s, $n0.end);
    if (s)
      $$.value = s->user.value;
  ]
  | expression '+' expression
  [ $$.value = $0.value + $1.value; ]
  ;

integer: "-?([0-9]|0(x|X))[0-9]*(u|U|b|B|w|W|L|l)*" $term -1;
identifier: "[a-zA-Z_][a-zA-Z_0-9]*";

results in:

mobile_c@Mobile-C:~/git/dparser$ ./make_dparser ./PARSER_GRAMMER.g && gcc PARSER_GRAMMER.c -lpthread && ./a.out PARSER_LEXER.g -v  -v
In file included from ../CCR/Scripts/Shell/shell.h:18:0,
                 from PARSER_GRAMMER.c:4:
../CCR/Scripts/Shell/builtins/env.h: In function ‘env__get_env’:
../CCR/Scripts/Shell/builtins/env.h:355:10: warning: return from incompatible pointer type [-Wincompatible-pointer-types]
   return *b;
          ^~
In file included from ../CCR/Scripts/Shell/shell.h:125:0,
                 from PARSER_GRAMMER.c:4:
../CCR/Scripts/Shell/builtins/whereis.h: In function ‘builtin__whereis’:
../CCR/Scripts/Shell/builtins/whereis.h:51:16: warning: initialization discards ‘const’ qualifier from pointer target type [-Wdiscarded-qualifiers]
  char * file = argv[skip_arg0];
                ^~~~
../CCR/Scripts/Shell/builtins/whereis.h:35:143: warning: function returns address of local variable [-Wreturn-local-addr]
 #define try DEBUG printf("trying %s\n", ph); if (access(ph, F_OK) == 0) { if (shell.builtin) printf("found '%s' at '%s'\n", file, ph); return ph; }
                                                                                                                                               ^
../CCR/Scripts/Shell/builtins/whereis.h:75:5: note: in expansion of macro ‘try’
     try
     ^~~
../CCR/Scripts/Shell/builtins/whereis.h:35:143: warning: function returns address of local variable [-Wreturn-local-addr]
 #define try DEBUG printf("trying %s\n", ph); if (access(ph, F_OK) == 0) { if (shell.builtin) printf("found '%s' at '%s'\n", file, ph); return ph; }
                                                                                                                                               ^
../CCR/Scripts/Shell/builtins/whereis.h:77:5: note: in expansion of macro ‘try’
     try
     ^~~
../CCR/Scripts/Shell/builtins/whereis.h:35:143: warning: function returns address of local variable [-Wreturn-local-addr]
 #define try DEBUG printf("trying %s\n", ph); if (access(ph, F_OK) == 0) { if (shell.builtin) printf("found '%s' at '%s'\n", file, ph); return ph; }
                                                                                                                                               ^
../CCR/Scripts/Shell/builtins/whereis.h:80:5: note: in expansion of macro ‘try’
     try
     ^~~
../CCR/Scripts/Shell/builtins/whereis.h:35:143: warning: function returns address of local variable [-Wreturn-local-addr]
 #define try DEBUG printf("trying %s\n", ph); if (access(ph, F_OK) == 0) { if (shell.builtin) printf("found '%s' at '%s'\n", file, ph); return ph; }
                                                                                                                                               ^
../CCR/Scripts/Shell/builtins/whereis.h:87:4: note: in expansion of macro ‘try’
    try
    ^~~
../CCR/Scripts/Shell/builtins/whereis.h:35:143: warning: function returns address of local variable [-Wreturn-local-addr]
 #define try DEBUG printf("trying %s\n", ph); if (access(ph, F_OK) == 0) { if (shell.builtin) printf("found '%s' at '%s'\n", file, ph); return ph; }
                                                                                                                                               ^
../CCR/Scripts/Shell/builtins/whereis.h:89:4: note: in expansion of macro ‘try’
    try
    ^~~
../CCR/Scripts/Shell/builtins/whereis.h:35:143: warning: function returns address of local variable [-Wreturn-local-addr]
 #define try DEBUG printf("trying %s\n", ph); if (access(ph, F_OK) == 0) { if (shell.builtin) printf("found '%s' at '%s'\n", file, ph); return ph; }
                                                                                                                                               ^
../CCR/Scripts/Shell/builtins/whereis.h:92:4: note: in expansion of macro ‘try’
    try
    ^~~
../CCR/Scripts/Shell/builtins/whereis.h:35:143: warning: function returns address of local variable [-Wreturn-local-addr]
 #define try DEBUG printf("trying %s\n", ph); if (access(ph, F_OK) == 0) { if (shell.builtin) printf("found '%s' at '%s'\n", file, ph); return ph; }
                                                                                                                                               ^
../CCR/Scripts/Shell/builtins/whereis.h:96:3: note: in expansion of macro ‘try’
   try
   ^~~
../CCR/Scripts/Shell/builtins/whereis.h:35:143: warning: function returns address of local variable [-Wreturn-local-addr]
 #define try DEBUG printf("trying %s\n", ph); if (access(ph, F_OK) == 0) { if (shell.builtin) printf("found '%s' at '%s'\n", file, ph); return ph; }
                                                                                                                                               ^
../CCR/Scripts/Shell/builtins/whereis.h:98:3: note: in expansion of macro ‘try’
   try
   ^~~
In file included from ../CCR/Scripts/Shell/shell.h:135:0,
                 from PARSER_GRAMMER.c:4:
../CCR/Scripts/Shell/builtins/argv.h: In function ‘Xmalloc’:
../CCR/Scripts/Shell/builtins/argv.h:30:25: warning: format ‘%d’ expects argument of type ‘int’, but argument 3 has type ‘size_t {aka long unsigned int}’ [-Wformat=]
         fprintf(stderr, nomem, sz);
                         ^~~~~
../CCR/Scripts/Shell/builtins/argv.h: In function ‘Xrealloc’:
../CCR/Scripts/Shell/builtins/argv.h:41:25: warning: format ‘%d’ expects argument of type ‘int’, but argument 3 has type ‘size_t {aka long unsigned int}’ [-Wformat=]
         fprintf(stderr, nomem, sz);
                         ^~~~~
In file included from PARSER_GRAMMER.c:4:0:
../CCR/Scripts/Shell/shell.h: In function ‘builtin’:
../CCR/Scripts/Shell/shell.h:179:43: warning: passing argument 2 of ‘builtin__hex’ from incompatible pointer type [-Wincompatible-pointer-types]
   ifb("hex") iftimeret(builtin__hex(argc, argv))
                                           ^
../CCR/Scripts/Shell/shell.h:161:24: note: in definition of macro ‘iftimeret’
 #define iftimeret(x) { x; }
                        ^
../CCR/Scripts/Shell/shell.h:164:5: note: expected ‘char **’ but argument is of type ‘const char **’
 int builtin__hex(int argc, char * argv[]) { return 0; }
     ^~~~~~~~~~~~
../CCR/Scripts/Shell/shell.h:180:45: warning: passing argument 2 of ‘builtin__cat’ from incompatible pointer type [-Wincompatible-pointer-types]
   elifb("cat") iftimeret(builtin__cat(argc, argv))
                                             ^
../CCR/Scripts/Shell/shell.h:161:24: note: in definition of macro ‘iftimeret’
 #define iftimeret(x) { x; }
                        ^
../CCR/Scripts/Shell/shell.h:165:5: note: expected ‘char **’ but argument is of type ‘const char **’
 int builtin__cat(int argc, char * argv[]) { return 0; }
     ^~~~~~~~~~~~
../CCR/Scripts/Shell/shell.h:181:52: warning: passing argument 2 of ‘builtin__json’ from incompatible pointer type [-Wincompatible-pointer-types]
   elifb("json") iftimeret(puts(builtin__json(argc, argv)))
                                                    ^
../CCR/Scripts/Shell/shell.h:161:24: note: in definition of macro ‘iftimeret’
 #define iftimeret(x) { x; }
                        ^
../CCR/Scripts/Shell/shell.h:166:5: note: expected ‘char **’ but argument is of type ‘const char **’
 int builtin__json(int argc, char * argv[]) { return 0; }
     ^~~~~~~~~~~~~
../CCR/Scripts/Shell/shell.h:181:32: warning: passing argument 1 of ‘puts’ makes pointer from integer without a cast [-Wint-conversion]
   elifb("json") iftimeret(puts(builtin__json(argc, argv)))
                                ^
../CCR/Scripts/Shell/shell.h:161:24: note: in definition of macro ‘iftimeret’
 #define iftimeret(x) { x; }
                        ^
In file included from ../CCR/Scripts/Shell/shell.h:6:0,
                 from PARSER_GRAMMER.c:4:
/usr/include/stdio.h:632:12: note: expected ‘const char *’ but argument is of type ‘int’
 extern int puts (const char *__s);
            ^~~~
In file included from PARSER_GRAMMER.c:4:0:
../CCR/Scripts/Shell/shell.h:182:45: warning: passing argument 2 of ‘builtin__xxd’ from incompatible pointer type [-Wincompatible-pointer-types]
   elifb("xxd") iftimeret(builtin__xxd(argc, argv))
                                             ^
../CCR/Scripts/Shell/shell.h:161:24: note: in definition of macro ‘iftimeret’
 #define iftimeret(x) { x; }
                        ^
../CCR/Scripts/Shell/shell.h:167:5: note: expected ‘char **’ but argument is of type ‘const char **’
 int builtin__xxd(int argc, char * argv[]) { return 0; }
     ^~~~~~~~~~~~
../CCR/Scripts/Shell/shell.h:183:54: warning: passing argument 2 of ‘builtin__CPU_Info’ from incompatible pointer type [-Wincompatible-pointer-types]
   elifb("CPUInfo") iftimeret(builtin__CPU_Info(argc, argv))
                                                      ^
../CCR/Scripts/Shell/shell.h:161:24: note: in definition of macro ‘iftimeret’
 #define iftimeret(x) { x; }
                        ^
../CCR/Scripts/Shell/shell.h:168:5: note: expected ‘char **’ but argument is of type ‘const char **’
 int builtin__CPU_Info(int argc, char * argv[]) { return 0; }
     ^~~~~~~~~~~~~~~~~
../CCR/Scripts/Shell/shell.h:184:43: warning: passing argument 2 of ‘builtin__ls’ from incompatible pointer type [-Wincompatible-pointer-types]
   elifb("ls") iftimeret(builtin__ls(argc, argv))
                                           ^
../CCR/Scripts/Shell/shell.h:161:24: note: in definition of macro ‘iftimeret’
 #define iftimeret(x) { x; }
                        ^
../CCR/Scripts/Shell/shell.h:169:5: note: expected ‘char **’ but argument is of type ‘const char **’
 int builtin__ls(int argc, char * argv[]) { return 0; }
     ^~~~~~~~~~~
../CCR/Scripts/Shell/shell.h:185:45: warning: passing argument 2 of ‘builtin__gcc’ from incompatible pointer type [-Wincompatible-pointer-types]
   elifb("gcc") iftimeret(builtin__gcc(argc, argv))
                                             ^
../CCR/Scripts/Shell/shell.h:161:24: note: in definition of macro ‘iftimeret’
 #define iftimeret(x) { x; }
                        ^
../CCR/Scripts/Shell/shell.h:170:5: note: expected ‘char **’ but argument is of type ‘const char **’
 int builtin__gcc(int argc, char * argv[]) { return 0; }
     ^~~~~~~~~~~~
In file included from PARSER_GRAMMER.c:4:0:
../CCR/Scripts/Shell/shell.h: In function ‘fix_string’:
../CCR/Scripts/Shell/shell.h:274:9: warning: passing argument 1 of ‘quote’ discards ‘const’ qualifier from pointer target type [-Wdiscarded-qualifiers]
  mq(qt, fmt);
         ^
../CCR/Scripts/Shell/shell.h:133:35: note: in definition of macro ‘mq’
 #define mq(a, b) char * a = quote(b)
                                   ^
../CCR/Scripts/Shell/shell.h:127:8: note: expected ‘char *’ but argument is of type ‘const char *’
 char * quote (char * str) {
        ^~~~~
../CCR/Scripts/Shell/shell.h: In function ‘replace’:
../CCR/Scripts/Shell/shell.h:323:8: warning: passing argument 1 of ‘quote’ discards ‘const’ qualifier from pointer target type [-Wdiscarded-qualifiers]
  mq(qt,str);
        ^
../CCR/Scripts/Shell/shell.h:133:35: note: in definition of macro ‘mq’
 #define mq(a, b) char * a = quote(b)
                                   ^
../CCR/Scripts/Shell/shell.h:127:8: note: expected ‘char *’ but argument is of type ‘const char *’
 char * quote (char * str) {
        ^~~~~
In file included from PARSER_GRAMMER.c:4:0:
../CCR/Scripts/Shell/shell.h: In function ‘execute’:
../CCR/Scripts/Shell/shell.h:430:106: warning: passing argument 3 of ‘builtin’ from incompatible pointer type [-Wincompatible-pointer-types]
  if (!ifbuiltin(cmd->vector_word[0])) return (void *) builtin(cmd->vector_word[0], cmd->vector_word_idx, cmd->vector_word);
                                                                                                          ^~~
In file included from PARSER_GRAMMER.c:4:0:
../CCR/Scripts/Shell/shell.h:177:5: note: expected ‘const char **’ but argument is of type ‘char **’
 int builtin(const char * builtin, const int argc, const char * argv[]) {
     ^~~~~~~
In file included from PARSER_GRAMMER.c:4:0:
../CCR/Scripts/Shell/shell.h:430:46: warning: cast to pointer from integer of different size [-Wint-to-pointer-cast]
  if (!ifbuiltin(cmd->vector_word[0])) return (void *) builtin(cmd->vector_word[0], cmd->vector_word_idx, cmd->vector_word);
                                              ^
../CCR/Scripts/Shell/shell.h:459:85: warning: passing argument 3 of ‘builtin’ from incompatible pointer type [-Wincompatible-pointer-types]
              builtin(cmd->vector_sub[idx].vector_sub_word[1], cmd->vector_word_idx, cmd->vector_word);
                                                                                     ^~~
In file included from PARSER_GRAMMER.c:4:0:
../CCR/Scripts/Shell/shell.h:177:5: note: expected ‘const char **’ but argument is of type ‘char **’
 int builtin(const char * builtin, const int argc, const char * argv[]) {
     ^~~~~~~
In file included from PARSER_GRAMMER.c:4:0:
../CCR/Scripts/Shell/shell.h:478:51: warning: passing argument 2 of ‘builtin__whereis’ from incompatible pointer type [-Wincompatible-pointer-types]
      exe = builtin__whereis(cmd->vector_word_idx, cmd->vector_word, ".c", false, NULL, whereis_mode_return_first);
                                                   ^~~
In file included from ../CCR/Scripts/Shell/shell.h:125:0,
                 from PARSER_GRAMMER.c:4:
../CCR/Scripts/Shell/builtins/whereis.h:39:8: note: expected ‘const char **’ but argument is of type ‘char **’
 char * builtin__whereis(const int argc, const char * argv[], const char * extention, int skip_arg0, char * optional_path, int mode) {
        ^~~~~~~~~~~~~~~~
In file included from ../CCR/Scripts/Shell/shell.h:20:0,
                 from PARSER_GRAMMER.c:4:
../CCR/Scripts/Shell/builtins/printfmacro.h:210:27: warning: format ‘%d’ expects argument of type ‘int’, but argument 3 has type ‘char *’ [-Wformat=]
 #define pi(x)      printf("%s = %d\n", #x, x);
                           ^
../CCR/Scripts/Shell/shell.h:482:6: note: in expansion of macro ‘pi’
      pi(*(cmd->vector_word))
      ^~
../CCR/Scripts/Shell/builtins/printfmacro.h:210:27: warning: format ‘%d’ expects argument of type ‘int’, but argument 3 has type ‘char *’ [-Wformat=]
 #define pi(x)      printf("%s = %d\n", #x, x);
                           ^
../CCR/Scripts/Shell/shell.h:484:6: note: in expansion of macro ‘pi’
      pi(*(cmd->vector_word+1))
      ^~
../CCR/Scripts/Shell/builtins/printfmacro.h:210:27: warning: format ‘%d’ expects argument of type ‘int’, but argument 3 has type ‘char *’ [-Wformat=]
 #define pi(x)      printf("%s = %d\n", #x, x);
                           ^
../CCR/Scripts/Shell/shell.h:486:6: note: in expansion of macro ‘pi’
      pi(*(cmd->vector_word+2))
      ^~
In file included from PARSER_GRAMMER.c:4:0:
../CCR/Scripts/Shell/shell.h:497:13: warning: cast to pointer from integer of different size [-Wint-to-pointer-cast]
      return (void *) ret;
             ^
../CCR/Scripts/Shell/shell.h: In function ‘execute_thread’:
../CCR/Scripts/Shell/shell.h:534:83: warning: cast from pointer to integer of different size [-Wpointer-to-int-cast]
   DEBUG printf("Main: completed join with thread %ld having a status of %d\n", t, (int)status);
                                                                                   ^
In file included from PARSER_GRAMMER.c:4:0:
../CCR/Scripts/Shell/shell.h: In function ‘parse’:
../CCR/Scripts/Shell/shell.h:669:8: warning: passing argument 1 of ‘quote’ discards ‘const’ qualifier from pointer target type [-Wdiscarded-qualifiers]
  mq(qt,args);
        ^
../CCR/Scripts/Shell/shell.h:133:35: note: in definition of macro ‘mq’
 #define mq(a, b) char * a = quote(b)
                                   ^
../CCR/Scripts/Shell/shell.h:127:8: note: expected ‘char *’ but argument is of type ‘const char *’
 char * quote (char * str) {
        ^~~~~
In file included from libdparse.h:1:0,
                 from ./PARSER_GRAMMER.g:16,
                 from PARSER_GRAMMER.c:5:
arg.c: In function ‘process_arg’:
arg.c:35:12: warning: format ‘%s’ expects argument of type ‘char *’, but argument 2 has type ‘char **’ [-Wformat=]
     printf("invalid argument: %s\n", *argv);
            ^~~~~~~~~~~~~~~~~~~~~~~~  ~~~~~
In file included from PARSER_GRAMMER.c:8:0:
../CCR/Scripts/Shell/builtins/regex_str.h: In function ‘getbitgroupcount’:
../CCR/Scripts/Shell/builtins/regex_str.h:8:18: warning: passing argument 1 of ‘snprintf’ from incompatible pointer type [-Wincompatible-pointer-types]
  return snprintf(stdout, 0, "%d", bit);
                  ^~~~~~
In file included from ../CCR/Scripts/Shell/shell.h:6:0,
                 from PARSER_GRAMMER.c:4:
/usr/include/stdio.h:340:12: note: expected ‘char * restrict’ but argument is of type ‘struct _IO_FILE *’
 extern int snprintf (char *__restrict __s, size_t __maxlen,
            ^~~~~~~~
speculative start
(*(D_PN(_ps, _offset))).start_loc.s = token : rule;

(*(D_PN(_ps, _offset))).end = token : rule;

(*(D_PN(_ps, _offset))).end_skip = token : rule;

(*(D_PN(_ps, _offset))).start_loc.s = token : rule;

(*(D_PN(_ps, _offset))).end = token : rule;

speculative end
speculative start
(*(D_PN(_ps, _offset))).start_loc.s = : rule;

(*(D_PN(_ps, _offset))).end = : rule;

(*(D_PN(_ps, _offset))).end_skip = : rule;

(*(D_PN(_ps, _offset))).start_loc.s = : rule;

(*(D_PN(_ps, _offset))).end = : rule;

speculative end
speculative start
(*(D_PN(_ps, _offset))).start_loc.s = rule;

(*(D_PN(_ps, _offset))).end = rule;

(*(D_PN(_ps, _offset))).end_skip = rule;

(*(D_PN(_ps, _offset))).start_loc.s = rule;

(*(D_PN(_ps, _offset))).end = rule;

speculative end
speculative start
(*(D_PN(_ps, _offset))).start_loc.s = ;

(*(D_PN(_ps, _offset))).end = ;

(*(D_PN(_ps, _offset))).end_skip = ;

(*(D_PN(_ps, _offset))).start_loc.s = ;

(*(D_PN(_ps, _offset))).end = ;

speculative end
speculative start
(*(D_PN(_ps, _offset))).start_loc.s = 
(*(D_PN(_ps, _offset))).end = 
(*(D_PN(_ps, _offset))).end_skip = 
(*(D_PN(_ps, _offset))).start_loc.s = 
(*(D_PN(_ps, _offset))).end = 
speculative end
final start
(*(D_PN(_ps, _offset))).start_loc.s = : rule;

(*(D_PN(_ps, _offset))).end = : rule;

(*(D_PN(_ps, _offset))).end_skip = : rule;

(*(D_PN(_ps, _offset))).start_loc.s = : rule;

(*(D_PN(_ps, _offset))).end = : rule;

final end
final start
(*(D_PN(_ps, _offset))).start_loc.s = rule;

(*(D_PN(_ps, _offset))).end = rule;

(*(D_PN(_ps, _offset))).end_skip = rule;

(*(D_PN(_ps, _offset))).start_loc.s = rule;

(*(D_PN(_ps, _offset))).end = rule;

final end
final start
(*(D_PN(_ps, _offset))).start_loc.s = ;

(*(D_PN(_ps, _offset))).end = ;

(*(D_PN(_ps, _offset))).end_skip = ;

(*(D_PN(_ps, _offset))).start_loc.s = ;

(*(D_PN(_ps, _offset))).end = ;

final end
final start
(*(D_PN(_ps, _offset))).start_loc.s = ;

(*(D_PN(_ps, _offset))).end = ;

(*(D_PN(_ps, _offset))).end_skip = ;

(*(D_PN(_ps, _offset))).start_loc.s = ;

(*(D_PN(_ps, _offset))).end = ;

final end
final start
(*(D_PN(_ps, _offset))).start_loc.s = ;

(*(D_PN(_ps, _offset))).end = ;

(*(D_PN(_ps, _offset))).end_skip = ;

(*(D_PN(_ps, _offset))).start_loc.s = ;

(*(D_PN(_ps, _offset))).end = ;

final end
final start
(*(D_PN(_ps, _offset))).start_loc.s = ;

(*(D_PN(_ps, _offset))).end = ;

(*(D_PN(_ps, _offset))).end_skip = ;

(*(D_PN(_ps, _offset))).start_loc.s = ;

(*(D_PN(_ps, _offset))).end = ;

final end
final start
(*(D_PN(_ps, _offset))).start_loc.s = 
(*(D_PN(_ps, _offset))).end = 
(*(D_PN(_ps, _offset))).end_skip = 
(*(D_PN(_ps, _offset))).start_loc.s = 
(*(D_PN(_ps, _offset))).end = 
final end
76 states 23 scans 4 shifts 58 reductions 34 compares 0 ambiguities
[translation_unit]([translation_unit__2]([terminal]([identifier]([[a-zA-Z_][a-zA-Z_0-9]*] token )[s][:] : [s][terminal__4]([rule]([rule__6]([i]([i__16]([identifier]([[a-zA-Z_][a-zA-Z_0-9]*] rule ))[s]))[s][rule__7][s]))[s][;] ; ))[s])
mobile_c@Mobile-C:~/git/dparser$
@mgood7123 mgood7123 changed the title support for aquiring a tokens matched string support for aquiring a tokens matched string like $$.buf or yy.text Oct 21, 2018
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
None yet
Projects
None yet
Development

No branches or pull requests

1 participant