@nomicfoundation/slang
Advanced tools
Changelog
0.14.0
#753 b35c763
Thanks @AntonyBlakey! - Add tree query implementation as Query::parse
and Cursor::query
#755 8c260fc
Thanks @OmarTawfik! - support parsing NatSpec comments
#908 ab3688b
Thanks @Xanewok! - Changed the cst.NodeType in TS to use more descriptive string values rather than 0/1 integers
#887 dff1201
Thanks @Xanewok! - Add support for constant function modifier removed in 0.5.0
#885 a9bd8da
Thanks @Xanewok! - Flatten the trivia syntax nodes into sibling tokens
#908 ab3688b
Thanks @Xanewok! - Add RuleNode/TokenNode::toJSON() in the TypeScript API
#801 ecbba49
Thanks @OmarTawfik! - unreserve pragma keywords in all versions
#869 951b58d
Thanks @OmarTawfik! - support dots in yul identifiers from 0.5.8
till 0.7.0
#890 1ff8599
Thanks @Xanewok! - Mark override
as being a valid attribute only after 0.6.0
#800 d1827ff
Thanks @OmarTawfik! - support unicode characters in string literals up to 0.7.0
#797 86f36d7
Thanks @OmarTawfik! - fix source locations for unicode characters in error reports
#854 4b8970b
Thanks @OmarTawfik! - parse line breaks without newlines
#844 f62de9e
Thanks @OmarTawfik! - fix parsing empty /**/
comments
#799 303dda9
Thanks @OmarTawfik! - prevent parsing multiple literals under StringExpression
before 0.5.14
#847 6b6f260
Thanks @OmarTawfik! - prioritize parsing MultiLineComment
over MultiLineNatSpecComment
#796 59e1e53
Thanks @OmarTawfik! - add public
and internal
to UnnamedFunctionAttribute
till 0.5.0
#756 e839817
Thanks @OmarTawfik! - fix parsing payable
primary expressions
#851 67dfde8
Thanks @OmarTawfik! - fix selection order of prefix/postfix AST fields
#857 f677d5e
Thanks @OmarTawfik! - rename FieldName
to NodeLabel
#852 ca79eca
Thanks @OmarTawfik! - allow parsing ColonEqual
as two separate tokens before 0.5.5
#889 ce5050f
Thanks @Xanewok! - Support delete
as an expression rather than a statement
#923 bb30fc1
Thanks @Xanewok! - Support arbitrary ASCII escape sequences in string literals until 0.4.25
#887 dff1201
Thanks @Xanewok! - Support view and pure function modifiers only from 0.4.16
#800 d1827ff
Thanks @OmarTawfik! - rename AsciiStringLiteral
to StringLiteral
#838 ad98d1c
Thanks @OmarTawfik! - upgrade to rust 1.76.0
#849 5c42e0e
Thanks @OmarTawfik! - add override
and virtual
to ConstructorAttribute
#862 5e37ea0
Thanks @Xanewok! - allow call options as a post-fix expression
#786 0bfa6b7
Thanks @OmarTawfik! - support Yul label statements before 0.5.0
#839 2d698eb
Thanks @OmarTawfik! - support string literals in version pragmas
#891 70c9d7d
Thanks @Xanewok! - Fix parsing <NUMBER>.member
member access expression
#842 2069126
Thanks @OmarTawfik! - add private
to UnnamedFunctionAttribute
till 0.5.0
#840 7fb0d20
Thanks @OmarTawfik! - allow var
in TupleDeconstructionStatement
before 0.5.0
Changelog
0.13.1
c289cbf7
Thanks @OmarTawfik! - Properly parse EVM built-ins up till Paris/Solidity 0.8.18Changelog
0.13.0
#710 2025b6cb
Thanks @Xanewok! - CST children nodes are now named
#723 b3dc6bcd
Thanks @Xanewok! - Properly parse unreserved keywords in an identifier position, i.e. from
, emit
, global
etc.
#728 662a672c
Thanks @Xanewok! - Remove Language#scan API; use the parser API instead
#719 1ad6bb37
Thanks @OmarTawfik! - introduce strong types for all Solidity non terminals in the TypeScript API.
#719 1ad6bb37
Thanks @OmarTawfik! - unify Rust/TypeScript node helpers: *_with_kind()
, *_with_kinds()
, *_is_kind()
), ...
#731 3deaea2e
Thanks @OmarTawfik! - add RuleNode.unparse()
to the TypeScript API
Changelog
0.12.0
#699 ddfebfe9
Thanks @Xanewok! - Remove ProductionKind
in favor of RuleKind
#699 ddfebfe9
Thanks @Xanewok! - Allow parsing individual precedence expressions, like ShiftExpression
#665 4b5f8b46
Thanks @Xanewok! - Remove the CST Visitor API in favor of the Cursor API
#666 0434b68c
Thanks @Xanewok! - Add Node::unparse()
that allows to reconstruct the source code from the CST node
#675 daea4b7f
Thanks @OmarTawfik! - rename Cursor
's pathRuleNodes()
to ancestors()
in the NodeJS API.
#676 b496d361
Thanks @OmarTawfik! - Fix NAPI cursor
types and expose cursor.depth
.
Changelog
0.11.0
#625 7bb650b
Thanks @Xanewok! - The CST Cursor now implements the Iterator trait as part of the Rust API
#647 b1dced3
Thanks @OmarTawfik! - Require specifying an initial offset when creating a CST cursor.
#648 2327bf5
Thanks @OmarTawfik! - Support Solidity v0.8.22.
#623 80114a8
Thanks @AntonyBlakey! - Correct the types in the TS api by adding the correct namespaces to type references
Changelog
0.10.1
06cbbe8
Thanks @AntonyBlakey! - cursor
method is now exposed in Typescript APIChangelog
0.10.0
#595 1a258c4
Thanks @Xanewok! - Attempt error recovery when parsing incomplete lists
#564 e326a06
Thanks @AntonyBlakey! - Parsing operators with missing operands should no longer panic
#564 e326a06
Thanks @AntonyBlakey! - Inline parse rules are no longer exposed to the API.
#564 e326a06
Thanks @AntonyBlakey! - Scanners are no longer available as methods - use next_token instead
#564 e326a06
Thanks @AntonyBlakey! - Scanners are now grouped into contexts to deal with contextual scanning
#601 cbd2a79
Thanks @Xanewok! - Attempt parser error recovery between bracket delimiters
#599 4bbad48
Thanks @Xanewok! - Use correct versions for the revert
and global
keywords
#561 cb6a138
Thanks @Xanewok! - Add preliminary documentation for the solidity_language
Rust package
#603 be59a10
Thanks @OmarTawfik! - upgrade to rust 1.72.0
Changelog
0.9.0
#540 0d04f95
Thanks @AntonyBlakey! - Add a Rust Cursor API and refactor the Rust Visitor API to run on top of it.
#540 0d04f95
Thanks @AntonyBlakey! - Move Visitor et al to node:: namespace, which is where Cursor is.
#540 0d04f95
Thanks @AntonyBlakey! - Rename range
functions that return a TextRange to text_range
#543 7a34599
Thanks @OmarTawfik! - Move syntax::parser::ProductionKind
to syntax::nodes
namespace.
#540 0d04f95
Thanks @AntonyBlakey! - Add TokenNode.text to the TS API.
#540 0d04f95
Thanks @AntonyBlakey! - Add first pass of Typescript binding to the Cursor API, but no TS Visitor yet.
#545 e73658a
Thanks @OmarTawfik! - render EBNF grammar on top of each ProductionKind
, RuleKind
, and TokenKind
.
#558 95bbc50
Thanks @OmarTawfik! - Correct versioning for SourceUnitMember
and ContractMember
children.
Changelog
0.8.0
7e01250
Thanks @AntonyBlakey! - Typescript API now has TextIndex and TextRange types that are returned from the appropriate methods rather than tuples.7ccca87
Thanks @AntonyBlakey! - Fix pratt parser behavior in the face of error correctione3450be4
Thanks @alcuadrado! - Make ESM named imports work in Node.js.Changelog
0.7.0
#502 c383238
Thanks @AntonyBlakey! - Added error recovery i.e. a CST is always produced, even if there are errors. The erroneous/skipped text is in the CST as a TokenKind::SKIPPED
token.
#501 cb221fe
Thanks @OmarTawfik! - generate typescript string enums for CST kinds
#517 8bd5446
Thanks @OmarTawfik! - extract inlined and sub-expressions in language grammar
#518 b3b562b
Thanks @OmarTawfik! - fill in missing CST node names
#515 f24e873
Thanks @OmarTawfik! - switch over the NPM package to use CommonJS modules instead of ES modules.
#498 44f1ff7
Thanks @OmarTawfik! - flatten unnamed CST nodes into parent nodes
#502 c383238
Thanks @AntonyBlakey! - Use the Rowan model for the CST i.e. TokenNodes contain the string content, and RuleNodes contain only the combined length of their children's text.
#499 1582d60
Thanks @OmarTawfik! - preserve correct ranges on empty rule nodes
#500 73ddac9
Thanks @OmarTawfik! - inlining CST nodes that offer no additional syntactic information
#512 72dc3d3
Thanks @AntonyBlakey! - Expression productions now correctly wrap the recursive 'calls' in a rule node