[Mono-bugs] [Bug 52285][Blo] New - Parser can't handle blocks properly.

bugzilla-daemon@bugzilla.ximian.com bugzilla-daemon@bugzilla.ximian.com
Wed, 17 Dec 2003 02:59:46 -0500 (EST)

Please do not reply to this email- if you want to comment on the bug, go to the
URL shown below and enter your comments there.

Changed by cesar@ciencias.unam.mx.


--- shadow/52285	2003-12-17 02:59:46.000000000 -0500
+++ shadow/52285.tmp.10657	2003-12-17 02:59:46.000000000 -0500
@@ -0,0 +1,72 @@
+Bug#: 52285
+Product: Mono/Compilers
+Version: unspecified
+OS Details: 
+Status: NEW   
+Priority: Blocker
+Component: JScript
+AssignedTo: mono-bugs@ximian.com                            
+ReportedBy: cesar@ciencias.unam.mx               
+QAContact: mono-bugs@ximian.com
+TargetMilestone: ---
+Summary: Parser can't handle blocks properly.
+Description of Problem:
+MJS's parser can't handle blocks (see section 12.1 from Ecma-262 spec)
+properly. The problem is that there exist a construction called object
+literal (see section 11.1.5 from Ecma-262 spec), which can appear as an
+expression in global code but followed by a semi colon. The two rules have
+as prefix '{' and some other tokens, my approach was to left factor both
+rules and lookahead until finding ':' to deambiguate the rules, what I did
+not took into account was the semi colon that must follow the object literal.
+Steps to reproduce the problem:
+1. cd mcs/class/Microsoft.JScript
+2. make
+3. cp mcs/class/lib/Microsoft.JScript.dll /usr/local/lib
+4. cd mcs/class/Microsoft.JScript/Microsoft.JScript
+5. mcs -r Microsoft.JScript.dll -o mjs.exe driver.cs
+6. Write into file if.js: 
+if (true) {
+        ;
+7. Execute: mono mjs.exe if.js
+NOTE: if you add a ';' after '}' you'll see that gets parsed without
+trouble. That's due to  object_literal rule.
+Actual Results
+Unhandled Exception: line 5:1: unexpected token: ["",<1>,line=5,col=1]
+Expected Results:
+Parsing phase completed succesfully. 
+If parsing phase ends succesfully  it might throw and
+NotImplementedException related for Resolve or Emit.
+How often does this happen? 
+Additional Information:
+1) Take a look to file
+2) See rules: object_literal and block.
+Using mono and mcs's cvs versions from december 17, 2003. 
+On Linux RH9.0