From 8bf1b67b430ae02cd8b7414f250fc450c2c20db3 Mon Sep 17 00:00:00 2001 From: June McEnroe Date: Mon, 28 Dec 2020 22:09:13 -0500 Subject: Lex strings inside macros --- bin/hilex/c.l | 68 +++++++++++++++++++++++++++++++---------------------------- 1 file changed, 36 insertions(+), 32 deletions(-) (limited to 'bin') diff --git a/bin/hilex/c.l b/bin/hilex/c.l index 95cb499f..d8508c36 100644 --- a/bin/hilex/c.l +++ b/bin/hilex/c.l @@ -27,9 +27,15 @@ width "*"|[0-9]+ %% + static int pop = INITIAL; [[:space:]]+ { return Normal; } +^"%" { + BEGIN(pop = MacroLine); + return Macro; +} + ([-+*/%&|^=!<>]|"<<"|">>")"="? | [=~.?:]|"++"|"--"|"&&"|"||"|"->" | sizeof|(_A|alignof) { @@ -51,45 +57,22 @@ register|restrict|return|static|struct|switch|typedef|union|volatile|while | [_[:alpha:]][_[:alnum:]]* { return Identifier; } -^"#" { - BEGIN(MacroLine); - return Macro; -} -^"#"[[:blank:]]*"include" { - BEGIN(MacroInclude); - return Macro; -} -{ - "\n" { - BEGIN(0); - return Macro; - } - "\\\n" { return Macro; } - [^\\\n<"]+|. { return Macro; } -} -{ - "<"[^>]+">" | - "\""[^"]+"\"" { - return String; - } -} - -"//"([^\n]|"\\\n")* | -"/*"([^*]|"*"[^/])*"*"+"/" { +"//"([^\n]|"\\\n")* | +"/*"([^*]|"*"[^/])*"*"+"/" { return Comment; } -[LUu]?"'" { +[LUu]?"'" { BEGIN(CharLiteral); return String; } -([LU]|u8?)?"\"" { +([LU]|u8?)?"\"" { BEGIN(StringLiteral); return String; } { - "\\"['""?\\abfnrtv] | + "\\"[''""?\\abfnrtv] | "\\"([0-7]{1,3}) | "\\x"([[:xdigit:]]{2}) | "\\u"([[:xdigit:]]{4}) | @@ -106,17 +89,38 @@ register|restrict|return|static|struct|switch|typedef|union|volatile|while | { "'" { - BEGIN(0); + BEGIN(pop); return String; } - [^\\']+|. { return String; } + [^\\'']+|. { return String; } } { "\"" { - BEGIN(0); + BEGIN(pop); return String; } - [^%\\"]+|. { return String; } + [^%\\""]+|. { return String; } +} + +^"#" { + BEGIN(pop = MacroLine); + return Macro; +} +^"#"[[:blank:]]*"include" { + BEGIN(pop = MacroInclude); + return Macro; +} +"<"[^>]+">" { + BEGIN(pop = MacroLine); + return String; +} +{ + "\n" { + BEGIN(pop = INITIAL); + return Macro; + } + "\\\n" { return Macro; } + [^\\\n/<>''""]+|. { return Macro; } } . { return Normal; } -- cgit 1.4.1 845e857c82&follow=1'>tests/t0105-commit.sh (unfollow)
Commit message (Expand)Author
2014-12-23repolist: add owner-filterChris Burroughs
2014-12-23ui-shared: add rel-vcs microformat links to HTML headerJohn Keeping
2014-12-23ui-summary: add "rel='vcs-git'" to clone URL linksJohn Keeping
2014-12-23Extract clone URL printing to ui-shared.cJohn Keeping
2014-12-23Remove trailing slash after remove-suffixLukas Fleischer
2014-12-23git: update to v2.2.1Christian Hesse
2014-12-13filter: fix libravatar email-filter https issueChristian Hesse
2014-12-13ui-diff: add "stat only" diff typeJohn Keeping
2014-12-13Change "ss" diff flag to an enumJohn Keeping
2014-12-13ui-shared: remove toggle_ssdiff arg to cgit_diff_link()John Keeping
2014-12-13ui-shared: remove toggle_ssdiff arg to cgit_commit_link()John Keeping
2014-08-07git: update to v2.0.4John Keeping
2014-08-07Always check if README exists in choose_readme()Lukas Fleischer
2014-08-01cgitrc.5: we mean a cgi response, not requestJason A. Donenfeld
2014-07-28ui-stats.c: set parent pointer to NULL after freeing itJohn Keeping
2014-07-28git: update to v2.0.3John Keeping
2014-07-28parsing.c: make commit buffer constJohn Keeping
2014-06-30Bump version.Jason A. Donenfeld
2014-06-29remove debug fprinf() calls that sneaked in with commit 79c985Christian Hesse
2014-06-28git: update to 2.0.1Christian Hesse
2014-06-28ui-patch: Flush stdout after outputting dataJohn Keeping
2014-06-28ui-log: ignore unhandled argumentsJohn Keeping
2014-06-28git: update for git 2.0Christian Hesse
2014-04-17remove trailing whitespaces from source filesChristian Hesse
2014-04-12git: update to 1.9.2Christian Hesse
2014-04-05Fix cgit_parse_url when a repo url is contained in another repo urlJulian Maurice
2014-03-20Makefile: use more reliable git tarball mirrorJason A. Donenfeld
2014-03-20git: update to 1.9.1Christian Hesse