diff options
-rw-r--r-- | bin/hilex/make.l | 27 |
1 files changed, 17 insertions, 10 deletions
diff --git a/bin/hilex/make.l b/bin/hilex/make.l index 00c1acca..31b85574 100644 --- a/bin/hilex/make.l +++ b/bin/hilex/make.l @@ -25,14 +25,15 @@ %x Interp Shell ident [._[:alnum:]]+ -target [-/._[:alnum:]]+ -assign [!+:?]?= +assign [+?:!]?= +target [-._/?*\[\][:alnum:]]+ +operator [:!]|:: %% static int pop = INITIAL; static int depth = 0; -^"\t" { +^"\t"+ { BEGIN(pop = Shell); return Normal; } @@ -41,12 +42,15 @@ assign [!+:?]?= BEGIN(pop = INITIAL); return Normal; } - [^\n$]+|. { return Normal; } + "\\\n" { return Normal; } + [^\\\n$]+|. { return Normal; } } -[[:blank:]] { return Normal; } +[[:blank:]]+ { return Normal; } -"."(PHONY|PRECIOUS|SUFFIXES)/":"? { +{operator} { return Operator; } + +"."(PHONY|PRECIOUS|SUFFIXES)/{operator}? { return Keyword; } @@ -63,16 +67,19 @@ assign [!+:?]?= BEGIN(pop = INITIAL); return Normal; } - [^$[:space:]]+ { return String; } + "\\\n" { return String; } + [^\\$[:space:]]+|. { return String; } } -{target}([[:blank:]]+{target})*/":" { +^"-"?include { return Macro; } + +{target}([[:blank:]]+{target})*/{operator} { return IdentifierTag; } -^"-"?include { return Macro; } +{target} { return Identifier; } -"#".* { return Comment; } +"#"([^\\\n]|"\\"[^\n]|"\\\n")* { return Comment; } <*>{ "$"("{"|"(") { |