.Net с использованием portage для linux, bsd и др.

Информация о пользователе

Привет, Гость! Войдите или зарегистрируйтесь.



Токены

Сообщений 1 страница 2 из 2

1

Первое, с чем надо разобраться - это как создаются токены и как их передавать из сканера в парсер.
(сканер - это то, что получается на выходе gplex, парсер - это то, что получается на выходе gppg)

В парсере, в файле parser1.y пишем

%token A, B, C
%%
%%

запускаем gppg с ключём /gplex
и смотрим на сгенерированный файл.

там должны быть нагенерированы константы, примерно таким образом:
public enum Tokens {error=127, EOF=128, ... }

Эти константы возвращаются из сканера функцией
public abstract int yylex();
а всякая дополнительная информация лежит рядом:
public TValue yylval;
public TSpan yylloc { get; set; }

Это позволяет в момент свёртки правила перебрать входящие в правило токены и что-нибудь навычислять, используя yylval этих токенов.

Отредактировано Arsen.Shnurkov (2017-05-06 14:04:45)

0

2

Виды токенов. Можно указать вид токена:
%token <MyString> A
%token <MyInt> B
тогда в структуре yylval будeт выбираться соответствующие поля:
yylval.MyString
yylval.MyInt

Ну и можно указать символьное представление:
%token <MyOperation> GreaterOrEqual ">="
Это символьное представление будет отображаться в сообщениях об ошибках.

Отредактировано Arsen.Shnurkov (2017-05-06 13:59:19)

0