logical linebreaks support
This commit is contained in:
parent
0500dfd1b4
commit
7b466fbb9e
2 changed files with 16 additions and 6 deletions
|
@ -121,7 +121,7 @@ CHAR [^{}|&$;<> \t\n\'\"\\]
|
||||||
DIGITS [[:digit:]]+
|
DIGITS [[:digit:]]+
|
||||||
NAME [[:alpha:]_][[:alnum:][:digit:]_]*
|
NAME [[:alpha:]_][[:alnum:][:digit:]_]*
|
||||||
|
|
||||||
ESC \\.
|
ESC \\(.|\n)
|
||||||
SQCHR [^\']
|
SQCHR [^\']
|
||||||
DQCHR {ESC}|[^\\\"]
|
DQCHR {ESC}|[^\\\"]
|
||||||
DQSTR \"{DQCHR}*\"
|
DQSTR \"{DQCHR}*\"
|
||||||
|
@ -129,7 +129,7 @@ SQSTR \'{SQCHR}*\'
|
||||||
VARIABLE ${NAME}|$\{{NAME}\}|${DIGITS}|$\{{DIGITS}\}|$\?|$\{\?\}
|
VARIABLE ${NAME}|$\{{NAME}\}|${DIGITS}|$\{{DIGITS}\}|$\?|$\{\?\}
|
||||||
WORD ({CHAR}|{DQSTR}|{SQSTR}|{ESC}|{VARIABLE})+
|
WORD ({CHAR}|{DQSTR}|{SQSTR}|{ESC}|{VARIABLE})+
|
||||||
|
|
||||||
MULTILINE {WORD}?((\"{DQCHR}*)|(\'{SQCHR}*))
|
MULTILINE {WORD}?((\"{DQCHR}*)|(\'{SQCHR}*)|(\\\n))
|
||||||
|
|
||||||
%x SPLIT
|
%x SPLIT
|
||||||
%x DQUOTE
|
%x DQUOTE
|
||||||
|
@ -177,6 +177,11 @@ MULTILINE {WORD}?((\"{DQCHR}*)|(\'{SQCHR}*))
|
||||||
"function" { RECORD; return GRUB_PARSER_TOKEN_FUNCTION; }
|
"function" { RECORD; return GRUB_PARSER_TOKEN_FUNCTION; }
|
||||||
"menuentry" { RECORD; return GRUB_PARSER_TOKEN_MENUENTRY; }
|
"menuentry" { RECORD; return GRUB_PARSER_TOKEN_MENUENTRY; }
|
||||||
|
|
||||||
|
{MULTILINE} {
|
||||||
|
if (grub_lexer_unput (yytext, yyscanner))
|
||||||
|
return GRUB_PARSER_TOKEN_BAD;
|
||||||
|
}
|
||||||
|
|
||||||
{NAME} { RECORD; return GRUB_PARSER_TOKEN_NAME; }
|
{NAME} { RECORD; return GRUB_PARSER_TOKEN_NAME; }
|
||||||
{WORD} {
|
{WORD} {
|
||||||
RECORD;
|
RECORD;
|
||||||
|
@ -188,10 +193,6 @@ MULTILINE {WORD}?((\"{DQCHR}*)|(\'{SQCHR}*))
|
||||||
}
|
}
|
||||||
yyextra->lexerstate->resplit = 1;
|
yyextra->lexerstate->resplit = 1;
|
||||||
}
|
}
|
||||||
{MULTILINE} {
|
|
||||||
if (grub_lexer_unput (yytext, yyscanner))
|
|
||||||
return GRUB_PARSER_TOKEN_BAD;
|
|
||||||
}
|
|
||||||
. {
|
. {
|
||||||
grub_script_yyerror (yyextra, yytext);
|
grub_script_yyerror (yyextra, yytext);
|
||||||
return GRUB_PARSER_TOKEN_BAD;
|
return GRUB_PARSER_TOKEN_BAD;
|
||||||
|
@ -201,6 +202,7 @@ MULTILINE {WORD}?((\"{DQCHR}*)|(\'{SQCHR}*))
|
||||||
|
|
||||||
<SPLIT>{
|
<SPLIT>{
|
||||||
\\. { COPY (yytext + 1, yyleng - 1); }
|
\\. { COPY (yytext + 1, yyleng - 1); }
|
||||||
|
\\\n { /* ignore */ }
|
||||||
\" {
|
\" {
|
||||||
yy_push_state (DQUOTE, yyscanner);
|
yy_push_state (DQUOTE, yyscanner);
|
||||||
ARG (GRUB_SCRIPT_ARG_TYPE_TEXT);
|
ARG (GRUB_SCRIPT_ARG_TYPE_TEXT);
|
||||||
|
|
|
@ -60,6 +60,14 @@ echo one'two
|
||||||
echo one'two
|
echo one'two
|
||||||
\'three
|
\'three
|
||||||
|
|
||||||
|
# echo "one\
|
||||||
|
# two"
|
||||||
|
# echo 'one\
|
||||||
|
# two'
|
||||||
|
# echo foo\
|
||||||
|
# bar
|
||||||
|
# \
|
||||||
|
# echo foo
|
||||||
# echo "one
|
# echo "one
|
||||||
#
|
#
|
||||||
# two"
|
# two"
|
||||||
|
|
Loading…
Add table
Reference in a new issue