Fix for GitHub issue #309 - allow braced expressions as macro arguments.
As for parentheses, we need to ignore commas within a pair of braces
when parsing a macro argument, e.g. `MACRO({a,b}) has one argument.
This fix is a little crude in that it doesn't distinguish between
parentheses and braces, e.g. it will accept {a,b). But any errors
like that will be caught by the compiler proper.
This commit is contained in:
parent
97edccceab
commit
fb29da0bd8
|
|
@ -1,7 +1,7 @@
|
||||||
%option prefix="yy"
|
%option prefix="yy"
|
||||||
%{
|
%{
|
||||||
/*
|
/*
|
||||||
* Copyright (c) 1999-2017 Stephen Williams (steve@icarus.com)
|
* Copyright (c) 1999-2020 Stephen Williams (steve@icarus.com)
|
||||||
*
|
*
|
||||||
* This source code is free software; you can redistribute it
|
* This source code is free software; you can redistribute it
|
||||||
* and/or modify it in source code form under the terms of the GNU
|
* and/or modify it in source code form under the terms of the GNU
|
||||||
|
|
@ -575,7 +575,7 @@ keywords (include|define|undef|ifdef|ifndef|else|elseif|endif)
|
||||||
|
|
||||||
<MA_ADD>{W} { macro_add_to_arg(1); }
|
<MA_ADD>{W} { macro_add_to_arg(1); }
|
||||||
|
|
||||||
<MA_ADD>"(" { macro_add_to_arg(0); ma_parenthesis_level++; }
|
<MA_ADD>[({] { macro_add_to_arg(0); ma_parenthesis_level++; }
|
||||||
|
|
||||||
<MA_ADD>"," {
|
<MA_ADD>"," {
|
||||||
if (ma_parenthesis_level > 0)
|
if (ma_parenthesis_level > 0)
|
||||||
|
|
@ -584,7 +584,7 @@ keywords (include|define|undef|ifdef|ifndef|else|elseif|endif)
|
||||||
macro_finish_arg();
|
macro_finish_arg();
|
||||||
}
|
}
|
||||||
|
|
||||||
<MA_ADD>")" {
|
<MA_ADD>[)}] {
|
||||||
if (ma_parenthesis_level > 0) {
|
if (ma_parenthesis_level > 0) {
|
||||||
macro_add_to_arg(0);
|
macro_add_to_arg(0);
|
||||||
ma_parenthesis_level--;
|
ma_parenthesis_level--;
|
||||||
|
|
|
||||||
Loading…
Reference in New Issue