You signed in with another tab or window. Reload to refresh your session.You signed out in another tab or window. Reload to refresh your session.You switched accounts on another tab or window. Reload to refresh your session.Dismiss alert
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$
The text was updated successfully, but these errors were encountered:
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
how can i obtain a tokens matched string as it is difficult to do so, for example
results in:
The text was updated successfully, but these errors were encountered: