Issue with recursive javascript grammar
See original GitHub issueHi @h1994st
I’m trying to use nautilus grammars. With ruby grammar just fine, but javascript grammar I have error with it.
cityoflight@v8:~/Grammar-Mutator$ make -j8 GRAMMAR_FILE=grammars/javascript.json
Found antlr-4.8-complete: /usr/local/lib/antlr-4.8-complete.jar
Selected grammar name: javascript (from /home/cityoflight/Grammar-Mutator/grammars/javascript.json)
python3 grammars/f1_c_gen.py /home/cityoflight/Grammar-Mutator/grammars/javascript.json /home/cityoflight/Grammar-Mutator
python3 grammars/f1_c_gen.py /home/cityoflight/Grammar-Mutator/grammars/javascript.json /home/cityoflight/Grammar-Mutator
make[1]: Entering directory '/home/cityoflight/Grammar-Mutator/third_party'
make[2]: Entering directory '/home/cityoflight/Grammar-Mutator/third_party/Cyan4973_xxHash'
make[2]: Nothing to be done for 'all'.
make[2]: Leaving directory '/home/cityoflight/Grammar-Mutator/third_party/Cyan4973_xxHash'
make[2]: Entering directory '/home/cityoflight/Grammar-Mutator/third_party/rxi_map'
make[2]: Nothing to be done for 'all'.
make[2]: Leaving directory '/home/cityoflight/Grammar-Mutator/third_party/rxi_map'
make[2]: Entering directory '/home/cityoflight/Grammar-Mutator/third_party/antlr4-cpp-runtime'
make[2]: Nothing to be done for 'all'.
make[2]: Leaving directory '/home/cityoflight/Grammar-Mutator/third_party/antlr4-cpp-runtime'
make[1]: Leaving directory '/home/cityoflight/Grammar-Mutator/third_party'
^CTraceback (most recent call last):
File "grammars/f1_c_gen.py", line 646, in <module>
Traceback (most recent call last):
File "grammars/f1_c_gen.py", line 646, in <module>
main(json.load(fp), sys.argv[2])
File "grammars/f1_c_gen.py", line 632, in main
fuzz_hdr, fuzz_src = CFuzzer(c_grammar).fuzz_src()
File "grammars/f1_c_gen.py", line 317, in __init__
main(json.load(fp), sys.argv[2])
File "grammars/f1_c_gen.py", line 632, in main
super().__init__(grammar)
File "grammars/f1_c_gen.py", line 262, in __init__
self.compute_rule_recursion()
File "grammars/f1_c_gen.py", line 310, in compute_rule_recursion
fuzz_hdr, fuzz_src = CFuzzer(c_grammar).fuzz_src()
File "grammars/f1_c_gen.py", line 317, in __init__
self.rule_recursion[n] = self.is_rule_recursive(n, rule, set())
File "grammars/f1_c_gen.py", line 285, in is_rule_recursive
v = self.is_rule_recursive(rname, trule, seen | {rn})
File "grammars/f1_c_gen.py", line 285, in is_rule_recursive
super().__init__(grammar)
File "grammars/f1_c_gen.py", line 262, in __init__
v = self.is_rule_recursive(rname, trule, seen | {rn})
File "grammars/f1_c_gen.py", line 285, in is_rule_recursive
self.compute_rule_recursion()
File "grammars/f1_c_gen.py", line 310, in compute_rule_recursion
v = self.is_rule_recursive(rname, trule, seen | {rn})
[Previous line repeated 16 more times]
KeyboardInterrupt
self.rule_recursion[n] = self.is_rule_recursive(n, rule, set())
File "grammars/f1_c_gen.py", line 285, in is_rule_recursive
v = self.is_rule_recursive(rname, trule, seen | {rn})
File "grammars/f1_c_gen.py", line 285, in is_rule_recursive
v = self.is_rule_recursive(rname, trule, seen | {rn})
File "grammars/f1_c_gen.py", line 285, in is_rule_recursive
v = self.is_rule_recursive(rname, trule, seen | {rn})
[Previous line repeated 15 more times]
File "grammars/f1_c_gen.py", line 276, in is_rule_recursive
for token in rule:
KeyboardInterrupt
make: *** [GNUmakefile:102: include/f1_c_fuzz.h] Interrupt
make: *** [GNUmakefile:102: src/f1_c_fuzz.c] Interrupt
I have to stop it with control C. And changing ctx.rule(u'PROGRAM',u'{STATEMENT}\n{PROGRAM}')
to ctx.rule(u'PROGRAM',u'{STATEMENT}\n')
still get same error.
I don’t know the issue is in the javascript nautilus grammar file, or the generator grammars/f1_c_gen.py
. If the recursive issue is in the grammar, what kind of pattern should I avoid?
Issue Analytics
- State:
- Created 2 years ago
- Comments:6
Top Results From Across the Web
JavaScript Recursive Function By Examples
A recursive function is a function that calls itself until it doesn't. And this technique is called recursion. Suppose that you have a...
Read more >What is Recursion? A Recursive Function Explained with ...
Recursion is a technique used to solve computer problems by creating a function that calls itself until your program achieves the desired ...
Read more >InternalError: too much recursion - JavaScript - MDN Web Docs
The JavaScript exception "too much recursion" or "Maximum call stack size exceeded" occurs when there are too many function calls, or a function...
Read more >JavaScript (ECMA) Grammar - Left Recursion Problems
I am currently trying to write a valid LL(k) grammar for Javascript (using the ECMA-262 reference), figuring out left recursion is okay sometimes, ......
Read more >JavaScript Recursion (with Examples) - Programiz
Recursion is a process of calling itself. A function that calls itself is called a recursive function. The syntax for recursive function is:...
Read more >Top Related Medium Post
No results found
Top Related StackOverflow Question
No results found
Troubleshoot Live Code
Lightrun enables developers to add logs, metrics and snapshots to live code - no restarts or redeploys required.
Start FreeTop Related Reddit Thread
No results found
Top Related Hackernoon Post
No results found
Top Related Tweet
No results found
Top Related Dev.to Post
No results found
Top Related Hashnode Post
No results found
Top GitHub Comments
Thanks for the help. Now my issues are resolved
Hi @CityOfLight77
The added grammar is problematic, because the
KEYVALUEOBJECTCONTENT
rule is non-terminal. Please see the newly appended line as below: