From bb6b87a2685c0d71b5c38be33c100f85ac0b9cee Mon Sep 17 00:00:00 2001 From: Renaud G Date: Thu, 25 Jul 2019 09:59:29 +0200 Subject: Rework of the component to be a proper lib --- CMakeLists.txt | 37 ++++++++++++++++++++++++++++++++++--- 1 file changed, 34 insertions(+), 3 deletions(-) (limited to 'CMakeLists.txt') diff --git a/CMakeLists.txt b/CMakeLists.txt index 9a9a340..e06bdac 100644 --- a/CMakeLists.txt +++ b/CMakeLists.txt @@ -1,6 +1,6 @@ cmake_minimum_required(VERSION 3.5) -project(diceparser) +project(diceparser VERSION 1.9.0 DESCRIPTION "Parser of dice command") set(QT_REQUIRED_VERSION "5.12.0") find_package(Qt5 ${QT_REQUIRED_VERSION} CONFIG REQUIRED COMPONENTS Core Test Gui Svg) @@ -53,11 +53,42 @@ SET( dice_sources node/valueslistnode.cpp ) -add_library(diceparser SHARED ${dice_sources} ) -target_link_libraries(diceparser PUBLIC Qt5::Core Qt5::Gui Qt5::Svg) +add_library(diceparser_shared SHARED ${dice_sources} ) +add_library(diceparser_static STATIC ${dice_sources} ) + +target_include_directories(diceparser_shared PRIVATE include) +target_include_directories(diceparser_static PRIVATE include) + +SET_TARGET_PROPERTIES(diceparser_static PROPERTIES OUTPUT_NAME diceparser CLEAN_DIRECT_OUTPUT 1) +SET_TARGET_PROPERTIES(diceparser_shared PROPERTIES OUTPUT_NAME diceparser CLEAN_DIRECT_OUTPUT 1) + +target_link_libraries(diceparser_shared PUBLIC Qt5::Core Qt5::Gui Qt5::Svg) +target_link_libraries(diceparser_static PUBLIC Qt5::Core Qt5::Gui Qt5::Svg) + +set_target_properties(diceparser_shared PROPERTIES VERSION ${PROJECT_VERSION}) +set_target_properties(diceparser_shared PROPERTIES SOVERSION 1) +#target_link_libraries(diceparsersta PROPERTIES VERSION ${PROJECT_VERSION}) + +set_target_properties(diceparser_shared PROPERTIES PUBLIC_HEADER "include/diceparser.h;include/highlightdice.h;include/parsingtoolbox.h;include/dicealias.h;include/diceparserhelper.h") +#set_target_properties(diceparsersta PROPERTIES PUBLIC_HEADER "include/diceparser.h;include/highlightdice.h;include/parsingtoolbox.h;include/dicealias.h;include/diceparserhelper.h") add_subdirectory(cli) add_subdirectory( tests ) #add_subdirectory(irc) #add_subdirectory(mobile) #add_subdirectory(webserver) + + +include(GNUInstallDirs) + +install(TARGETS diceparser_shared + LIBRARY DESTINATION ${CMAKE_INSTALL_LIBDIR} + PUBLIC_HEADER DESTINATION ${CMAKE_INSTALL_INCLUDEDIR}) + +install(TARGETS diceparser_static + ARCHIVE DESTINATION ${CMAKE_INSTALL_LIBDIR}) + +configure_file(diceparser.pc.in diceparser.pc @ONLY) + +install(FILES ${CMAKE_BINARY_DIR}/diceparser.pc DESTINATION ${CMAKE_INSTALL_DATAROOTDIR}/pkgconfig) + -- cgit v1.2.3-70-g09d2 From 4b9d378f5f6483af27f793850b5f8cc821fd0739 Mon Sep 17 00:00:00 2001 From: Renaud G Date: Thu, 25 Jul 2019 22:33:18 +0200 Subject: Static compilation is only triggered if -DSTATIC_BUILD=ON is set. --- CMakeLists.txt | 19 ++++++++++--------- 1 file changed, 10 insertions(+), 9 deletions(-) (limited to 'CMakeLists.txt') diff --git a/CMakeLists.txt b/CMakeLists.txt index e06bdac..be5d1b9 100644 --- a/CMakeLists.txt +++ b/CMakeLists.txt @@ -53,24 +53,27 @@ SET( dice_sources node/valueslistnode.cpp ) +IF(STATIC_BUILD) + add_library(diceparser_static STATIC ${dice_sources} ) + target_include_directories(diceparser_static PRIVATE include) + SET_TARGET_PROPERTIES(diceparser_static PROPERTIES OUTPUT_NAME diceparser CLEAN_DIRECT_OUTPUT 1) + target_link_libraries(diceparser_static PUBLIC Qt5::Core Qt5::Gui Qt5::Svg) + install(TARGETS diceparser_static + ARCHIVE DESTINATION ${CMAKE_INSTALL_LIBDIR}) +endif() + add_library(diceparser_shared SHARED ${dice_sources} ) -add_library(diceparser_static STATIC ${dice_sources} ) target_include_directories(diceparser_shared PRIVATE include) -target_include_directories(diceparser_static PRIVATE include) -SET_TARGET_PROPERTIES(diceparser_static PROPERTIES OUTPUT_NAME diceparser CLEAN_DIRECT_OUTPUT 1) -SET_TARGET_PROPERTIES(diceparser_shared PROPERTIES OUTPUT_NAME diceparser CLEAN_DIRECT_OUTPUT 1) +SET_TARGET_PROPERTIES(diceparser_shared PROPERTIES OUTPUT_NAME diceparser CLEAN_DIRECT_OUTPUT 1) target_link_libraries(diceparser_shared PUBLIC Qt5::Core Qt5::Gui Qt5::Svg) -target_link_libraries(diceparser_static PUBLIC Qt5::Core Qt5::Gui Qt5::Svg) set_target_properties(diceparser_shared PROPERTIES VERSION ${PROJECT_VERSION}) set_target_properties(diceparser_shared PROPERTIES SOVERSION 1) -#target_link_libraries(diceparsersta PROPERTIES VERSION ${PROJECT_VERSION}) set_target_properties(diceparser_shared PROPERTIES PUBLIC_HEADER "include/diceparser.h;include/highlightdice.h;include/parsingtoolbox.h;include/dicealias.h;include/diceparserhelper.h") -#set_target_properties(diceparsersta PROPERTIES PUBLIC_HEADER "include/diceparser.h;include/highlightdice.h;include/parsingtoolbox.h;include/dicealias.h;include/diceparserhelper.h") add_subdirectory(cli) add_subdirectory( tests ) @@ -85,8 +88,6 @@ install(TARGETS diceparser_shared LIBRARY DESTINATION ${CMAKE_INSTALL_LIBDIR} PUBLIC_HEADER DESTINATION ${CMAKE_INSTALL_INCLUDEDIR}) -install(TARGETS diceparser_static - ARCHIVE DESTINATION ${CMAKE_INSTALL_LIBDIR}) configure_file(diceparser.pc.in diceparser.pc @ONLY) -- cgit v1.2.3-70-g09d2 From c707c48c5b809827a2b5b63489be65efe71506e3 Mon Sep 17 00:00:00 2001 From: Renaud G Date: Sun, 28 Jul 2019 00:50:44 +0200 Subject: Absolute path for source files --- CMakeLists.txt | 84 +++++++++++++++++++++++++++++----------------------------- 1 file changed, 42 insertions(+), 42 deletions(-) (limited to 'CMakeLists.txt') diff --git a/CMakeLists.txt b/CMakeLists.txt index be5d1b9..876af55 100644 --- a/CMakeLists.txt +++ b/CMakeLists.txt @@ -9,48 +9,48 @@ enable_testing(true) include_directories(${CMAKE_CURRENT_SOURCE_DIR} result node) SET( dice_sources - diceparser.cpp - range.cpp - booleancondition.cpp - validator.cpp - compositevalidator.cpp - operationcondition.cpp - die.cpp - parsingtoolbox.cpp - dicealias.cpp - result/result.cpp - result/scalarresult.cpp - result/stringresult.cpp - result/diceresult.cpp - node/countexecutenode.cpp - node/dicerollernode.cpp - node/executionnode.cpp - node/explodedicenode.cpp - node/helpnode.cpp - node/mergenode.cpp - node/jumpbackwardnode.cpp - node/keepdiceexecnode.cpp - node/listaliasnode.cpp - node/listsetrollnode.cpp - node/numbernode.cpp - node/parenthesesnode.cpp - # node/forloopnode.cpp - node/paintnode.cpp - node/rerolldicenode.cpp - node/scalaroperatornode.cpp - node/sortresult.cpp - node/startingnode.cpp - node/filternode.cpp - node/stringnode.cpp - node/ifnode.cpp - node/splitnode.cpp - node/groupnode.cpp - node/bind.cpp - node/occurencecountnode.cpp - node/uniquenode.cpp - highlightdice.cpp - node/variablenode.cpp - node/valueslistnode.cpp + ${CMAKE_CURRENT_SOURCE_DIR}/diceparser.cpp + ${CMAKE_CURRENT_SOURCE_DIR}/range.cpp + ${CMAKE_CURRENT_SOURCE_DIR}/booleancondition.cpp + ${CMAKE_CURRENT_SOURCE_DIR}/validator.cpp + ${CMAKE_CURRENT_SOURCE_DIR}/compositevalidator.cpp + ${CMAKE_CURRENT_SOURCE_DIR}/operationcondition.cpp + ${CMAKE_CURRENT_SOURCE_DIR}/die.cpp + ${CMAKE_CURRENT_SOURCE_DIR}/parsingtoolbox.cpp + ${CMAKE_CURRENT_SOURCE_DIR}/dicealias.cpp + ${CMAKE_CURRENT_SOURCE_DIR}/result/result.cpp + ${CMAKE_CURRENT_SOURCE_DIR}/result/scalarresult.cpp + ${CMAKE_CURRENT_SOURCE_DIR}/result/stringresult.cpp + ${CMAKE_CURRENT_SOURCE_DIR}/result/diceresult.cpp + ${CMAKE_CURRENT_SOURCE_DIR}/node/countexecutenode.cpp + ${CMAKE_CURRENT_SOURCE_DIR}/node/dicerollernode.cpp + ${CMAKE_CURRENT_SOURCE_DIR}/node/executionnode.cpp + ${CMAKE_CURRENT_SOURCE_DIR}/node/explodedicenode.cpp + ${CMAKE_CURRENT_SOURCE_DIR}/node/helpnode.cpp + ${CMAKE_CURRENT_SOURCE_DIR}/node/mergenode.cpp + ${CMAKE_CURRENT_SOURCE_DIR}/node/jumpbackwardnode.cpp + ${CMAKE_CURRENT_SOURCE_DIR}/node/keepdiceexecnode.cpp + ${CMAKE_CURRENT_SOURCE_DIR}/node/listaliasnode.cpp + ${CMAKE_CURRENT_SOURCE_DIR}/node/listsetrollnode.cpp + ${CMAKE_CURRENT_SOURCE_DIR}/node/numbernode.cpp + ${CMAKE_CURRENT_SOURCE_DIR}/node/parenthesesnode.cpp + # ${CMAKE_CURRENT_SOURCE_DIR}/ node/forloopnode.cpp + ${CMAKE_CURRENT_SOURCE_DIR}/node/paintnode.cpp + ${CMAKE_CURRENT_SOURCE_DIR}/node/rerolldicenode.cpp + ${CMAKE_CURRENT_SOURCE_DIR}/node/scalaroperatornode.cpp + ${CMAKE_CURRENT_SOURCE_DIR}/node/sortresult.cpp + ${CMAKE_CURRENT_SOURCE_DIR}/node/startingnode.cpp + ${CMAKE_CURRENT_SOURCE_DIR}/node/filternode.cpp + ${CMAKE_CURRENT_SOURCE_DIR}/node/stringnode.cpp + ${CMAKE_CURRENT_SOURCE_DIR}/node/ifnode.cpp + ${CMAKE_CURRENT_SOURCE_DIR}/node/splitnode.cpp + ${CMAKE_CURRENT_SOURCE_DIR}/node/groupnode.cpp + ${CMAKE_CURRENT_SOURCE_DIR}/node/bind.cpp + ${CMAKE_CURRENT_SOURCE_DIR}/node/occurencecountnode.cpp + ${CMAKE_CURRENT_SOURCE_DIR}/node/uniquenode.cpp + ${CMAKE_CURRENT_SOURCE_DIR}/highlightdice.cpp + ${CMAKE_CURRENT_SOURCE_DIR}/node/variablenode.cpp + ${CMAKE_CURRENT_SOURCE_DIR}/node/valueslistnode.cpp ) IF(STATIC_BUILD) -- cgit v1.2.3-70-g09d2 From 0d4b68221bda594cc695d216dfa21306ddb69c85 Mon Sep 17 00:00:00 2001 From: Renaud G Date: Mon, 29 Jul 2019 22:31:29 +0200 Subject: Update DiceParser Grammar --- CMakeLists.txt | 6 ++- README.md | 135 ++++++++++++++++++++++++++++++++++++++++++--------------- 2 files changed, 106 insertions(+), 35 deletions(-) (limited to 'CMakeLists.txt') diff --git a/CMakeLists.txt b/CMakeLists.txt index 876af55..f213bc4 100644 --- a/CMakeLists.txt +++ b/CMakeLists.txt @@ -62,7 +62,9 @@ IF(STATIC_BUILD) ARCHIVE DESTINATION ${CMAKE_INSTALL_LIBDIR}) endif() -add_library(diceparser_shared SHARED ${dice_sources} ) +set(documentation README.md HelpMe.md) + +add_library(diceparser_shared SHARED ${dice_sources} ${documentation}) target_include_directories(diceparser_shared PRIVATE include) @@ -93,3 +95,5 @@ configure_file(diceparser.pc.in diceparser.pc @ONLY) install(FILES ${CMAKE_BINARY_DIR}/diceparser.pc DESTINATION ${CMAKE_INSTALL_DATAROOTDIR}/pkgconfig) + + diff --git a/README.md b/README.md index 6460cca..41bdf73 100644 --- a/README.md +++ b/README.md @@ -59,44 +59,111 @@ More examples at : https://github.com/Rolisteam/DiceParser/blob/master/HelpMe.md The grammar is something like this: ``` -Command =: Instruction [';',Instruction]* -Instruction =: Expression -Expression =: number | number Dice DiceOperation | ScalarOperator Expression | string | variable Expression -Dice =: DiceOperator Number(faces) | DiceOperator ListOfValues -DiceOperator =: D | L -DiceOperation =: Keep | KeepAndExplode | Sort | Count | Reroll | RerollUntil | If | Explode | Jumpbackward | Merge | Filter | Split | Parenthese | Count | Paint | Group +Program =: Instruction [InstructionSeparator, Instruction]* Comment +InstructionSeparator = ; +Instruction =: Expression ([Operator, Expression]* | [Option]*) +Operator =: ScalarOperator +Expression =: OpenParenthesis Expression closeParenthesis +| Option* +| [Operator, Expression]* +| Operand Dice +| Command +| NodeOperator [Option]* +| ValuesList +| Dice (Operand == 1) +Operand =: DynamicVariable | Number | String +OpenParenthesis = ( +closeParenthesis = ) +OpenList = [ +CloseList = ] +ListSeparator = , +ValuesList=: OpenList (DynamicVariable | Number)? [ ListSeparator,(DynamicVariable | Number)]* CloseList +Dice =: DiceOperator [uniqueValue] DiceParameter +DiceOperator =: D ParameterDice | L ParameterList +DiceParameter =: ParameterDice | ParameterList +ParameterDice =: Number|Range +ParameterList =: List +List=: OpenList String[Probability] [ListSeparator,String[Probability]]* CloseList +Probability=: OpenList (Range|Percentage) CloseList +Percentage =: number +Option =: Keep +| KeepAndExplode +| Filter +| Sort +| Count +| Reroll +| RerollUntil +| RerollAndAdd +| Explode +| Merge +| Bind +| Occurences +| Unique +| Paint +| If +| Split +| Group +Range =: OpenList Number RangeSeparator Number CloseList +RangeSeparator =: - ScalarOperator =: [x,-,*,x,/] -number =: [0-9]+ | constantValue -constantValue =: ${id | label} -id=[_,a-z][_,A-z,0-9]* -label=[_,a-z][_,A-z,0-9,é,è,ç,û,ê,â]* -variable = ${[0-9]+} -Validator =: BooleanValidator | RangeValidator | CompositeValidator -CompositeValidator =: Validator LogicOpetator Validator -LogicOpetator =: = | > | => | < | =< -RangeValidator =: [ number - number ] -BooleanValidator =: number | [operator number] | +number =: [-] [0-9]+ | constantValue +OpenVaribale=: ${ +CloseVariable=: } +constantValue =: OpenVaribale (id | label) CloseVariable +id=[_,a-z][_,A-z,0-9]* # must respect rules of QML id +label=.* +variable = OpenVaribale [0-9]+ CloseVariable +CompositeValidator =: OpenList Validator [LogicOpetator,Validator]* CloseList +LogicOpetator =: AND | XOR | OR +AND =: & +XOR =: ^ +OR =: | +Ascendant=:l +Validator =: BooleanValidator | RangeValidator | OperationValidator +CompareOpetator =: = | > | => | < | =< | != +RangeValidator =: Range +OperationValidator =: Modulo operandNode BooleanValidator +Modulo =: % +BooleanValidator =: [=]Operand | [CompareOpetator Operand] ListOfValue=: String[Range],ListOfValue | String[Range] -String =: [A-z0-9]+ -Keep =: k Number -KeepAndExplode =: K number -Reroll =: r -RerollUntil =: R -Exploding =: e -RerollOnceAndAdd =: a -RerollAndAdd =: A -Painter =: p -Split =: u -Group =: g +String =: .*[^ListSeparator] +Keep =: k[Ascendant] Number +KeepAndExplode =: K[Ascendant] number +Filter =: f CompositeValidator +Sort =: s[Ascendant] +Count =: c CompositeValidator +Reroll =: r CompositeValidator +RerollUntil =: R CompositeValidator +RerollAndAdd =: a CompositeValidator +Merge =: m +Bind =: b +Occurences =: OccurencesWidth ( ListSeparator number | CompositeValidator) +OccurencesWidth =: number +unique =: u +Painter =: p PainterParameters +PainterParameters =: OpenList PairColorOccurence [ListSeparator , PairColorOccurence]* CloseList +PairColorOccurence =: Color PairSeparator Number +PairSeparator =: : +If =: i [compareMethod] CompositeValidator Bloc[Bloc] +compareMethod =: OnEach | OneOfThem | AllOfThem | onScalar +OnEach =: '' +OneOfThem = '.' +AllOfThem = '*' +onScalar = ':' +Bloc =: OpenBranch Expression CloseBranch +OpenBloc =: { +CloseBloc =: } +Split =: y +Group =: g Number Sort =: s -If =: i compareMethod [Validator] {Expression}[{Expression}] -Paint =: p [ Count : color ] Group =: number -Explode =: e Validator -Jumpbackward =: @DiceOperation +Explode =: e CompositeValidator +NodeOperator = Jumpbackward +Jumpbackward =: @ Merge =: m | m Expression -Filter =: f Validator -Parenthese =: (expression) -Count =: c Validator +Command =: help | la +uniqueValue = u +Comment =: StartComment String +StartComment =: # ``` -- cgit v1.2.3-70-g09d2