Build: Add a CMake target libeval lemon grammar
The libeval grammar can now be rebuilt with "make libeval_grammar". This is only possible when lemon is installed. Also a couple of modifications to the lemon grammar to account for external changes since the grammer was last generated. Also move the grammar defines into grammar.h - this is how Lemon produces them, and by manually copying into the target .cpp, it make automated regeneration impossible.
This commit is contained in:
parent
49c723fc83
commit
f30f5b3249
|
@ -3,6 +3,8 @@ if( COMPILER_SUPPORTS_WSHADOW )
|
|||
set(CMAKE_CXX_FLAGS "${CMAKE_CXX_FLAGS} ${WSHADOW_FLAGS}")
|
||||
endif()
|
||||
|
||||
add_subdirectory( libeval )
|
||||
|
||||
include_directories( BEFORE ${INC_BEFORE} )
|
||||
include_directories(
|
||||
./dialogs
|
||||
|
|
|
@ -0,0 +1,43 @@
|
|||
#
|
||||
# This program source code file is part of KICAD, a free EDA CAD application.
|
||||
#
|
||||
# Copyright (C) 2018 Kicad Developers, see AUTHORS.txt for contributors.
|
||||
#
|
||||
# This program is free software; you can redistribute it and/or
|
||||
# modify it under the terms of the GNU General Public License
|
||||
# as published by the Free Software Foundation; either version 2
|
||||
# of the License, or (at your option) any later version.
|
||||
#
|
||||
# This program is distributed in the hope that it will be useful,
|
||||
# but WITHOUT ANY WARRANTY; without even the implied warranty of
|
||||
# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
|
||||
# GNU General Public License for more details.
|
||||
#
|
||||
# You should have received a copy of the GNU General Public License
|
||||
# along with this program; if not, you may find one here:
|
||||
# http://www.gnu.org/licenses/old-licenses/gpl-2.0.html
|
||||
# or you may search the http://www.gnu.org website for the version 2 license,
|
||||
# or you may write to the Free Software Foundation, Inc.,
|
||||
# 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA
|
||||
|
||||
find_program(LEMON lemon)
|
||||
|
||||
if( LEMON )
|
||||
|
||||
macro( generate_lemon_grammar GRAMMAR_LEMON GRAMMAR_C )
|
||||
add_custom_command(
|
||||
DEPENDS ${GRAMMAR_LEMON}
|
||||
OUTPUT ${CMAKE_CURRENT_SOURCE_DIR}/${GRAMMAR_C}
|
||||
COMMAND ${LEMON} -q ${GRAMMAR_LEMON}
|
||||
COMMENT "Running Lemon on ${GRAMMAR_LEMON} -> ${GRAMMAR_C}"
|
||||
WORKING_DIRECTORY ${CMAKE_CURRENT_SOURCE_DIR}
|
||||
)
|
||||
endmacro()
|
||||
|
||||
generate_lemon_grammar( grammar.lemon grammar.c )
|
||||
|
||||
add_custom_target(libeval_grammar
|
||||
DEPENDS grammar.c
|
||||
)
|
||||
|
||||
endif()
|
|
@ -0,0 +1,12 @@
|
|||
#define VAR 1
|
||||
#define ASSIGN 2
|
||||
#define SEMCOL 3
|
||||
#define PLUS 4
|
||||
#define MINUS 5
|
||||
#define UNIT 6
|
||||
#define DIVIDE 7
|
||||
#define MULT 8
|
||||
#define ENDS 9
|
||||
#define VALUE 10
|
||||
#define PARENL 11
|
||||
#define PARENR 12
|
|
@ -18,7 +18,7 @@
|
|||
*/
|
||||
|
||||
%token_type { numEval::TokenType }
|
||||
%extra_argument { NumericEvaluator* pEval }
|
||||
%extra_argument { NUMERIC_EVALUATOR* pEval }
|
||||
|
||||
%nonassoc VAR ASSIGN SEMCOL.
|
||||
%left PLUS MINUS.
|
||||
|
@ -27,7 +27,7 @@
|
|||
|
||||
%include {
|
||||
#include <assert.h>
|
||||
#include "numeric_evaluator.h"
|
||||
#include <libeval/numeric_evaluator.h>
|
||||
}
|
||||
|
||||
%syntax_error {
|
||||
|
|
|
@ -34,6 +34,7 @@ namespace numEval
|
|||
#endif
|
||||
|
||||
#include "grammar.c"
|
||||
#include "grammar.h"
|
||||
|
||||
#ifdef __GNUC__
|
||||
#pragma GCC diagnostic pop
|
||||
|
@ -42,20 +43,6 @@ namespace numEval
|
|||
} /* namespace numEval */
|
||||
|
||||
|
||||
#define VAR 1
|
||||
#define ASSIGN 2
|
||||
#define SEMCOL 3
|
||||
#define PLUS 4
|
||||
#define MINUS 5
|
||||
#define UNIT 6
|
||||
#define DIVIDE 7
|
||||
#define MULT 8
|
||||
#define ENDS 9
|
||||
#define VALUE 10
|
||||
#define PARENL 11
|
||||
#define PARENR 12
|
||||
|
||||
|
||||
NUMERIC_EVALUATOR::NUMERIC_EVALUATOR( EDA_UNITS_T aUnits, bool aUseMils )
|
||||
{
|
||||
struct lconv* lc = localeconv();
|
||||
|
|
Loading…
Reference in New Issue