I am working on a language that transpiles to javascript and has a similar syntax. However I want to include some new type of block statements. For syntax purposes they are the same as an IfStatement. How can I get esprima or acorn to parse this program MyStatement {a=1;} without throwing an error? Its fine if it calls it an IfStatement. I would prefer not to fork esprima.
How to add keyword to acorn or esprima parser
684 views Asked by bruceceng At
1
There are 1 answers
Related Questions in JAVASCRIPT
- Angular Show All When No Filter Is Supplied
- Why does a function show up as not defined
- I count the time the user takes to solve my quiz using Javascript but I want the same time displayed on another page
- Set "More" "Less" font size
- Using pagination on a table in AngularJS
- How to sort these using Javascript or Jquery Most effectively
- how to fill out the table with next values in array with one button
- State with different subviews
- Ajax jQuery firing multiple time display event for the same result
- Getting and passing MVC Model data to AngularJS controller
- Disable variable in eval
- javascript nested loops waiting for user input
- .hover() seems to overwrite .click()
- How to sort a multi-dimensional array by the second array in descending order?
- How do I find the fonts that are not loading in a CORS situation ( MoovWeb )?
Related Questions in PARSING
- How to resize images with PHP PARSE SDK
- Constraint not propagated upon instantiation of list members
- How can I parse fixed-length, non-delimited integers with attoparsec?
- jSon result optional value error
- Date parse with Timezone - Android
- URL Variable is not being recognized using NSURL
- Regex to get vCard base64 string (C#)
- Retrieving string value from label and then parsing into an integer, pyqt4
- How to use Papa Parse for javascript csv parsing
- How to parse/split a string?
- String concatenation with padded integers
- Is this file an XML or HTML file? How can I parse it?
- json parser to spinner
- Use DateTime format in a class but restrict time tokens
- Saving multiple occurrences of strstr() from a line in C?
Related Questions in ESPRIMA
- How can I know when the scope changes within an abstract syntax tree?
- How to transform JavaScript AST to create infinite loop guards?
- Cannot set property 'esprima' of undefined at webpackUniversalModuleDefinition
- Esprima error 404 Not Found in npm install
- Ignore error while generating JS AST using ESPIRMA
- How to use esprima to parse a javascript file, from Java?
- How to generate all the leaf to leaf path in an AST?
- why esprima works fine in online browser demo, but failed locally
- How to use a global nodejs module?
- transpiler battle: breaking out of nested function, with vs without throw
- How to add a custom operator to Javascript or node.js with BabelJS?
- How to use npm module in DENO?
- extracting specific function calls from javascript
- How to add keyword to acorn or esprima parser
- Esprima get function and variable declarations
Popular Questions
- How do I undo the most recent local commits in Git?
- How can I remove a specific item from an array in JavaScript?
- How do I delete a Git branch locally and remotely?
- Find all files containing a specific text (string) on Linux?
- How do I revert a Git repository to a previous commit?
- How do I create an HTML button that acts like a link?
- How do I check out a remote Git branch?
- How do I force "git pull" to overwrite local files?
- How do I list all files of a directory?
- How to check whether a string contains a substring in JavaScript?
- How do I redirect to another webpage?
- How can I iterate over rows in a Pandas DataFrame?
- How do I convert a String to an int in Java?
- Does Python have a string 'contains' substring method?
- How do I check if a string contains a specific word?
Trending Questions
- UIImageView Frame Doesn't Reflect Constraints
- Is it possible to use adb commands to click on a view by finding its ID?
- How to create a new web character symbol recognizable by html/javascript?
- Why isn't my CSS3 animation smooth in Google Chrome (but very smooth on other browsers)?
- Heap Gives Page Fault
- Connect ffmpeg to Visual Studio 2008
- Both Object- and ValueAnimator jumps when Duration is set above API LvL 24
- How to avoid default initialization of objects in std::vector?
- second argument of the command line arguments in a format other than char** argv or char* argv[]
- How to improve efficiency of algorithm which generates next lexicographic permutation?
- Navigating to the another actvity app getting crash in android
- How to read the particular message format in android and store in sqlite database?
- Resetting inventory status after order is cancelled
- Efficiently compute powers of X in SSE/AVX
- Insert into an external database using ajax and php : POST 500 (Internal Server Error)
It turns out, that the plugin capabilities of acorn are not really documented. It seems like forking acorn would be the easiest route. In this case, it is as simple as searching for occurances of
_ifand following a similar pattern for_MyStatement.However it is possible to write a plugin to accomplish what I was trying to do. It seems a bit of a hack, but here is the code. The basic steps are:
To exend
Parseand add to the list of keywords that will be recognized by the first passCreate a TokenType for the new keyword and add it to the
Parser.acorn.keywordTypes, extendparseStatementso that it processes the new TokenTypeCreate a handler for the new TokenType which will add information to the Abstract Syntax Tree as required by the keyword functionality and also consume tokens using commands like
this.expect(tt.parenR)to eat a '(' orthis.parseExpression()to process an entire expression.Here is the code: