# Copyright (C) 2020-2023 Jonathan Müller and lexy contributors
# SPDX-License-Identifier: BSL-1.0
get_filename_component(include_dir ${CMAKE_CURRENT_SOURCE_DIR}/../include/lexy ABSOLUTE)
get_filename_component(ext_include_dir ${CMAKE_CURRENT_SOURCE_DIR}/../include/lexy_ext ABSOLUTE)
set(header_files
${include_dir}/_detail/any_ref.hpp
${include_dir}/_detail/assert.hpp
${include_dir}/_detail/buffer_builder.hpp
${include_dir}/_detail/code_point.hpp
${include_dir}/_detail/config.hpp
${include_dir}/_detail/detect.hpp
${include_dir}/_detail/integer_sequence.hpp
${include_dir}/_detail/invoke.hpp
${include_dir}/_detail/iterator.hpp
${include_dir}/_detail/lazy_init.hpp
${include_dir}/_detail/memory_resource.hpp
${include_dir}/_detail/nttp_string.hpp
${include_dir}/_detail/stateless_lambda.hpp
${include_dir}/_detail/std.hpp
${include_dir}/_detail/string_view.hpp
${include_dir}/_detail/swar.hpp
${include_dir}/_detail/tuple.hpp
${include_dir}/_detail/type_name.hpp
${include_dir}/action/base.hpp
${include_dir}/action/match.hpp
${include_dir}/action/parse.hpp
${include_dir}/action/parse_as_tree.hpp
${include_dir}/action/scan.hpp
${include_dir}/action/validate.hpp
${include_dir}/callback/adapter.hpp
${include_dir}/callback/aggregate.hpp
${include_dir}/callback/base.hpp
${include_dir}/callback/bind.hpp
${include_dir}/callback/bit_cast.hpp
${include_dir}/callback/composition.hpp
${include_dir}/callback/constant.hpp
${include_dir}/callback/container.hpp
${include_dir}/callback/fold.hpp
${include_dir}/callback/forward.hpp
${include_dir}/callback/integer.hpp
${include_dir}/callback/noop.hpp
${include_dir}/callback/object.hpp
${include_dir}/callback/string.hpp
${include_dir}/dsl/any.hpp
${include_dir}/dsl/ascii.hpp
${include_dir}/dsl/base.hpp
${include_dir}/dsl/bits.hpp
${include_dir}/dsl/bom.hpp
${include_dir}/dsl/brackets.hpp
${include_dir}/dsl/branch.hpp
${include_dir}/dsl/byte.hpp
${include_dir}/dsl/capture.hpp
${include_dir}/dsl/case_folding.hpp
${include_dir}/dsl/char_class.hpp
${include_dir}/dsl/choice.hpp
${include_dir}/dsl/code_point.hpp
${include_dir}/dsl/combination.hpp
${include_dir}/dsl/context_counter.hpp
${include_dir}/dsl/context_flag.hpp
${include_dir}/dsl/context_identifier.hpp
${include_dir}/dsl/delimited.hpp
${include_dir}/dsl/digit.hpp
${include_dir}/dsl/effect.hpp
${include_dir}/dsl/eof.hpp
${include_dir}/dsl/error.hpp
${include_dir}/dsl/expression.hpp
${include_dir}/dsl/follow.hpp
${include_dir}/dsl/flags.hpp
${include_dir}/dsl/identifier.hpp
${include_dir}/dsl/if.hpp
${include_dir}/dsl/integer.hpp
${include_dir}/dsl/lookahead.hpp
${include_dir}/dsl/loop.hpp
${include_dir}/dsl/member.hpp
${include_dir}/dsl/newline.hpp
${include_dir}/dsl/option.hpp
${include_dir}/dsl/operator.hpp
${include_dir}/dsl/parse_as.hpp
${include_dir}/dsl/parse_tree_node.hpp
${include_dir}/dsl/peek.hpp
${include_dir}/dsl/position.hpp
${include_dir}/dsl/production.hpp
${include_dir}/dsl/punctuator.hpp
${include_dir}/dsl/recover.hpp
${include_dir}/dsl/repeat.hpp
${include_dir}/dsl/return.hpp
${include_dir}/dsl/scan.hpp
${include_dir}/dsl/separator.hpp
${include_dir}/dsl/sequence.hpp
${include_dir}/dsl/sign.hpp
${include_dir}/dsl/subgrammar.hpp
${include_dir}/dsl/symbol.hpp
${include_dir}/dsl/terminator.hpp
${include_dir}/dsl/times.hpp
${include_dir}/dsl/token.hpp
${include_dir}/dsl/unicode.hpp
${include_dir}/dsl/until.hpp
${include_dir}/dsl/whitespace.hpp
${include_dir}/input/argv_input.hpp
${include_dir}/input/base.hpp
${include_dir}/input/buffer.hpp
${include_dir}/input/file.hpp
${include_dir}/input/lexeme_input.hpp
${include_dir}/input/parse_tree_input.hpp
${include_dir}/input/range_input.hpp
${include_dir}/input/string_input.hpp
${include_dir}/callback.hpp
${include_dir}/code_point.hpp
${include_dir}/dsl.hpp
${include_dir}/encoding.hpp
${include_dir}/error.hpp
${include_dir}/grammar.hpp
${include_dir}/input_location.hpp
${include_dir}/lexeme.hpp
${include_dir}/parse_tree.hpp
${include_dir}/token.hpp
${include_dir}/visualize.hpp
PARENT_SCOPE)
set(ext_header_files
${ext_include_dir}/compiler_explorer.hpp
${ext_include_dir}/parse_tree_algorithm.hpp
${ext_include_dir}/parse_tree_doctest.hpp
${ext_include_dir}/report_error.hpp
${ext_include_dir}/shell.hpp
PARENT_SCOPE)
# Base target for common options.
add_library(_lexy_base INTERFACE)
target_sources(_lexy_base INTERFACE ${header_files})
if(LEXY_FORCE_CPP17)
target_compile_features(_lexy_base INTERFACE cxx_std_17)
else()
if("cxx_std_20" IN_LIST CMAKE_CXX_COMPILE_FEATURES)
target_compile_features(_lexy_base INTERFACE cxx_std_20)
else()
target_compile_features(_lexy_base INTERFACE cxx_std_17)
endif()
endif()
if (LEXY_USER_CONFIG_HEADER)
if(EXISTS ${LEXY_USER_CONFIG_HEADER})
target_compile_definitions(_lexy_base INTERFACE LEXY_USER_CONFIG_HEADER="${LEXY_USER_CONFIG_HEADER}")
else()
message(WARNING "User config header for lexy specified as '${LEXY_USER_CONFIG_HEADER}', but not found.")
endif()
endif()
function(add_alias name target)
add_library(foonathan::${name} ALIAS ${target})
set_target_properties(${target} PROPERTIES EXPORT_NAME ${name})
endfunction()
include(GNUInstallDirs)
# Core library.
add_library(lexy_core INTERFACE)
add_alias(lexy::core lexy_core)
target_link_libraries(lexy_core INTERFACE _lexy_base)
target_include_directories(lexy_core SYSTEM INTERFACE
$<BUILD_INTERFACE:${CMAKE_CURRENT_SOURCE_DIR}/../include>
$<INSTALL_INTERFACE:${CMAKE_INSTALL_INCLUDEDIR}>
)
# Core library with warnings; for development only.
add_library(lexy_dev INTERFACE)
add_alias(lexy::dev lexy_dev)
target_link_libraries(lexy_dev INTERFACE _lexy_base)
target_include_directories(lexy_dev INTERFACE
$<BUILD_INTERFACE:${CMAKE_CURRENT_SOURCE_DIR}/../include>
$<INSTALL_INTERFACE:${CMAKE_INSTALL_INCLUDEDIR}>
)
if(${CMAKE_CXX_COMPILER_ID} STREQUAL "Clang")
if("${CMAKE_CXX_SIMULATE_ID}" STREQUAL "MSVC")
target_compile_options(lexy_dev INTERFACE /WX /W3 /D _CRT_SECURE_NO_WARNINGS)
else()
target_compile_options(lexy_dev INTERFACE -pedantic-errors -Werror -Wall -Wextra -Wconversion -Wsign-conversion)
endif()
# clang doesn't like operator precedence rules we're using for the DSL.
target_compile_options(lexy_dev INTERFACE -Wno-shift-op-parentheses -Wno-parentheses-equality)
elseif(${CMAKE_CXX_COMPILER_ID} STREQUAL "GNU")
target_compile_options(lexy_dev INTERFACE -pedantic-errors -Werror -Wall -Wextra -Wconversion -Wsign-conversion)
# GCC doesn't like the operator precedence rules we're using for the DSL.
target_compile_options(lexy_dev INTERFACE -Wno-parentheses)
# GCC doesn't properly detect when local typedefs escape via the return type.
target_compile_options(lexy_dev INTERFACE -Wno-unused-local-typedefs)
# GCC's arry bounds, maybe uninitialized, and restrict warning seems to have false positives.
target_compile_options(lexy_dev INTERFACE -Wno-array-bounds -Wno-maybe-uninitialized -Wno-restrict)
elseif(MSVC)
target_compile_options(lexy_dev INTERFACE /W
没有合适的资源?快使用搜索试试~ 我知道了~
C++ parsing DSL.zip
共643个文件
cpp:302个
hpp:125个
adoc:119个
需积分: 5 0 下载量 58 浏览量
2023-12-31
11:12:11
上传
评论
收藏 692KB ZIP 举报
温馨提示
C++ parsing DSL
资源推荐
资源详情
资源评论
收起资源包目录
C++ parsing DSL.zip (643个子文件)
walkthrough.adoc 26KB
CHANGELOG.adoc 25KB
parse_tree.adoc 17KB
scan.adoc 14KB
expression.adoc 12KB
_index.adoc 12KB
token.adoc 11KB
delimited.adoc 10KB
benchmark_json.adoc 10KB
terminator.adoc 9KB
README.adoc 9KB
branching.adoc 9KB
buffer.adoc 8KB
symbol.adoc 8KB
grammar.adoc 8KB
identifier.adoc 8KB
warmup.adoc 7KB
literal.adoc 7KB
integer.adoc 7KB
error.adoc 7KB
input_location.adoc 7KB
visualize.adoc 7KB
char_class.adoc 7KB
code_point.adoc 7KB
encoding.adoc 6KB
container.adoc 6KB
build.adoc 6KB
whitespace.adoc 6KB
recover.adoc 6KB
parse.adoc 6KB
bind.adoc 6KB
digit.adoc 6KB
unicode.adoc 6KB
validate.adoc 5KB
production.adoc 5KB
byte.adoc 5KB
brackets.adoc 5KB
context_counter.adoc 5KB
ascii.adoc 5KB
_index.adoc 5KB
_index.adoc 5KB
parse_tree_node.adoc 5KB
combination.adoc 4KB
file.adoc 4KB
string_input.adoc 4KB
error.adoc 4KB
argv_input.adoc 4KB
scan.adoc 4KB
loop.adoc 4KB
trace.adoc 4KB
string.adoc 4KB
subgrammar.adoc 3KB
context_flag.adoc 3KB
list.adoc 3KB
context_identifier.adoc 3KB
token.adoc 3KB
operator.adoc 3KB
repeat.adoc 3KB
code_point.adoc 3KB
lexeme.adoc 3KB
option.adoc 3KB
parse_tree_input.adoc 3KB
parse_as_tree.adoc 3KB
separator.adoc 3KB
branch.adoc 3KB
peek.adoc 3KB
bits.adoc 2KB
adapter.adoc 2KB
versioning.adoc 2KB
flags.adoc 2KB
sign.adoc 2KB
punctuator.adoc 2KB
fold.adoc 2KB
choice.adoc 2KB
follow.adoc 2KB
case_folding.adoc 2KB
until.adoc 2KB
newline.adoc 2KB
member.adoc 2KB
aggregate.adoc 2KB
times.adoc 2KB
lexeme_input.adoc 2KB
composition.adoc 2KB
range_input.adoc 2KB
lookahead.adoc 1KB
godbolt-example.adoc 1KB
dsl.adoc 1KB
position.adoc 1KB
object.adoc 1KB
bom.adoc 1KB
eof.adoc 1KB
match.adoc 1KB
parse_as.adoc 1KB
capture.adoc 1KB
return.adoc 888B
effect.adoc 886B
docref.adoc 852B
forward.adoc 837B
any.adoc 833B
_index.adoc 830B
共 643 条
- 1
- 2
- 3
- 4
- 5
- 6
- 7
资源评论
暮苍梧~
- 粉丝: 41
- 资源: 258
上传资源 快速赚钱
- 我的内容管理 展开
- 我的资源 快来上传第一个资源
- 我的收益 登录查看自己的收益
- 我的积分 登录查看自己的积分
- 我的C币 登录后查看C币余额
- 我的收藏
- 我的下载
- 下载帮助
安全验证
文档复制为VIP权益,开通VIP直接复制
信息提交成功