سؤال

وأنا برمجة lexer في C وقرأت في مكان ما حول tokens.h ملف الرأس. هل هي هناك؟ إذا كان الأمر كذلك، ما هو استخدامها؟

هل كانت مفيدة؟

المحلول

وtokens.h هو الملف الذي تم إنشاؤه من قبل yacc أو bison الذي يحتوي على قائمة من الرموز ضمن قواعد اللغة الخاصة بك.

وقد تحتوي على / yacc ملف الإدخال bison ديك الإعلانات رمزية مثل:

%token INTEGER
%token ID
%token STRING
%token SPACE

وتشغيل هذا الملف من خلال yacc / bison سيؤدي في ملف tokens.h يحتوي على تعريفات المعالج لهذه الرموز:

/* Something like this... */
#define INTEGER (1)
#define ID      (2)
#define STRING  (3)

نصائح أخرى

وعلى الأرجح، tokens.h هو الملف الذي تم إنشاؤه من قبل مولد محلل (ياك / بيسون) التي تحتوي على تعريفات رمزية حتى تتمكن من العودة الرموز من lexer إلى محلل.

ومع ليكس / فليكس وياك / بيسون، وأنها تعمل مثل هذا:

وparser.y:

%token FOO
%token BAR

%%

start: FOO BAR;

%%

وlexer.l:

%{
#include "tokens.h"
%}

%%

foo {return FOO;}
bar {return BAR;}

%%
مرخصة بموجب: CC-BY-SA مع الإسناد
لا تنتمي إلى StackOverflow
scroll top