0
我試圖找出如何以模擬法(彎曲)上下文/模式或「上下文的棧」的堆棧。萊克斯如何模擬模式或上下文
我特別想寫出具有字符串文字,可以送你回一個表達式-Y上下文的概念解析器。
我有一個簡單的語法,它支持使用語法'...'
原始字符串字面量,當它找到一個打印字符串。
但是,字符串標記的長度可能是無限的(達到lex的最大緩衝區大小,我認爲它是在生成的C源代碼中的某個宏中定義的)。
我想定義一個begin_string
令牌'
和end_string
令牌'
以及一個獨特的令牌讀書時,在字符串中的字符。
我想通過一些上下文的概念來說明「現在我在一個字符串中」並影響哪些標記化規則是「活動的」。
這裏是下面的背景下,天真的語法。
%{
#include <stdio.h>
%}
%option noyywrap
%%
'[^']*' { printf("found string literal ((%s))\n", yytext); }
\n { /* do nothing */ }
. { /* do nothing */ }
%%
int main()
{
yylex();
return 0;
}
你看過[開始條件](http://westes.github.io/flex/manual/Start-Conditions.html)嗎?如果我理解你的問題,那就是你正在尋找的東西(儘管可能我完全不瞭解你的需求)。如果您使用flex,順便說一下,令牌不存在任意限制;緩衝區將被擴展,直到malloc拒絕提供更多空間。 – rici