• Home
  • Features
  • Pricing
  • Docs
  • Announcements
  • Sign In

BehaviorTree / BehaviorTree.CPP / 21667859434
80%

Build:
DEFAULT BRANCH: master
Ran 04 Feb 2026 10:34AM UTC
Jobs 1
Files 101
Run time 1min
Badge
Embed ▾
README BADGES
x

If you need to use a raster PNG badge, change the '.svg' to '.png' in the link

Markdown

Textile

RDoc

HTML

Rst

04 Feb 2026 10:27AM UTC coverage: 79.593% (+1.6%) from 77.963%
21667859434

push

github

web-flow
Remove lexy dependency, replace with hand-written tokenizer and Pratt parser (#1099)

* conditionally use from_char when available

* lexy removed

* Add hand-written tokenizer for scripting language

Implement BT::Scripting::tokenize() to replace the lexy-based tokenizer
that was removed. Handles all token types: identifiers (with @ prefix for
root blackboard vars), numbers (int/hex/real/exponent), single-quoted
strings, two-char operators, and single-char operators/delimiters.

Co-Authored-By: Claude Opus 4.5 <noreply@anthropic.com>

* Fix clang-tidy warnings in script parser and tokenizer

- Add explicit != 0 for implicit int->bool conversions from ctype
  functions (readability-implicit-bool-conversion)
- Value-initialize op variables in switch statements
  (cppcoreguidelines-init-variables)

Co-Authored-By: Claude Opus 4.5 <noreply@anthropic.com>

* Address SonarCloud warnings in script parser and tokenizer

Tokenizer:
- Extract scanHexNumber(), scanDecimalNumber(), matchTwoCharOp(),
  matchSingleCharOp() to reduce cognitive complexity of tokenize()
- Use init-statement in if for identifier text variable (S6004)

Parser:
- Replace std::runtime_error with RuntimeError (S112)
- Remove redundant lambda return type (S3574)
- Catch RuntimeError instead of std::exception (S1181)

Co-Authored-By: Claude Opus 4.5 <noreply@anthropic.com>

* Add unit tests for tokenizer and parser edge cases

New test cases:
- TokenizerEdgeCases: unterminated strings, hex errors (0x, 0xG),
  exponent errors (3e, 3e+), DotDot with numbers, empty/whitespace scripts
- ChainedComparisons: 1<2<3, 3>2>1, mixed chains, chained equality
- OperatorPrecedence: bitwise vs logical, parenthesized subexpressions
- UnaryOperators: !, !!, ~, unary minus in expressions
- TernaryExpressions: basic, with subexpressions, comparison conditions
- MultipleStatements: extra semicolons, return value of last expression

Co-Authored-By: Claude Opus 4.5 <noreply@anthropic.com>

* fix test and coverag... (continued)

431 of 451 new or added lines in 4 files covered. (95.57%)

4653 of 5846 relevant lines covered (79.59%)

22300.96 hits per line

New Missed Lines in Diff

Lines Coverage ∆ File
1
99.43
src/script_tokenizer.cpp
5
78.4
0.39% src/basic_types.cpp
14
94.78
28.11% src/script_parser.cpp
Jobs
ID Job ID Ran Files Coverage
1 21667859434.1 04 Feb 2026 10:34AM UTC 101
79.59
GitHub Action Run
Source Files on build 21667859434
  • Tree
  • List 101
  • Changed 3
  • Source Changed 3
  • Coverage Changed 3
Coverage ∆ File Lines Relevant Covered Missed Hits/Line
  • Back to Repo
  • Github Actions Build #21667859434
  • d1983321 on github
  • Prev Build on master (#21667603626)
  • Next Build on master (#21668064160)
STATUS · Troubleshooting · Open an Issue · Sales · Support · CAREERS · ENTERPRISE · START FREE · SCHEDULE DEMO
ANNOUNCEMENTS · TWITTER · TOS & SLA · Supported CI Services · What's a CI service? · Automated Testing

© 2026 Coveralls, Inc