ما هي الفائدة من tokens.h وأنا عندما برمجة lexer؟
-
06-07-2019 - |
سؤال
وأنا برمجة 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;}
%%
لا تنتمي إلى StackOverflow