Лекс и Я cc, как получить значения из переменных? (Begginner) - PullRequest
1 голос
/ 29 марта 2020

это мой первый пост, и прежде всего я хочу сказать, что я абсолютный новичок. Извините, если мой вопрос может показаться простым, но я действительно не нашел ответа.

Я хотел бы иметь возможность проанализировать файл JSON, который я написал. Благодаря руководству я смог создать свою грамматику, но я хотел бы иметь возможность получить доступ к соответствующим значениям, чтобы использовать их в C функциях, и я не знаю, как это сделать.

Вот мои файлы lex и ya cc:

%{
#include <stdio.h>
int yywrap() { return 1;}
void yyerror(const char* s) {fprintf(stderr,"Error : %s.\n",s);}
%}


%token X Y DIRECTION POINT1 POINTS2
%token INTEGER STRING
%start linkage
%%

linkage: '{' point1 ','  points2 '}' ;

point1: POINT1 ':' point ;
point: '{'
         X ':' INTEGER ','
         Y ':' INTEGER ','
         DIRECTION ':' STRING  {printf("%s",$3);}
        '}';



points2: POINTs2 ':' '[' points2_list ']';
points2_list: points2_ | points2_list ',' points2_ ;
points2_: '{'
         X ':' INTEGER ','
         Y ':' INTEGER ','
         DIRECTION ':' STRING
        '}';


%%

int main(int argc,char** argv)
{
yyparse();
}
%{
#include <stdio.h>
#include "sample.tab.h"
%}
%%
"\"x\""    return X;
"\"point1\""       return POINT1;
"\"y\""  return Y;
"\"points2\""       return POINTS2;
[0-9]+          return INTEGER;
\"[^\"]*\"       return STRING;
[ \n\t\r]       ;
.               return yytext[0];
%%

Я не очень понимаю, как работают переменные, например, для печати направления. Опять же, я новичок, я не программист, я просто хочу узнать больше:)

Спасибо вам

...