Modify the parser to handle the files from the BOSL2 library. #109
Add this suggestion to a batch that can be applied as a single commit.
This suggestion is invalid because no changes were made to the code.
Suggestions cannot be applied while the pull request is closed.
Suggestions cannot be applied while viewing a subset of changes.
Only one suggestion per line can be applied in a batch.
Add this suggestion to a batch that can be applied as a single commit.
Applying suggestions on deleted lines is not supported.
You must change the existing code in this line in order to create a valid suggestion.
Outdated suggestions cannot be applied.
This suggestion has been applied or marked resolved.
Suggestions cannot be applied from pending reviews.
Suggestions cannot be applied on multi-line comments.
Suggestions cannot be applied while the pull request is queued to merge.
Suggestion cannot be applied right now. Please check back later.
The problem
The BOSL2 library has many useful features, and some of them require that the usual modules be overridden by functions supplied by the library, something that is supported by the OpenSCAD language. This leads to the plug-in not being able to parse the files, which leads to problems when editing code that uses the library (for example, code that is copied and pasted doesn't format properly).
The solution
To add the support for the library, I changed the recognition of some of the keywords in the lexer (
circle
,cube
,cylinder
,sphere
,square
,translate
,scale
,offset
,mirror
,hull
,union
,intersection
, anddifference
), and allow the parser to determine them as overridable functions or modules. I have also extended the BNF grammar to account for other valid OpenSCAD statements that the library uses. I have extended the test suite to highlight most of these cases, by extracting the essence of them from BOSL2.